@@ -1034,9 +1034,9 @@ class DLL_EXPORT HDF5_IO
10341034 }
10351035
10361036 // -----------------------------------------------------------------------------
1037-
1038- template <typename T_real>
1039- 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, [[maybe_unused]] bool logerr = true )
1037+ // load spectra volume as float (T_real) but scan_info as double (T_real2)
1038+ template <typename T_real, typename T_real2 >
1039+ 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 )
10401040 {
10411041 std::stack<std::pair<hid_t , H5_OBJECTS> > close_map;
10421042 hid_t file_id, dset_id, space_id;
@@ -1252,13 +1252,13 @@ class DLL_EXPORT HDF5_IO
12521252 scan_info.meta_info .y_axis .resize (scan_info.meta_info .requested_rows );
12531253 spec_vol->resize_and_zero (scan_info.meta_info .requested_rows , scan_info.meta_info .requested_cols , dims3[2 ]);
12541254
1255- struct data_struct ::Scaler_Map<T_real > energy_map;
1255+ struct data_struct ::Scaler_Map<T_real2 > energy_map;
12561256 energy_map.name = " Energy" ;
12571257 energy_map.unit = " " ;
12581258 energy_map.time_normalized = false ;
12591259 energy_map.values .resize (scan_info.meta_info .requested_rows , scan_info.meta_info .requested_cols );
12601260
1261- struct data_struct ::Scaler_Map<T_real > i0_map;
1261+ struct data_struct ::Scaler_Map<T_real2 > i0_map;
12621262 i0_map.name = " I0" ;
12631263 i0_map.unit = " counts" ;
12641264 i0_map.time_normalized = false ;
@@ -1269,8 +1269,8 @@ class DLL_EXPORT HDF5_IO
12691269 data_struct::ArrayTr<T_real> icr_array (dims3[0 ]);
12701270 data_struct::ArrayTr<T_real> ocr_array (dims3[0 ]);
12711271
1272- data_struct::ArrayTr<T_real > i0_array (dims3[0 ]);
1273- data_struct::ArrayTr<T_real > energy_array (dims3[0 ]);
1272+ data_struct::ArrayTr<T_real2 > i0_array (dims3[0 ]);
1273+ data_struct::ArrayTr<T_real2 > energy_array (dims3[0 ]);
12741274
12751275 err = _read_h5d<T_real>(elt_dset_id, H5S_ALL, elt_space_id, H5P_DEFAULT, elt_array.data ());
12761276 if (err < 0 )
@@ -1297,13 +1297,13 @@ class DLL_EXPORT HDF5_IO
12971297 ocr_array.setOnes ();
12981298 }
12991299
1300- err = _read_h5d<T_real >(energy_dset_id, H5S_ALL, energy_space_id, H5P_DEFAULT, energy_array.data ());
1300+ err = _read_h5d<T_real2 >(energy_dset_id, H5S_ALL, energy_space_id, H5P_DEFAULT, energy_array.data ());
13011301 if (err < 0 )
13021302 {
13031303 logE<< " Could not read energy data, setting it all to 1's\n " ;
13041304 energy_array.setOnes ();
13051305 }
1306- err = _read_h5d<T_real >(i0_dset_id, H5S_ALL, i0_space_id, H5P_DEFAULT, i0_array.data ());
1306+ err = _read_h5d<T_real2 >(i0_dset_id, H5S_ALL, i0_space_id, H5P_DEFAULT, i0_array.data ());
13071307 if (err < 0 )
13081308 {
13091309 logE<< " Could not read i0 data, setting it all to 1's\n " ;
@@ -6956,6 +6956,10 @@ class DLL_EXPORT HDF5_IO
69566956
69576957 _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 );
69586958 }
6959+ else
6960+ {
6961+ _save_scalers (maps_grp_id, &(scan_info->scaler_maps ), (T_real)0.0 , " 0.0" , (T_real)0.0 , " 0.0" );
6962+ }
69596963 _close_h5_objects (_global_close_map);
69606964
69616965 end = std::chrono::system_clock::now ();
0 commit comments