16 #include "xercesc/util/PlatformUtils.hpp" 30 const char * expectedParams[] = {
31 "layer1ECalScaleFactors",
32 "layer1HCalScaleFactors",
33 "layer1HFScaleFactors",
34 "layer1ECalScaleETBins",
35 "layer1HCalScaleETBins",
38 for (
const auto param : expectedParams) {
39 if ( conf.find(param) == conf.end() ) {
40 std::cerr <<
"Unable to locate expected CaloLayer1 parameter: " << param <<
" in L1 settings payload!";
51 paramsHelper.
setLayer1ECalScalePhiBins(conf.find(
"layer1ECalScalePhiBins") != conf.end() ? conf[
"layer1ECalScalePhiBins"].getVector<
unsigned int>() : std::vector<unsigned>(36,0));
52 paramsHelper.
setLayer1HCalScalePhiBins(conf.find(
"layer1HCalScalePhiBins") != conf.end() ? conf[
"layer1HCalScalePhiBins"].getVector<
unsigned int>() : std::vector<unsigned>(36,0));
53 paramsHelper.
setLayer1HFScalePhiBins (conf.find(
"layer1HFScalePhiBins") != conf.end() ? conf[
"layer1HFScalePhiBins"] .getVector<
unsigned int>() : std::vector<unsigned>(36,0));
60 const char * expectedParams[] = {
61 "leptonSeedThreshold",
62 "leptonTowerThreshold",
63 "pileUpTowerThreshold",
72 "ecalET_energyCalibLUT",
73 "METX_energyCalibLUT",
74 "METY_energyCalibLUT",
75 "egammaRelaxationThreshold",
77 "egammaEnergyCalibLUT",
83 "towerCountThreshold",
89 "egammaHOverECut_iEtaLT15",
90 "egammaHOverECut_iEtaGTEq15" 92 for (
const auto param : expectedParams) {
93 if ( conf.find(param) == conf.end() ) {
94 std::cerr <<
"Unable to locate expected CaloLayer2 parameter: " << param <<
" in L1 settings payload!";
104 paramsHelper.
setJetBypassPUS(conf[
"jetBypassPileUpSub"].getValue<bool>());
114 std::vector<int> etSumEtaMax;
115 std::vector<int> etSumEtThresh;
117 etSumEtaMax.push_back(conf[
"ETMET_maxTowerEta"].getValue<int>());
118 etSumEtaMax.push_back(conf[
"HTMHT_maxJetEta"].getValue<int>());
119 etSumEtaMax.push_back(conf[
"ETMET_maxTowerEta"].getValue<int>());
120 etSumEtaMax.push_back(conf[
"HTMHT_maxJetEta"].getValue<int>());
121 etSumEtaMax.push_back(conf[
"towerCountMaxEta"].getValue<int>());
123 etSumEtThresh.push_back(conf[
"ET_towerThreshold"].getValue<int>()/2);
124 etSumEtThresh.push_back(conf[
"HT_jetThreshold"].getValue<int>()/2);
125 etSumEtThresh.push_back(conf[
"MET_towerThreshold"].getValue<int>()/2);
126 etSumEtThresh.push_back(conf[
"MHT_jetThreshold"].getValue<int>()/2);
127 etSumEtThresh.push_back(conf[
"ET_towerThreshold"].getValue<int>()/2);
129 for (uint
i=0;
i<5; ++
i) {
138 paramsHelper.
setEgMaxPtHOverE((conf[
"egammaRelaxationThreshold"].getValue<int>())/2.);
139 paramsHelper.
setEgEtaCut((conf[
"egammaMaxEta"].getValue<int>()));
159 baseRcd.
get( baseSettings ) ;
162 if( objectKey.empty() ){
163 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"Key is empty, returning empty l1t::CaloParams";
164 throw std::runtime_error(
"Empty objectKey");
167 std::string tscKey = objectKey.substr(0, objectKey.find(
":") );
168 std::string rsKey = objectKey.substr( objectKey.find(
":")+1, std::string::npos );
170 edm::LogInfo(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"Producing L1TCaloParamsOnlineProd with TSC key = " << tscKey <<
" and RS key = " << rsKey ;
172 std::string calol1_top_key, calol1_algo_key, calol1_hw_key;
173 std::string calol1_hw_payload, calol1_algo_payload;
174 std::string calol2_top_key, calol2_algo_key, calol2_hw_key;
176 std::map<std::string,std::string> calol2_algo_payloads;
178 std::map<std::string,std::string> topKeys =
184 calol1_top_key = topKeys[
"CALOL1_KEY"];
186 std::map<std::string,std::string> calol1_keys =
193 calol1_hw_key = calol1_keys[
"HW"];
200 calol1_algo_key = calol1_keys[
"ALGO"];
208 calol2_top_key = topKeys[
"CALOL2_KEY"];
210 std::map<std::string,std::string> calol2_keys =
217 calol2_hw_key = calol2_keys[
"HW"];
224 calol2_algo_key = calol2_keys[
"ALGO"];
226 std::map<std::string,std::string> calol2_algo_keys =
233 for(
auto &
key : calol2_algo_keys)
234 calol2_algo_payloads[
key.second ] =
241 }
catch ( std::runtime_error &
e ) {
242 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) << e.what();
243 throw std::runtime_error(
"Broken key");
247 for(
auto &conf : calol2_algo_payloads){
253 std::ofstream
output(
std::string(
"/tmp/").
append(calol2_hw_key.substr(0,calol2_hw_key.find(
"/"))).append(
".xml"));
254 output << calol2_hw_payload;
258 std::ofstream
output(
std::string(
"/tmp/").
append(calol1_algo_key.substr(0,calol1_algo_key.find(
"/"))).append(
".xml"));
259 output << calol1_algo_payload;
272 calol1.
addProcessor(
"CTP7_Phi0",
"Layer1Processor",
"-2",
"-0");
273 calol1.
addProcessor(
"CTP7_Phi1",
"Layer1Processor",
"-2",
"-1");
274 calol1.
addProcessor(
"CTP7_Phi2",
"Layer1Processor",
"-2",
"-2");
275 calol1.
addProcessor(
"CTP7_Phi3",
"Layer1Processor",
"-2",
"-3");
276 calol1.
addProcessor(
"CTP7_Phi4",
"Layer1Processor",
"-2",
"-4");
277 calol1.
addProcessor(
"CTP7_Phi5",
"Layer1Processor",
"-2",
"-5");
278 calol1.
addProcessor(
"CTP7_Phi6",
"Layer1Processor",
"-2",
"-6");
279 calol1.
addProcessor(
"CTP7_Phi7",
"Layer1Processor",
"-2",
"-7");
280 calol1.
addProcessor(
"CTP7_Phi8",
"Layer1Processor",
"-2",
"-8");
281 calol1.
addProcessor(
"CTP7_Phi9",
"Layer1Processor",
"-2",
"-9");
282 calol1.
addProcessor(
"CTP7_Phi10",
"Layer1Processor",
"-2",
"-10");
283 calol1.
addProcessor(
"CTP7_Phi11",
"Layer1Processor",
"-2",
"-11");
284 calol1.
addProcessor(
"CTP7_Phi12",
"Layer1Processor",
"-2",
"-12");
285 calol1.
addProcessor(
"CTP7_Phi13",
"Layer1Processor",
"-2",
"-13");
286 calol1.
addProcessor(
"CTP7_Phi14",
"Layer1Processor",
"-2",
"-14");
287 calol1.
addProcessor(
"CTP7_Phi15",
"Layer1Processor",
"-2",
"-15");
288 calol1.
addProcessor(
"CTP7_Phi16",
"Layer1Processor",
"-2",
"-16");
290 calol1.
addProcessor(
"defaultProc",
"processors",
"-2",
"0");
293 calol1.
addProcessor(
"processor0",
"processors",
"-1",
"-1");
294 calol1.
addProcessor(
"processor1",
"processors",
"-1",
"-2");
295 calol1.
addProcessor(
"processor2",
"processors",
"-1",
"-3");
296 calol1.
addProcessor(
"processor3",
"processors",
"-1",
"-4");
297 calol1.
addProcessor(
"processor4",
"processors",
"-1",
"-5");
298 calol1.
addProcessor(
"processor5",
"processors",
"-1",
"-6");
299 calol1.
addProcessor(
"processor6",
"processors",
"-1",
"-7");
300 calol1.
addProcessor(
"processor7",
"processors",
"-1",
"-8");
301 calol1.
addProcessor(
"processor8",
"processors",
"-1",
"-9");
302 calol1.
addProcessor(
"processor9",
"processors",
"-1",
"-10");
303 calol1.
addProcessor(
"processor10",
"processors",
"-1",
"-11");
304 calol1.
addProcessor(
"processor11",
"processors",
"-1",
"-12");
305 calol1.
addProcessor(
"processor12",
"processors",
"-1",
"-13");
306 calol1.
addProcessor(
"processor13",
"processors",
"-1",
"-14");
307 calol1.
addProcessor(
"processor14",
"processors",
"-1",
"-15");
308 calol1.
addProcessor(
"processor15",
"processors",
"-1",
"-16");
309 calol1.
addProcessor(
"processor16",
"processors",
"-1",
"-17");
310 calol1.
addProcessor(
"processor17",
"processors",
"-1",
"-18");
318 std::map<std::string, l1t::Parameter> calol1_conf = calol1.
getParameters(
"defaultProc");
319 std::map<std::string, l1t::Mask> calol1_rs ;
327 for(
auto &conf : calol2_algo_payloads){
336 std::map<std::string, l1t::Parameter> calol2_conf = calol2.
getParameters(
"MP1");
337 std::map<std::string, l1t::Mask> calol2_rs ;
342 throw std::runtime_error(
"Parsing error for CaloLayer1");
344 throw std::runtime_error(
"Parsing error for CaloLayer2");
346 std::shared_ptr< l1t::CaloParams > retval = std::make_shared< l1t::CaloParams >( m_params_helper ) ;
void setEtSumEtaMax(unsigned isum, int eta)
void setEtSumEcalSumCalibrationLUT(const l1t::LUT &lut)
void setConfigured(bool state=true) noexcept
void setLayer1HCalScaleETBins(const std::vector< int > params)
void setIsoTauEtaMax(int value)
void setEgNeighbourThreshold(double thresh)
~L1TCaloParamsOnlineProd(void)
void setTauCalibrationLUT(const l1t::LUT &lut)
void setTauIsolationLUT(const l1t::LUT &lut)
void setJetCalibrationLUT(const l1t::LUT &lut)
void setTauNeighbourThreshold(double thresh)
void setEgHOverEcutEndcap(int cut)
virtual std::shared_ptr< l1t::CaloParams > newObject(const std::string &objectKey, const L1TCaloParamsO2ORcd &record) override
void setEtSumEttCalibrationLUT(const l1t::LUT &lut)
void setEgCalibrationLUT(const l1t::LUT &lut)
L1TCaloParamsOnlineProd(const edm::ParameterSet &)
void setLayer1ECalScalePhiBins(const std::vector< unsigned > params)
l1t::OMDSReader m_omdsReader
void setEgHOverEcutBarrel(int cut)
bool readCaloLayer2OnlineSettings(l1t::CaloParamsHelper ¶msHelper, std::map< std::string, l1t::Parameter > &conf, std::map< std::string, l1t::Mask > &)
void setEtSumXCalibrationLUT(const l1t::LUT &lut)
void readDOMFromString(const std::string &str, xercesc::DOMDocument *&doc)
void setEgBypassEGVetos(unsigned flag)
static std::map< std::string, std::string > fetch(const std::vector< std::string > &queryColumns, const std::string &table, const std::string &key, l1t::OMDSReader &m_omdsReader)
void get(HolderT &iHolder) const
void setLayer1HFScaleETBins(const std::vector< int > params)
void setEtSumEtThreshold(unsigned isum, double thresh)
void setLayer1ECalScaleETBins(const std::vector< int > params)
void setTauSeedThreshold(double thresh)
l1t::LUT convertToLUT(const std::vector< uint64_t > &v, int padding=-1) noexcept
void setEgEtaCut(int mask)
void setLayer1HCalScaleFactors(const std::vector< double > params)
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
void setLayer1HFScaleFactors(const std::vector< double > params)
const std::map< std::string, Parameter > & getParameters(const char *processor) const
void setJetSeedThreshold(double thresh)
void setEgMaxPtHOverE(double thresh)
void readRootElement(TriggerSystem &aTriggerSystem, const std::string &sysId="")
void setEgIsolationLUT(const l1t::LUT &lut)
void addProcessor(const char *processor, const char *role, const char *crate, const char *slot)
void setTauIsolationLUT2(const l1t::LUT &lut)
void setJetBypassPUS(unsigned flag)
void setEgSeedThreshold(double thresh)
void setLayer1ECalScaleFactors(const std::vector< double > params)
void setLayer1HCalScalePhiBins(const std::vector< unsigned > params)
void setLayer1HFScalePhiBins(const std::vector< unsigned > params)
bool readCaloLayer1OnlineSettings(l1t::CaloParamsHelper ¶msHelper, std::map< std::string, l1t::Parameter > &conf, std::map< std::string, l1t::Mask > &)