Skip to content

Commit 04a2b14

Browse files
author
Arthur Glowacki
committed
added scalers for 2idd for scale factor
1 parent c055756 commit 04a2b14

9 files changed

Lines changed: 95 additions & 7 deletions

File tree

reference/Scaler_to_PV_map.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ BeamLines:
1212
DS_AMP_NUM: 2idd:A4sens_num.VAL
1313
DS_AMP_UNIT: 2idd:A4sens_unit.VAL
1414
US_IC: 2idd:scaler1_cts1.C
15-
DS_IC: 2idd:scaler1_cts1.B
15+
DS_IC:
16+
- 2idd:scaler1_cts1.B
17+
- 2iddtmm1:Current4:MeanValue_RBV
18+
- 2iddtmm1:Current4
19+
DS_IC_SCALE_FACTOR: 2iddtmm1:CurrentScale4
1620
ELT1: 2iddXMAP:mca1.ELTM
1721
ELT2: 2iddXMAP:mca2.ELTM
1822
ELT3: 2iddXMAP:mca3.ELTM
@@ -33,6 +37,7 @@ BeamLines:
3337
US_FM:
3438
- 2iddtmm1:Current3:MeanValue_RBV
3539
- 2iddtmm1:Current3
40+
US_FM_SCALE_FACTOR: 2iddtmm1:CurrentScale3
3641
TimeNormalizedScalers:
3742
Timing: [2idd:3820:mca1.VAL, 50000000.0]
3843
Scalers:

src/core/defines.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,11 @@ const std::string STR_CHANNEL_NAMES = "Channel_Names";
282282
const std::string STR_CHANNEL_UNITS = "Channel_Units";
283283
const std::string STR_FIT_PARAMETERS_OVERRIDE = "Fit_Parameters_Override";
284284
const std::string STR_FIT_PARAMETERS = "Fit_Parameters";
285+
const std::string STR_BRANCHING_RATIOS = "Brancing_Ratios";
286+
const std::string STR_K_SHELL = "K_Shell";
287+
const std::string STR_L_SHELL = "L_Shell";
288+
const std::string STR_M_SHELL = "M_Shell";
289+
const std::string STR_L_FAMILY = "L_Family";
285290

286291
const std::string STR_QUANTIFICATION = "Quantification";
287292
const std::string STR_CALIBRATION = "Calibration";

src/core/process_whole.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,17 @@ void find_quantifier_scalers(std::unordered_map<std::string, double>& pv_map, Qu
437437
}
438438
}
439439

440+
// itr again to look for scale_factor
441+
for (auto& itr : pv_map)
442+
{
443+
double multiplier = (T_real)1.0;
444+
if(pv_map.count(itr.first+"_SCALE_FACTOR") > 0)
445+
{
446+
multiplier = pv_map.at(itr.first+"_SCALE_FACTOR");
447+
}
448+
itr.second *= multiplier;
449+
}
450+
440451
// add any summded scalers to pv_map
441452
const std::vector<struct Summed_Scaler>* summed_scalers = data_struct::Scaler_Lookup::inst()->get_summed_scaler_list(beamline);
442453
if (summed_scalers != nullptr)

src/data_struct/params_override.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,8 @@ class DLL_EXPORT Params_Override
233233

234234
std::unordered_map< std::string, std::map<int, T_real> > branching_ratios;
235235

236+
std::unordered_map< std::string, T_real > scaling_factors;
237+
236238
T_real sr_current;
237239
T_real US_IC;
238240
T_real US_FM;

src/io/file/aps/aps_fit_params_import.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,19 @@ DLL_EXPORT bool load_parameters_override(std::string path, Params_Override<T_rea
805805
value.erase(std::remove(value.begin(), value.end(), ' '), value.end());
806806
params_override->theta_pv = value;
807807
}
808+
else if (tag == "SCALING_FACTOR")
809+
{
810+
std::string scaler_name;
811+
std::string str_value;
812+
813+
std::getline(strstream, scaler_name, ',');
814+
scaler_name.erase(std::remove_if(scaler_name.begin(), scaler_name.end(), ::isspace), scaler_name.end());
815+
T_real factor = 1.0;
816+
std::getline(strstream, str_value, ',');
817+
factor = parse_input_real<T_real>(str_value);
818+
819+
params_override->scaling_factors[scaler_name] = factor;
820+
}
808821
}
809822
catch (std::exception& e)
810823
{

src/io/file/hdf5_io.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8141,6 +8141,7 @@ class DLL_EXPORT HDF5_IO
81418141
return false;
81428142
}
81438143
hid_t memtype_label, filetype_label, memoryspace_id, maps_grp_id, po_grp_id;
8144+
hid_t br_grp_id, k_grp_id, l_grp_id, m_grp_id, l_fam_grp_id;
81448145
hid_t fitp_names_id, fitp_values_id;
81458146
hid_t fitp_names_space, fitp_values_space;
81468147

@@ -8235,6 +8236,51 @@ class DLL_EXPORT HDF5_IO
82358236

82368237
i++;
82378238
}
8239+
8240+
if(params_override->branching_ratios.size() > 0
8241+
|| params_override->branching_ratio_K.size() > 0
8242+
|| params_override->branching_ratio_L.size() > 0
8243+
|| params_override->branching_ratio_M.size() > 0
8244+
|| params_override->branching_family_L.size() > 0)
8245+
{
8246+
// save branching ratio's
8247+
if (false == _open_or_create_group(STR_BRANCHING_RATIOS, _cur_file_id, br_grp_id))
8248+
{
8249+
return false;
8250+
}
8251+
if(params_override->branching_ratio_K.size() > 0)
8252+
{
8253+
// save K ratios
8254+
if (_open_or_create_group(STR_K_SHELL, br_grp_id, k_grp_id))
8255+
{
8256+
8257+
}
8258+
}
8259+
if(params_override->branching_ratio_L.size() > 0)
8260+
{
8261+
// save l ratios
8262+
if (_open_or_create_group(STR_L_SHELL, br_grp_id, l_grp_id))
8263+
{
8264+
8265+
}
8266+
}
8267+
if(params_override->branching_ratio_M.size() > 0)
8268+
{
8269+
// save K Shells
8270+
if (_open_or_create_group(STR_M_SHELL, br_grp_id, m_grp_id))
8271+
{
8272+
8273+
}
8274+
}
8275+
if(params_override->branching_family_L.size() > 0)
8276+
{
8277+
// save K Shells
8278+
if (_open_or_create_group(STR_L_FAMILY, br_grp_id, l_fam_grp_id))
8279+
{
8280+
8281+
}
8282+
}
8283+
}
82388284

82398285
return true;
82408286
}

src/io/file/hl_file_io.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,7 +1163,7 @@ DLL_EXPORT bool load_spectra_volume(std::string dataset_directory,
11631163
//todo: add verbose option
11641164
//logI<<"Loading file "<<full_filename<<"\n";
11651165
// if tetramm tag is missing in file name, we assume it is tetra1
1166-
size_t spec_size = io::file::NetCDF_IO<T_real>::inst()->load_scalers_line(full_filename, "tetra1_", i, mda_io.get_scan_info());
1166+
size_t spec_size = io::file::NetCDF_IO<T_real>::inst()->load_scalers_line(full_filename, "tetra1_", i, mda_io.get_scan_info(), params_override);
11671167
}
11681168
}
11691169
std::ifstream file_io1(dataset_directory + "tetramm" + DIR_END_CHAR + tmp_dataset_file + "_tetra1_0.nc");
@@ -1176,7 +1176,7 @@ DLL_EXPORT bool load_spectra_volume(std::string dataset_directory,
11761176
full_filename = dataset_directory + "tetramm" + DIR_END_CHAR + tmp_dataset_file + "_tetra1_" + std::to_string(i) + ".nc";
11771177
//todo: add verbose option
11781178
//logI<<"Loading file "<<full_filename<<"\n";
1179-
size_t spec_size = io::file::NetCDF_IO<T_real>::inst()->load_scalers_line(full_filename, "tetra1_", i, mda_io.get_scan_info());
1179+
size_t spec_size = io::file::NetCDF_IO<T_real>::inst()->load_scalers_line(full_filename, "tetra1_", i, mda_io.get_scan_info(), params_override);
11801180
}
11811181
}
11821182
std::ifstream file_io2(dataset_directory + "tetramm" + DIR_END_CHAR + tmp_dataset_file + "_tetra2_0.nc");
@@ -1189,7 +1189,7 @@ DLL_EXPORT bool load_spectra_volume(std::string dataset_directory,
11891189
full_filename = dataset_directory + "tetramm" + DIR_END_CHAR + tmp_dataset_file + "_tetra2_" + std::to_string(i) + ".nc";
11901190
//todo: add verbose option
11911191
//logI<<"Loading file "<<full_filename<<"\n";
1192-
size_t spec_size = io::file::NetCDF_IO<T_real>::inst()->load_scalers_line(full_filename, "tetra2_", i, mda_io.get_scan_info());
1192+
size_t spec_size = io::file::NetCDF_IO<T_real>::inst()->load_scalers_line(full_filename, "tetra2_", i, mda_io.get_scan_info(), params_override);
11931193
}
11941194
}
11951195
}

src/io/file/netcdf_io.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ bool NetCDF_IO<T_real>::load_spectra_line_with_callback(std::string path,
493493
//-----------------------------------------------------------------------------
494494

495495
template<typename T_real>
496-
size_t NetCDF_IO<T_real>::load_scalers_line(std::string path, std::string tag, size_t row, data_struct::Scan_Info<T_real>* scan_info)
496+
size_t NetCDF_IO<T_real>::load_scalers_line(std::string path, std::string tag, size_t row, data_struct::Scan_Info<T_real>* scan_info, data_struct::Params_Override<T_real> * params_override)
497497
{
498498
std::lock_guard<std::mutex> lock(_mutex);
499499

@@ -571,9 +571,14 @@ size_t NetCDF_IO<T_real>::load_scalers_line(std::string path, std::string tag, s
571571
{
572572
if(scaler_map.unit == search_name)
573573
{
574+
T_real multiplier = (T_real)1.0;
575+
if(params_override->scaling_factors.count(scaler_map.name) > 0)
576+
{
577+
multiplier = params_override->scaling_factors.at(scaler_map.name);
578+
}
574579
for(size_t j=0; j < dim2size[0]; j++)
575580
{
576-
scaler_map.values(row,j) = data_in[j];
581+
scaler_map.values(row,j) = data_in[j] * multiplier;
577582
}
578583
break;
579584
}

src/io/file/netcdf_io.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ POSSIBILITY OF SUCH DAMAGE.
5151
#define NetCDF_IO_H
5252

5353
#include "data_struct/spectra_volume.h"
54+
#include "data_struct/params_override.h"
5455
#include <netcdf.h>
5556
#include <mutex>
5657

@@ -90,7 +91,7 @@ class DLL_EXPORT NetCDF_IO
9091
size_t load_spectra_line_integrated(std::string path, size_t detector, size_t line_size, data_struct::Spectra<T_real>* spectra);
9192

9293
// tetramm scalers netcdf file
93-
size_t load_scalers_line(std::string path, std::string tag, size_t row, data_struct::Scan_Info<T_real>* scan_info);
94+
size_t load_scalers_line(std::string path, std::string tag, size_t row, data_struct::Scan_Info<T_real>* scan_info, data_struct::Params_Override<T_real> * params_override);
9495

9596
private:
9697
NetCDF_IO();

0 commit comments

Comments
 (0)