49 nlohmann::json j = nlohmann::json::parse(ifs);
53 auto rangeIter = j.find(
"RunRanges");
54 if (rangeIter == j.end())
return false;
59 for (
json range : *rangeIter) {
60 unsigned int first = range.at(
"First");
61 unsigned int last = range.at(
"Last");
62 std::string name = range.at(
"StepsConfig");
63 float scale = range.at(
"ScaleFactor");
67 ATH_MSG_DEBUG(
"ZdcInjPulserAmpMap::found run range: first, last = " << first <<
", " << last
68 <<
", config name = " << name <<
", scale factor = " << scale );
71 auto stepConfigIter = j.find(
"StepConfigurations");
72 if (stepConfigIter == j.end())
return false;
76 for (json::iterator configIt = stepConfigIter->begin(); configIt != stepConfigIter->end(); ++configIt) {
77 std::string confName = configIt.key();
82 if (!insertResult)
return false;
86 json steps = configIt.value();
87 if (!steps.is_array()) {
96 ATH_MSG_DEBUG(
"ZdcInjPulserAmpMap::found steps configuration with name " << confName <<
", starting LB = "
97 << stepsDesc.first <<
", number of LBs = " << stepsDesc.second.size());
144 std::string configName = (allowDefault ?
"Default" :
"_none_");
145 float scaleFactor = 1;
148 if (runNumber >= std::get<0>(rangeDescr) && runNumber < std::get<1>(rangeDescr)) {
149 configName = std::get<2>(rangeDescr);
150 scaleFactor = std::get<3>(rangeDescr);
152 ATH_MSG_INFO(
"ZdcInjPulserAmpMap::lookupRun(): found config name " << configName <<
" for run number "
157 if (configName ==
"Default") {
158 ATH_MSG_WARNING(
"ZdcInjPulserAmpMap::lookupRun(): no valid configuration found for run number " << runNumber
159 <<
". Using Default configuration.");
162 if (configName ==
"_none_") {
163 ATH_MSG_ERROR(
"ZdcInjPulserAmpMap::lookupRun(): no valid configuration found for run number " << runNumber
164 <<
"; Default configuration is NOT allowed. Will return an invalid (empty) token.");
174 const std::lock_guard<std::mutex> lock(
m_lock);
181 ATH_MSG_DEBUG(
"ZdcInjPulserAmpMap::lookupRun(): creating token for run number " << runNumber
182 <<
" with index " << newIndex <<
", and scaleFactor " << scaleFactor);
184 return Token(newIndex, scaleFactor);