@@ -1038,9 +1038,9 @@ class DLL_EXPORT HDF5_IO
10381038 }
10391039
10401040 // -----------------------------------------------------------------------------
1041-
1042- template <typename T_real>
1043- bool load_spectra_vol_polar_energy_scan (std::string path, std::string filename, size_t detector_num, data_struct::Spectra_Volume<T_real>* spec_vol, data_struct::Scan_Info<T_real > &scan_info, bool logerr = true )
1041+ // load spectra volume as float (T_real) but scan_info as double (T_real2)
1042+ template <typename T_real, typename T_real2 >
1043+ bool load_spectra_vol_polar_energy_scan (std::string path, std::string filename, size_t detector_num, data_struct::Spectra_Volume<T_real>* spec_vol, data_struct::Scan_Info<T_real2 > &scan_info, bool logerr = true )
10441044 {
10451045 std::stack<std::pair<hid_t , H5_OBJECTS> > close_map;
10461046 hid_t file_id, dset_id, space_id, x_dset_id, y_dset_id, x_space_id, y_space_id;
@@ -1256,13 +1256,13 @@ class DLL_EXPORT HDF5_IO
12561256 scan_info.meta_info .y_axis .resize (scan_info.meta_info .requested_rows );
12571257 spec_vol->resize_and_zero (scan_info.meta_info .requested_rows , scan_info.meta_info .requested_cols , dims3[2 ]);
12581258
1259- struct data_struct ::Scaler_Map<T_real > energy_map;
1259+ struct data_struct ::Scaler_Map<T_real2 > energy_map;
12601260 energy_map.name = " Energy" ;
12611261 energy_map.unit = " " ;
12621262 energy_map.time_normalized = false ;
12631263 energy_map.values .resize (scan_info.meta_info .requested_rows , scan_info.meta_info .requested_cols );
12641264
1265- struct data_struct ::Scaler_Map<T_real > i0_map;
1265+ struct data_struct ::Scaler_Map<T_real2 > i0_map;
12661266 i0_map.name = " I0" ;
12671267 i0_map.unit = " counts" ;
12681268 i0_map.time_normalized = false ;
@@ -1273,8 +1273,8 @@ class DLL_EXPORT HDF5_IO
12731273 data_struct::ArrayTr<T_real> icr_array (dims3[0 ]);
12741274 data_struct::ArrayTr<T_real> ocr_array (dims3[0 ]);
12751275
1276- data_struct::ArrayTr<T_real > i0_array (dims3[0 ]);
1277- data_struct::ArrayTr<T_real > energy_array (dims3[0 ]);
1276+ data_struct::ArrayTr<T_real2 > i0_array (dims3[0 ]);
1277+ data_struct::ArrayTr<T_real2 > energy_array (dims3[0 ]);
12781278
12791279 err = _read_h5d<T_real>(elt_dset_id, H5S_ALL, elt_space_id, H5P_DEFAULT, elt_array.data ());
12801280 if (err < 0 )
@@ -1301,13 +1301,13 @@ class DLL_EXPORT HDF5_IO
13011301 ocr_array.setOnes ();
13021302 }
13031303
1304- err = _read_h5d<T_real >(energy_dset_id, H5S_ALL, energy_space_id, H5P_DEFAULT, energy_array.data ());
1304+ err = _read_h5d<T_real2 >(energy_dset_id, H5S_ALL, energy_space_id, H5P_DEFAULT, energy_array.data ());
13051305 if (err < 0 )
13061306 {
13071307 logE<< " Could not read energy data, setting it all to 1's\n " ;
13081308 energy_array.setOnes ();
13091309 }
1310- err = _read_h5d<T_real >(i0_dset_id, H5S_ALL, i0_space_id, H5P_DEFAULT, i0_array.data ());
1310+ err = _read_h5d<T_real2 >(i0_dset_id, H5S_ALL, i0_space_id, H5P_DEFAULT, i0_array.data ());
13111311 if (err < 0 )
13121312 {
13131313 logE<< " Could not read i0 data, setting it all to 1's\n " ;
@@ -6980,6 +6980,10 @@ class DLL_EXPORT HDF5_IO
69806980
69816981 _save_scalers (maps_grp_id, &(scan_info->scaler_maps ), params_override->us_amp_sens_num , params_override->us_amp_sens_unit , params_override->ds_amp_sens_num , params_override->ds_amp_sens_unit );
69826982 }
6983+ else
6984+ {
6985+ _save_scalers (maps_grp_id, &(scan_info->scaler_maps ), (T_real)0.0 , " 0.0" , (T_real)0.0 , " 0.0" );
6986+ }
69836987 _close_h5_objects (_global_close_map);
69846988
69856989 end = std::chrono::system_clock::now ();
0 commit comments