17 #include "xercesc/util/PlatformUtils.hpp" 38 std::map<std::string, l1t::Mask>& ) {
39 const char * expectedParams[] = {
40 "layer1ECalScaleFactors",
41 "layer1HCalScaleFactors",
42 "layer1HFScaleFactors",
43 "layer1ECalScaleETBins",
44 "layer1HCalScaleETBins",
52 for (
const auto param : expectedParams) {
53 if ( conf.find(param) == conf.end() ) {
54 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd") <<
"Unable to locate expected CaloLayer1 parameter: " << param <<
" in L1 settings payload!";
66 if( conf.find(
"layer1ECalScalePhiBins") != conf.end() )
68 if( conf.find(
"layer1HCalScalePhiBins") != conf.end() )
70 if( conf.find(
"layer1HFScalePhiBins") != conf.end() )
72 if( conf.find(
"layer1SecondStageLUT") != conf.end() )
80 std::map<std::string, l1t::Mask>& ) {
81 const char * expectedParams[] = {
82 "leptonSeedThreshold",
83 "leptonTowerThreshold",
84 "pileUpTowerThreshold",
93 "ecalET_energyCalibLUT",
94 "METX_energyCalibLUT",
95 "METY_energyCalibLUT",
96 "egammaRelaxationThreshold",
98 "egammaEnergyCalibLUT",
105 "towerCountThreshold",
107 "ET_towerThresholdLUT",
108 "MET_towerThresholdLUT",
109 "ecalET_towerThresholdLUT",
110 "jetBypassPileUpSub",
112 "egammaHOverECut_iEtaLT15",
113 "egammaHOverECut_iEtaGTEq15",
114 "egammaBypassExtendedHOverE" 116 for (
const auto param : expectedParams) {
117 if ( conf.find(param) == conf.end() ) {
118 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd") <<
"Unable to locate expected CaloLayer2 parameter: " << param <<
" in L1 settings payload!";
128 paramsHelper.
setJetBypassPUS(conf[
"jetBypassPileUpSub"].getValue<bool>());
138 std::vector<int> etSumEtaMax;
139 std::vector<int> etSumEtThresh;
141 etSumEtaMax.push_back(conf[
"ETMET_maxTowerEta"].getValue<int>());
142 etSumEtaMax.push_back(conf[
"HTMHT_maxJetEta"].getValue<int>());
143 etSumEtaMax.push_back(conf[
"ETMET_maxTowerEta"].getValue<int>());
144 etSumEtaMax.push_back(conf[
"HTMHT_maxJetEta"].getValue<int>());
145 etSumEtaMax.push_back(conf[
"towerCountMaxEta"].getValue<int>());
147 etSumEtThresh.push_back(0);
148 etSumEtThresh.push_back(conf[
"HT_jetThreshold"].getValue<int>()/2);
149 etSumEtThresh.push_back(0);
150 etSumEtThresh.push_back(conf[
"MHT_jetThreshold"].getValue<int>()/2);
151 etSumEtThresh.push_back(conf[
"ET_towerThreshold"].getValue<int>()/2);
168 paramsHelper.
setEgMaxPtHOverE((conf[
"egammaRelaxationThreshold"].getValue<int>())/2.);
169 paramsHelper.
setEgEtaCut((conf[
"egammaMaxEta"].getValue<int>()));
178 if( conf.find(
"tauIsoLUT2") != conf.end() )
183 if( conf.find(
"P_TauTrimming_13to8.mif") != conf.end() )
199 const L1TCaloParamsRcd& baseRcd = record.template getRecord< L1TCaloParamsRcd >() ;
201 baseRcd.
get( baseSettings ) ;
204 if( objectKey.empty() ){
205 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"Key is empty";
207 throw std::runtime_error(
"SummaryForFunctionManager: Calo | Faulty | Empty objectKey");
209 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"returning unmodified prototype of l1t::CaloParams";
210 return std::make_shared< l1t::CaloParams >( *(baseSettings.product()) ) ;
214 std::string tscKey = objectKey.substr(0, objectKey.find(
":") );
215 std::string rsKey = objectKey.substr( objectKey.find(
":")+1, std::string::npos );
217 edm::LogInfo(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"Producing L1TCaloParamsOnlineProd with TSC key = " << tscKey <<
" and RS key = " << rsKey;
221 std::string calol2_top_key, calol2_algo_key, calol2_hw_key;
223 std::map<std::string,std::string> calol2_algo_payloads;
226 std::map<std::string,std::string> topKeys =
235 calol1_top_key = topKeys[
"CALOL1_KEY"];
252 calol2_top_key = topKeys[
"CALOL2_KEY"];
254 std::map<std::string,std::string> calol2_keys =
261 calol2_hw_key = calol2_keys[
"HW"];
268 calol2_algo_key = calol2_keys[
"ALGO"];
270 std::map<std::string,std::string> calol2_algo_keys =
277 for(
auto &
key : calol2_algo_keys)
278 calol2_algo_payloads[
key.second ] =
286 }
catch ( std::runtime_error &
e ) {
287 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) << e.what();
289 throw std::runtime_error(
std::string(
"SummaryForFunctionManager: Calo | Faulty | ") + e.what());
291 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"returning unmodified prototype of l1t::CaloParams";
292 return std::make_shared< l1t::CaloParams >( *(baseSettings.product()) ) ;
298 for(
auto &conf : calol2_algo_payloads){
303 std::ofstream
output(
std::string(
"/tmp/").
append(calol2_hw_key.substr(0,calol2_hw_key.find(
"/"))).append(
".xml"));
304 output << calol2_hw_payload;
309 std::ofstream
output(
std::string(
"/tmp/").
append(calol1_algo_key.substr(0,calol1_algo_key.find(
"/"))).append(
".xml"));
310 output << calol1_algo_payload;
323 calol1.
addProcessor(
"processors",
"processors",
"-1",
"-1");
327 std::map<std::string, l1t::Parameter> calol1_conf = calol1.
getParameters(
"processors");
328 std::map<std::string, l1t::Mask> calol1_rs ;
331 throw std::runtime_error(
"Parsing error for CaloLayer1");
333 }
catch ( std::runtime_error &e ){
334 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) << e.what();
336 throw std::runtime_error(
std::string(
"SummaryForFunctionManager: Calo | Faulty | ") + e.what());
338 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"returning unmodified prototype of l1t::CaloParams";
339 return std::make_shared< l1t::CaloParams >( *(baseSettings.product()) ) ;
352 for(
auto &conf : calol2_algo_payloads){
360 std::map<std::string, l1t::Parameter> calol2_conf = calol2.
getParameters(
"MP1");
361 std::map<std::string, l1t::Mask> calol2_rs ;
364 throw std::runtime_error(
"Parsing error for CaloLayer2");
366 }
catch ( std::runtime_error &e ){
367 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) << e.what();
369 throw std::runtime_error(
std::string(
"SummaryForFunctionManager: Calo | Faulty | ") + e.what());
371 edm::LogError(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"returning unmodified prototype of l1t::CaloParams";
372 return std::make_shared< l1t::CaloParams >( *(baseSettings.product()) ) ;
377 std::shared_ptr< l1t::CaloParams > retval = std::make_shared< l1t::CaloParams >( m_params_helper ) ;
379 edm::LogInfo(
"L1-O2O: L1TCaloParamsOnlineProd" ) <<
"SummaryForFunctionManager: Calo | OK | All looks good";
T getParameter(std::string const &) const
void setConfigured(bool state=true) noexcept
void setEtSumXCalibrationLUT(const l1t::LUT &lut)
void setTauIsolationLUT(const l1t::LUT &lut)
unsigned int exclusiveLayer
void setLayer1HFScalePhiBins(const std::vector< unsigned > params)
void setEgCalibrationLUT(const l1t::LUT &lut)
void setEtSumEttCalibrationLUT(const l1t::LUT &lut)
~L1TCaloParamsOnlineProd(void) override
void setJetCalibrationLUT(const l1t::LUT &lut)
std::shared_ptr< l1t::CaloParams > newObject(const std::string &objectKey, const L1TCaloParamsO2ORcd &record) override
void setEgNeighbourThreshold(double thresh)
void setLayer1HCalScaleFactors(const std::vector< double > params)
void setLayer1ECalScaleFactors(const std::vector< double > params)
void setLayer1SecondStageLUT(const std::vector< unsigned > &lut)
void setEtSumEcalSumCalibrationLUT(const l1t::LUT &lut)
L1TCaloParamsOnlineProd(const edm::ParameterSet &)
void setEtSumEttPUSLUT(const l1t::LUT &lut)
void setTauCalibrationLUT(const l1t::LUT &lut)
l1t::OMDSReader m_omdsReader
void setLayer1HCalScalePhiBins(const std::vector< unsigned > params)
void setJetSeedThreshold(double thresh)
void setLayer1HCalScaleETBins(const std::vector< int > params)
void setEtSumEtaMax(unsigned isum, int eta)
void readDOMFromString(const std::string &str, xercesc::DOMDocument *&doc)
void setEgIsolationLUT(const l1t::LUT &lut)
void setLayer1HFScaleETBins(const std::vector< int > params)
void setTauSeedThreshold(double thresh)
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 setTauNeighbourThreshold(double thresh)
void setLayer1ECalScaleETBins(const std::vector< int > params)
void get(HolderT &iHolder) const
bool readCaloLayer2OnlineSettings(l1t::CaloParamsHelperO2O ¶msHelper, std::map< std::string, l1t::Parameter > &conf, std::map< std::string, l1t::Mask > &)
void setEgIsolationLUT2(const l1t::LUT &lut)
l1t::LUT convertToLUT(const std::vector< uint64_t > &v, int padding=-1) noexcept
void setLayer1ECalScalePhiBins(const std::vector< unsigned > params)
void setTauTrimmingShapeVetoLUT(const l1t::LUT &lut)
void setEgHOverEcutEndcap(int cut)
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
void setEgEtaCut(int mask)
const std::map< std::string, Parameter > & getParameters(const char *processor) const
void setIsoTauEtaMax(int value)
void setEgBypassEGVetos(unsigned flag)
void setEtSumEcalSumPUSLUT(const l1t::LUT &lut)
void setEgSeedThreshold(double thresh)
void setEtSumEtThreshold(unsigned isum, double thresh)
void readRootElement(TriggerSystem &aTriggerSystem, const std::string &sysId="")
bool readCaloLayer1OnlineSettings(l1t::CaloParamsHelperO2O ¶msHelper, std::map< std::string, l1t::Parameter > &conf, std::map< std::string, l1t::Mask > &)
void setEgBypassExtHOverE(unsigned flag)
void setEgHOverEcutBarrel(int cut)
void addProcessor(const char *processor, const char *role, const char *crate, const char *slot)
void setEgMaxPtHOverE(double thresh)
void setEtSumMetPUSLUT(const l1t::LUT &lut)
void setTauIsolationLUT2(const l1t::LUT &lut)
void setJetBypassPUS(unsigned flag)
void setLayer1HFScaleFactors(const std::vector< double > params)