Skip to content

Commit d268d60

Browse files
author
Arthur Glowacki
committed
Added scaler override in override file laoding to replace all predefined scalers
1 parent d78ba4a commit d268d60

3 files changed

Lines changed: 55 additions & 0 deletions

File tree

src/data_struct/scaler_lookup.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,28 @@ void Scaler_Lookup::add_beamline_scaler(const std::string& beamline, const std::
113113

114114
// ----------------------------------------------------------------------------
115115

116+
void Scaler_Lookup::add_override_beamline_scaler(const std::string& beamline, const std::string& scaler_label, const std::string& scaler_pv, bool is_time_normalized)
117+
{
118+
if (is_time_normalized)
119+
{
120+
for(auto itr: _beamline_map[beamline].time_normalized_scaler_pv_label_map)
121+
{
122+
_beamline_map[beamline].time_normalized_scaler_pv_label_map.erase(scaler_label);
123+
}
124+
_beamline_map[beamline].time_normalized_scaler_pv_label_map[scaler_pv] = scaler_label;
125+
}
126+
else
127+
{
128+
for(auto itr: _beamline_map[beamline].time_normalized_scaler_pv_label_map)
129+
{
130+
_beamline_map[beamline].scaler_pv_label_map.erase(scaler_label);
131+
}
132+
_beamline_map[beamline].scaler_pv_label_map[scaler_pv] = scaler_label;
133+
}
134+
}
135+
136+
// ----------------------------------------------------------------------------
137+
116138
void Scaler_Lookup::add_timing_info(const std::string& beamline, const std::string& time_pv, double clock)
117139
{
118140
_beamline_map[beamline].timing_info[time_pv] = clock;

src/data_struct/scaler_lookup.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ class DLL_EXPORT Scaler_Lookup
8181

8282
void add_summed_scaler(const std::string& beamline, const std::string& scaler_label, const std::vector<std::string>& scaler_list);
8383

84+
void add_override_beamline_scaler(const std::string& beamline, const std::string& scaler_label, const std::string& scaler_pv, bool is_time_normalized);
85+
8486
bool search_for_timing_info(const std::vector<std::string>& pv_list, std::string& out_pv, double& out_clock, std::string& out_beamline);
8587

8688
bool search_for_timing_info(const std::unordered_map<std::string, double>& pv_map, std::string& out_pv, double& out_clock, std::string& out_beamline);

src/io/file/aps/aps_fit_params_import.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ POSSIBILITY OF SUCH DAMAGE.
5252
#include "core/defines.h"
5353
#include "data_struct/params_override.h"
5454
#include "data_struct/element_info.h"
55+
#include "data_struct/scaler_lookup.h"
5556
#include <string>
5657
#include <iostream>
5758
#include <fstream>
@@ -829,6 +830,36 @@ DLL_EXPORT bool load_parameters_override(std::string path, Params_Override<T_rea
829830
value.erase(std::remove(value.begin(), value.end(), ' '), value.end());
830831
params_override->polarity_pattern = value;
831832
}
833+
else if(tag == STR_SCALER_OVERRIDE)
834+
{
835+
std::string scaler_beamline;
836+
std::string scaler_name;
837+
std::string str_value;
838+
std::getline(strstream, scaler_beamline, ',');
839+
scaler_beamline.erase(std::remove_if(scaler_beamline.begin(), scaler_beamline.end(), ::isspace), scaler_beamline.end());
840+
std::getline(strstream, scaler_name, ',');
841+
scaler_name.erase(std::remove_if(scaler_name.begin(), scaler_name.end(), ::isspace), scaler_name.end());
842+
std::getline(strstream, str_value, ',');
843+
str_value.erase(std::remove(str_value.begin(), str_value.end(), '\n'), str_value.end());
844+
str_value.erase(std::remove(str_value.begin(), str_value.end(), '\r'), str_value.end());
845+
str_value.erase(std::remove(str_value.begin(), str_value.end(), ' '), str_value.end());
846+
data_struct::Scaler_Lookup::inst()->add_beamline_scaler(scaler_beamline, scaler_name, str_value, false);
847+
}
848+
else if(tag == STR_TIME_NORM_SCALER_OVERRIDE)
849+
{
850+
std::string scaler_beamline;
851+
std::string scaler_name;
852+
std::string str_value;
853+
std::getline(strstream, scaler_beamline, ',');
854+
scaler_beamline.erase(std::remove_if(scaler_beamline.begin(), scaler_beamline.end(), ::isspace), scaler_beamline.end());
855+
std::getline(strstream, scaler_name, ',');
856+
scaler_name.erase(std::remove_if(scaler_name.begin(), scaler_name.end(), ::isspace), scaler_name.end());
857+
std::getline(strstream, str_value, ',');
858+
str_value.erase(std::remove(str_value.begin(), str_value.end(), '\n'), str_value.end());
859+
str_value.erase(std::remove(str_value.begin(), str_value.end(), '\r'), str_value.end());
860+
str_value.erase(std::remove(str_value.begin(), str_value.end(), ' '), str_value.end());
861+
data_struct::Scaler_Lookup::inst()->add_beamline_scaler(scaler_beamline, scaler_name, str_value, true);
862+
}
832863

833864
}
834865
catch (std::exception& e)

0 commit comments

Comments
 (0)