54 #include "tmEventSetup/tmEventSetup.hh" 55 #include "tmEventSetup/esTypes.hh" 63 #include "tmGrammar/Algorithm.hh" 69 : m_triggerMenuInterface(
"NULL"),
70 m_triggerMenuName(
"NULL"),
71 m_triggerMenuImplementation(0x0),
85 m_numberConditionChips = numberConditionChipsValue;
90 m_pinsOnConditionChip = pinsOnConditionChipValue;
96 m_orderConditionChip = orderConditionChipValue;
101 m_numberPhysTriggers = numberPhysTriggersValue;
109 m_triggerMenuInterface = menuInterface;
118 m_triggerMenuImplementation = menuImplementation;
126 m_vecMuonTemplate = vecMuonTempl;
130 const std::vector<std::vector<MuonShowerTemplate> >& vecMuonShowerTempl) {
131 m_vecMuonShowerTemplate = vecMuonShowerTempl;
135 m_vecCaloTemplate = vecCaloTempl;
139 const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTempl) {
140 m_vecEnergySumTemplate = vecEnergySumTempl;
144 const std::vector<std::vector<EnergySumZdcTemplate> >& vecEnergySumZdcTempl) {
145 m_vecEnergySumZdcTemplate = vecEnergySumZdcTempl;
149 m_vecAXOL1TLTemplate = vecAXOL1TLTempl;
153 m_vecCICADATemplate = vecCICADATempl;
157 const std::vector<std::vector<ExternalTemplate> >& vecExternalTempl) {
158 m_vecExternalTemplate = vecExternalTempl;
162 const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTempl) {
163 m_vecCorrelationTemplate = vecCorrelationTempl;
167 const std::vector<std::vector<CorrelationThreeBodyTemplate> >& vecCorrelationThreeBodyTempl) {
168 m_vecCorrelationThreeBodyTemplate = vecCorrelationThreeBodyTempl;
172 const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >& vecCorrelationWithOverlapRemovalTempl) {
173 m_vecCorrelationWithOverlapRemovalTemplate = vecCorrelationWithOverlapRemovalTempl;
179 m_corMuonTemplate = corMuonTempl;
183 m_corCaloTemplate = corCaloTempl;
187 const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTempl) {
188 m_corEnergySumTemplate = corEnergySumTempl;
199 const std::map<std::string, L1TUtmCondition>& condMap = utmMenu->
getConditionMap();
201 std::map<std::string, unsigned int> extBitMap;
204 for (
const auto& cit : condMap) {
206 if (condition.
getType() == esConditionType::Externals) {
209 for (
const auto&
object :
objects) {
210 if (
object.getType() == esObjectType::EXT) {
211 unsigned int channelID =
object.getExternalChannelId();
214 if (extBitMap.count(
name) == 0)
228 m_conditionMap.resize(m_numberConditionChips);
230 m_vecMuonTemplate.resize(m_numberConditionChips);
231 m_vecMuonShowerTemplate.resize(m_numberConditionChips);
232 m_vecCaloTemplate.resize(m_numberConditionChips);
233 m_vecEnergySumTemplate.resize(m_numberConditionChips);
234 m_vecEnergySumZdcTemplate.resize(m_numberConditionChips);
235 m_vecAXOL1TLTemplate.resize(m_numberConditionChips);
236 m_vecCICADATemplate.resize(m_numberConditionChips);
237 m_vecExternalTemplate.resize(m_numberConditionChips);
239 m_vecCorrelationTemplate.resize(m_numberConditionChips);
240 m_vecCorrelationThreeBodyTemplate.resize(m_numberConditionChips);
241 m_vecCorrelationWithOverlapRemovalTemplate.resize(m_numberConditionChips);
242 m_corMuonTemplate.resize(m_numberConditionChips);
243 m_corCaloTemplate.resize(m_numberConditionChips);
244 m_corEnergySumTemplate.resize(m_numberConditionChips);
250 m_triggerMenuDescription = utmMenu->
getComment();
252 m_triggerMenuImplementation = (getMmHashN(utmMenu->
getFirmwareUuid()) & 0xFFFFFFFF);
253 m_triggerMenuName = utmMenu->
getName();
254 m_triggerMenuInterface = utmMenu->
getVersion();
255 m_triggerMenuUUID = (getMmHashN(utmMenu->
getName()) & 0xFFFFFFFF);
257 const std::map<std::string, L1TUtmAlgorithm>& algoMap = utmMenu->
getAlgorithmMap();
258 const std::map<std::string, L1TUtmCondition>& condMap = utmMenu->
getConditionMap();
260 const std::map<std::string, tmeventsetup::esScale> scaleMap(std::begin(utmMenu->
getScaleMap()),
265 parseScales(scaleMap);
268 for (
const auto& cit : algoMap) {
276 parseAlgorithm(
algo, chipNr);
279 const std::vector<std::string>& rpn_vec =
algo.getRpnVector();
280 for (
size_t ii = 0;
ii < rpn_vec.size();
ii++) {
288 if ((m_conditionMap[chipNr]).
count(condition.
getName()) == 0) {
290 if (condition.
getType() == esConditionType::SingleEgamma ||
291 condition.
getType() == esConditionType::DoubleEgamma ||
292 condition.
getType() == esConditionType::TripleEgamma ||
293 condition.
getType() == esConditionType::QuadEgamma || condition.
getType() == esConditionType::SingleTau ||
294 condition.
getType() == esConditionType::DoubleTau || condition.
getType() == esConditionType::TripleTau ||
295 condition.
getType() == esConditionType::QuadTau || condition.
getType() == esConditionType::SingleJet ||
296 condition.
getType() == esConditionType::DoubleJet || condition.
getType() == esConditionType::TripleJet ||
297 condition.
getType() == esConditionType::QuadJet) {
298 parseCalo(condition, chipNr,
false);
301 }
else if (condition.
getType() == esConditionType::TotalEt ||
302 condition.
getType() == esConditionType::TotalEtEM ||
303 condition.
getType() == esConditionType::TotalHt ||
304 condition.
getType() == esConditionType::MissingEt ||
305 condition.
getType() == esConditionType::MissingHt ||
306 condition.
getType() == esConditionType::MissingEtHF ||
307 condition.
getType() == esConditionType::MissingHtHF ||
308 condition.
getType() == esConditionType::TowerCount ||
309 condition.
getType() == esConditionType::MinBiasHFP0 ||
310 condition.
getType() == esConditionType::MinBiasHFM0 ||
311 condition.
getType() == esConditionType::MinBiasHFP1 ||
312 condition.
getType() == esConditionType::MinBiasHFM1 ||
313 condition.
getType() == esConditionType::AsymmetryEt ||
314 condition.
getType() == esConditionType::AsymmetryHt ||
315 condition.
getType() == esConditionType::AsymmetryEtHF ||
316 condition.
getType() == esConditionType::AsymmetryHtHF ||
317 condition.
getType() == esConditionType::Centrality0 ||
318 condition.
getType() == esConditionType::Centrality1 ||
319 condition.
getType() == esConditionType::Centrality2 ||
320 condition.
getType() == esConditionType::Centrality3 ||
321 condition.
getType() == esConditionType::Centrality4 ||
322 condition.
getType() == esConditionType::Centrality5 ||
323 condition.
getType() == esConditionType::Centrality6 ||
324 condition.
getType() == esConditionType::Centrality7) {
325 parseEnergySum(condition, chipNr,
false);
328 }
else if (condition.
getType() == esConditionType::ZDCPlus ||
329 condition.
getType() == esConditionType::ZDCMinus) {
330 parseEnergySumZdc(condition, chipNr,
false);
333 }
else if (condition.
getType() == esConditionType::Axol1tlTrigger ||
334 condition.
getType() == esConditionType::AnomalyDetectionTrigger) {
335 parseAXOL1TL(condition, chipNr);
338 }
else if (condition.
getType() == esConditionType::CicadaTrigger) {
339 parseCICADA(condition, chipNr);
342 condition.
getType() == esConditionType::DoubleMuon ||
343 condition.
getType() == esConditionType::TripleMuon ||
344 condition.
getType() == esConditionType::QuadMuon) {
345 parseMuon(condition, chipNr,
false);
347 }
else if (condition.
getType() == esConditionType::MuonShower0 ||
348 condition.
getType() == esConditionType::MuonShower1 ||
349 condition.
getType() == esConditionType::MuonShower2 ||
350 condition.
getType() == esConditionType::MuonShowerOutOfTime0 ||
351 condition.
getType() == esConditionType::MuonShowerOutOfTime1) {
352 parseMuonShower(condition, chipNr,
false);
355 }
else if (condition.
getType() == esConditionType::MuonMuonCorrelation ||
356 condition.
getType() == esConditionType::MuonEsumCorrelation ||
357 condition.
getType() == esConditionType::CaloMuonCorrelation ||
358 condition.
getType() == esConditionType::CaloCaloCorrelation ||
359 condition.
getType() == esConditionType::CaloEsumCorrelation ||
360 condition.
getType() == esConditionType::InvariantMass ||
361 condition.
getType() == esConditionType::InvariantMassDeltaR ||
362 condition.
getType() == esConditionType::TransverseMass ||
363 condition.
getType() == esConditionType::InvariantMassUpt) {
364 parseCorrelation(condition, chipNr);
367 }
else if (condition.
getType() == esConditionType::InvariantMass3) {
368 parseCorrelationThreeBody(condition, chipNr);
371 }
else if (condition.
getType() == esConditionType::Externals) {
372 parseExternal(condition, chipNr);
375 }
else if (condition.
getType() == esConditionType::CaloCaloCorrelationOvRm ||
376 condition.
getType() == esConditionType::InvariantMassOvRm ||
377 condition.
getType() == esConditionType::TransverseMassOvRm ||
378 condition.
getType() == esConditionType::DoubleJetOvRm ||
379 condition.
getType() == esConditionType::DoubleTauOvRm) {
380 parseCorrelationWithOverlapRemoval(condition, chipNr);
382 }
else if (condition.
getType() == esConditionType::SingleEgammaOvRm ||
383 condition.
getType() == esConditionType::DoubleEgammaOvRm ||
384 condition.
getType() == esConditionType::TripleEgammaOvRm ||
385 condition.
getType() == esConditionType::QuadEgammaOvRm ||
386 condition.
getType() == esConditionType::SingleTauOvRm ||
387 condition.
getType() == esConditionType::TripleTauOvRm ||
388 condition.
getType() == esConditionType::QuadTauOvRm ||
389 condition.
getType() == esConditionType::SingleJetOvRm ||
390 condition.
getType() == esConditionType::TripleJetOvRm ||
391 condition.
getType() == esConditionType::QuadJetOvRm) {
393 <<
"\n SingleEgammaOvRm" 394 <<
"\n DoubleEgammaOvRm" 395 <<
"\n TripleEgammaOvRm" 396 <<
"\n QuadEgammaOvRm" 397 <<
"\n SingleTauOvRm" 398 <<
"\n TripleTauOvRm" 400 <<
"\n SingleJetOvRm" 401 <<
"\n TripleJetOvRm" 403 <<
"\n The above conditions types OvRm are not implemented yet in the " 404 "parser. Please remove alogrithms that " 405 "use this type of condtion from L1T Menu!" 421 m_triggerMenuInterfaceAuthor =
val;
425 m_triggerMenuInterfaceDescription =
val;
443 for (std::vector<ConditionMap>::iterator itCondOnChip = m_conditionMap.begin(); itCondOnChip != m_conditionMap.end();
447 itCondOnChip->clear();
451 m_algorithmMap.clear();
458 LogTrace(
"TriggerMenuParser") <<
" Trying to insert condition \"" << cName <<
"\" in the condition map." 462 if ((m_conditionMap[chipNr]).
count(cName) != 0) {
463 LogTrace(
"TriggerMenuParser") <<
" Condition " << cName <<
" already exists - not inserted!" << std::endl;
467 (m_conditionMap[chipNr])[cName] = &
cond;
468 LogTrace(
"TriggerMenuParser") <<
" OK - condition inserted!" << std::endl;
481 if (m_algorithmMap.count(algName) != 0) {
482 LogTrace(
"TriggerMenuParser") <<
" Algorithm \"" << algName
483 <<
"\"already exists in the algorithm map- not inserted!" << std::endl;
487 if (m_algorithmAliasMap.count(algAlias) != 0) {
488 LogTrace(
"TriggerMenuParser") <<
" Algorithm alias \"" << algAlias
489 <<
"\"already exists in the algorithm alias map- not inserted!" << std::endl;
496 LogTrace(
"TriggerMenuParser") <<
" Bit number " <<
bitNumber <<
" outside allowed range [0, " 497 << m_numberPhysTriggers <<
") - algorithm not inserted!" << std::endl;
502 if (m_algorithmMap.size() >= m_numberPhysTriggers) {
503 LogTrace(
"TriggerMenuParser") <<
" More than maximum allowed " << m_numberPhysTriggers
504 <<
" algorithms in the algorithm map - not inserted!" << std::endl;
510 static_cast<int>(m_numberConditionChips), static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
512 if ((chipNr < 0) || (chipNr > static_cast<int>(m_numberConditionChips))) {
513 LogTrace(
"TriggerMenuParser") <<
" Chip number " << chipNr <<
" outside allowed range [0, " 514 << m_numberConditionChips <<
") - algorithm not inserted!" << std::endl;
520 static_cast<int>(m_numberConditionChips), static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
522 if ((outputPin < 0) || (outputPin > static_cast<int>(m_pinsOnConditionChip))) {
523 LogTrace(
"TriggerMenuParser") <<
" Output pin " << outputPin <<
" outside allowed range [0, " 524 << m_pinsOnConditionChip <<
"] - algorithm not inserted!" << std::endl;
529 for (
CItAlgo itAlgo = m_algorithmMap.begin(); itAlgo != m_algorithmMap.end(); itAlgo++) {
530 int iPin = (itAlgo->second)
531 .algoOutputPin(static_cast<int>(m_numberConditionChips),
532 static_cast<int>(m_pinsOnConditionChip),
533 m_orderConditionChip);
535 int iChip = (itAlgo->second)
536 .algoChipNumber(static_cast<int>(m_numberConditionChips),
537 static_cast<int>(m_pinsOnConditionChip),
538 m_orderConditionChip);
540 if ((outputPin == iPin) && (chipNr == iChip)) {
541 LogTrace(
"TriggerMenuParser") <<
" Output pin " << outputPin <<
" is the same as for algorithm " << iName
542 <<
"\n from the same chip number " << chipNr <<
" - algorithm not inserted!" 549 m_algorithmMap[algName] = alg;
550 m_algorithmAliasMap[algAlias] = alg;
559 template <
typename T>
561 std::stringstream
ss;
566 std::stringstream
ss;
598 for (std::map<std::string, tmeventsetup::esScale>::const_iterator cit = scaleMap.begin(); cit != scaleMap.end();
600 const tmeventsetup::esScale&
scale = cit->second;
604 scaleParam = &muScales;
605 else if (
scale.getObjectType() == esObjectType::Egamma)
606 scaleParam = &egScales;
608 scaleParam = &tauScales;
610 scaleParam = &jetScales;
612 scaleParam = &ettScales;
613 else if (
scale.getObjectType() == esObjectType::ETTEM)
614 scaleParam = &ettEmScales;
616 scaleParam = &etmScales;
617 else if (
scale.getObjectType() == esObjectType::ETMHF)
618 scaleParam = &etmHfScales;
619 else if (
scale.getObjectType() == esObjectType::HTMHF)
620 scaleParam = &htmHfScales;
622 scaleParam = &httScales;
624 scaleParam = &htmScales;
626 scaleParam = &zdcScales;
628 scaleParam =
nullptr;
630 if (scaleParam !=
nullptr) {
631 switch (
scale.getScaleType()) {
632 case esScaleType::EtScale: {
638 const std::vector<tmeventsetup::esBin>& binsV =
scale.getBins();
639 for (
unsigned int i = 0;
i < binsV.size();
i++) {
640 const tmeventsetup::esBin&
bin = binsV.at(
i);
641 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
642 scaleParam->
etBins.push_back(binLimits);
649 scale.getObjectType() == esObjectType::ETTEM ||
scale.getObjectType() == esObjectType::ETMHF ||
650 scale.getObjectType() == esObjectType::HTMHF) {
655 scale.getObjectType() == esObjectType::ETTEM) {
663 case esScaleType::UnconstrainedPtScale: {
669 const std::vector<tmeventsetup::esBin>& binsV =
scale.getBins();
670 for (
unsigned int i = 0;
i < binsV.size();
i++) {
671 const tmeventsetup::esBin&
bin = binsV.at(
i);
672 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
673 scaleParam->
uptBins.push_back(binLimits);
676 case esScaleType::EtaScale: {
682 const std::vector<tmeventsetup::esBin>& binsV =
scale.getBins();
684 for (
unsigned int i = 0;
i < binsV.size();
i++) {
685 const tmeventsetup::esBin&
bin = binsV.at(
i);
686 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
687 scaleParam->
etaBins.at(
bin.hw_index) = binLimits;
690 case esScaleType::PhiScale: {
696 const std::vector<tmeventsetup::esBin>& binsV =
scale.getBins();
698 for (
unsigned int i = 0;
i < binsV.size();
i++) {
699 const tmeventsetup::esBin&
bin = binsV.at(
i);
700 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
701 scaleParam->
phiBins.at(
bin.hw_index) = binLimits;
712 m_gtScales.setMuonScales(muScales);
713 m_gtScales.setEGScales(egScales);
714 m_gtScales.setTauScales(tauScales);
715 m_gtScales.setJetScales(jetScales);
716 m_gtScales.setETTScales(ettScales);
717 m_gtScales.setETTEmScales(ettEmScales);
718 m_gtScales.setETMScales(etmScales);
719 m_gtScales.setETMHfScales(etmHfScales);
720 m_gtScales.setHTMHfScales(htmHfScales);
721 m_gtScales.setHTTScales(httScales);
722 m_gtScales.setHTMScales(htmScales);
723 m_gtScales.setHTMScales(zdcScales);
726 bool hasPrecision =
false;
727 std::map<std::string, unsigned int> precisions;
728 getPrecisions(precisions, scaleMap);
729 for (std::map<std::string, unsigned int>::const_iterator cit = precisions.begin(); cit != precisions.end(); cit++) {
736 parseCalMuEta_LUTS(scaleMap,
"EG",
"MU");
737 parseCalMuEta_LUTS(scaleMap,
"JET",
"MU");
738 parseCalMuEta_LUTS(scaleMap,
"TAU",
"MU");
742 parseCalMuPhi_LUTS(scaleMap,
"EG",
"MU");
743 parseCalMuPhi_LUTS(scaleMap,
"JET",
"MU");
744 parseCalMuPhi_LUTS(scaleMap,
"TAU",
"MU");
745 parseCalMuPhi_LUTS(scaleMap,
"HTM",
"MU");
746 parseCalMuPhi_LUTS(scaleMap,
"ETM",
"MU");
747 parseCalMuPhi_LUTS(scaleMap,
"ETMHF",
"MU");
748 parseCalMuPhi_LUTS(scaleMap,
"HTMHF",
"MU");
752 parsePt_LUTS(scaleMap,
"Mass",
"EG", precisions[
"PRECISION-EG-MU-MassPt"]);
753 parsePt_LUTS(scaleMap,
"Mass",
"MU", precisions[
"PRECISION-EG-MU-MassPt"]);
754 parseUpt_LUTS(scaleMap,
"Mass",
"MU", precisions[
"PRECISION-EG-MU-MassPt"]);
755 parsePt_LUTS(scaleMap,
"Mass",
"JET", precisions[
"PRECISION-EG-JET-MassPt"]);
756 parsePt_LUTS(scaleMap,
"Mass",
"TAU", precisions[
"PRECISION-EG-TAU-MassPt"]);
757 parsePt_LUTS(scaleMap,
"Mass",
"ETM", precisions[
"PRECISION-EG-ETM-MassPt"]);
758 parsePt_LUTS(scaleMap,
"Mass",
"ETMHF", precisions[
"PRECISION-EG-ETMHF-MassPt"]);
759 parsePt_LUTS(scaleMap,
"Mass",
"HTMHF", precisions[
"PRECISION-EG-HTMHF-MassPt"]);
760 parsePt_LUTS(scaleMap,
"Mass",
"HTM", precisions[
"PRECISION-EG-HTM-MassPt"]);
764 parsePt_LUTS(scaleMap,
"TwoBody",
"EG", precisions[
"PRECISION-EG-MU-TwoBodyPt"]);
765 parsePt_LUTS(scaleMap,
"TwoBody",
"MU", precisions[
"PRECISION-EG-MU-TwoBodyPt"]);
766 parsePt_LUTS(scaleMap,
"TwoBody",
"JET", precisions[
"PRECISION-EG-JET-TwoBodyPt"]);
767 parsePt_LUTS(scaleMap,
"TwoBody",
"TAU", precisions[
"PRECISION-EG-TAU-TwoBodyPt"]);
768 parsePt_LUTS(scaleMap,
"TwoBody",
"ETM", precisions[
"PRECISION-EG-ETM-TwoBodyPt"]);
769 parsePt_LUTS(scaleMap,
"TwoBody",
"ETMHF", precisions[
"PRECISION-EG-ETMHF-TwoBodyPt"]);
770 parsePt_LUTS(scaleMap,
"TwoBody",
"HTMHF", precisions[
"PRECISION-EG-HTMHF-TwoBodyPt"]);
771 parsePt_LUTS(scaleMap,
"TwoBody",
"HTM", precisions[
"PRECISION-EG-HTM-TwoBodyPt"]);
775 parseDeltaEta_Cosh_LUTS(
776 scaleMap,
"EG",
"EG", precisions[
"PRECISION-EG-EG-Delta"], precisions[
"PRECISION-EG-EG-Math"]);
777 parseDeltaEta_Cosh_LUTS(
778 scaleMap,
"EG",
"JET", precisions[
"PRECISION-EG-JET-Delta"], precisions[
"PRECISION-EG-JET-Math"]);
779 parseDeltaEta_Cosh_LUTS(
780 scaleMap,
"EG",
"TAU", precisions[
"PRECISION-EG-TAU-Delta"], precisions[
"PRECISION-EG-TAU-Math"]);
781 parseDeltaEta_Cosh_LUTS(
782 scaleMap,
"EG",
"MU", precisions[
"PRECISION-EG-MU-Delta"], precisions[
"PRECISION-EG-MU-Math"]);
784 parseDeltaEta_Cosh_LUTS(
785 scaleMap,
"JET",
"JET", precisions[
"PRECISION-JET-JET-Delta"], precisions[
"PRECISION-JET-JET-Math"]);
786 parseDeltaEta_Cosh_LUTS(
787 scaleMap,
"JET",
"TAU", precisions[
"PRECISION-JET-TAU-Delta"], precisions[
"PRECISION-JET-TAU-Math"]);
788 parseDeltaEta_Cosh_LUTS(
789 scaleMap,
"JET",
"MU", precisions[
"PRECISION-JET-MU-Delta"], precisions[
"PRECISION-JET-MU-Math"]);
791 parseDeltaEta_Cosh_LUTS(
792 scaleMap,
"TAU",
"TAU", precisions[
"PRECISION-TAU-TAU-Delta"], precisions[
"PRECISION-TAU-TAU-Math"]);
793 parseDeltaEta_Cosh_LUTS(
794 scaleMap,
"TAU",
"MU", precisions[
"PRECISION-TAU-MU-Delta"], precisions[
"PRECISION-TAU-MU-Math"]);
796 parseDeltaEta_Cosh_LUTS(
797 scaleMap,
"MU",
"MU", precisions[
"PRECISION-MU-MU-Delta"], precisions[
"PRECISION-MU-MU-Math"]);
801 parseDeltaPhi_Cos_LUTS(
802 scaleMap,
"EG",
"EG", precisions[
"PRECISION-EG-EG-Delta"], precisions[
"PRECISION-EG-EG-Math"]);
803 parseDeltaPhi_Cos_LUTS(
804 scaleMap,
"EG",
"JET", precisions[
"PRECISION-EG-JET-Delta"], precisions[
"PRECISION-EG-JET-Math"]);
805 parseDeltaPhi_Cos_LUTS(
806 scaleMap,
"EG",
"TAU", precisions[
"PRECISION-EG-TAU-Delta"], precisions[
"PRECISION-EG-TAU-Math"]);
807 parseDeltaPhi_Cos_LUTS(
808 scaleMap,
"EG",
"ETM", precisions[
"PRECISION-EG-ETM-Delta"], precisions[
"PRECISION-EG-ETM-Math"]);
809 parseDeltaPhi_Cos_LUTS(
810 scaleMap,
"EG",
"ETMHF", precisions[
"PRECISION-EG-ETMHF-Delta"], precisions[
"PRECISION-EG-ETMHF-Math"]);
811 parseDeltaPhi_Cos_LUTS(
812 scaleMap,
"EG",
"HTMHF", precisions[
"PRECISION-EG-HTMHF-Delta"], precisions[
"PRECISION-EG-HTMHF-Math"]);
813 parseDeltaPhi_Cos_LUTS(
814 scaleMap,
"EG",
"HTM", precisions[
"PRECISION-EG-HTM-Delta"], precisions[
"PRECISION-EG-HTM-Math"]);
815 parseDeltaPhi_Cos_LUTS(
816 scaleMap,
"EG",
"MU", precisions[
"PRECISION-EG-MU-Delta"], precisions[
"PRECISION-EG-MU-Math"]);
818 parseDeltaPhi_Cos_LUTS(
819 scaleMap,
"JET",
"JET", precisions[
"PRECISION-JET-JET-Delta"], precisions[
"PRECISION-JET-JET-Math"]);
820 parseDeltaPhi_Cos_LUTS(
821 scaleMap,
"JET",
"TAU", precisions[
"PRECISION-JET-TAU-Delta"], precisions[
"PRECISION-JET-TAU-Math"]);
822 parseDeltaPhi_Cos_LUTS(
823 scaleMap,
"JET",
"ETM", precisions[
"PRECISION-JET-ETM-Delta"], precisions[
"PRECISION-JET-ETM-Math"]);
824 parseDeltaPhi_Cos_LUTS(
825 scaleMap,
"JET",
"ETMHF", precisions[
"PRECISION-JET-ETMHF-Delta"], precisions[
"PRECISION-JET-ETMHF-Math"]);
826 parseDeltaPhi_Cos_LUTS(
827 scaleMap,
"JET",
"HTMHF", precisions[
"PRECISION-JET-HTMHF-Delta"], precisions[
"PRECISION-JET-HTMHF-Math"]);
828 parseDeltaPhi_Cos_LUTS(
829 scaleMap,
"JET",
"HTM", precisions[
"PRECISION-JET-HTM-Delta"], precisions[
"PRECISION-JET-HTM-Math"]);
830 parseDeltaPhi_Cos_LUTS(
831 scaleMap,
"JET",
"MU", precisions[
"PRECISION-JET-MU-Delta"], precisions[
"PRECISION-JET-MU-Math"]);
833 parseDeltaPhi_Cos_LUTS(
834 scaleMap,
"TAU",
"TAU", precisions[
"PRECISION-TAU-TAU-Delta"], precisions[
"PRECISION-TAU-TAU-Math"]);
835 parseDeltaPhi_Cos_LUTS(
836 scaleMap,
"TAU",
"ETM", precisions[
"PRECISION-TAU-ETM-Delta"], precisions[
"PRECISION-TAU-ETM-Math"]);
837 parseDeltaPhi_Cos_LUTS(
838 scaleMap,
"TAU",
"ETMHF", precisions[
"PRECISION-TAU-ETMHF-Delta"], precisions[
"PRECISION-TAU-ETMHF-Math"]);
839 parseDeltaPhi_Cos_LUTS(
840 scaleMap,
"TAU",
"HTMHF", precisions[
"PRECISION-TAU-HTMHF-Delta"], precisions[
"PRECISION-TAU-HTMHF-Math"]);
841 parseDeltaPhi_Cos_LUTS(
842 scaleMap,
"TAU",
"HTM", precisions[
"PRECISION-TAU-HTM-Delta"], precisions[
"PRECISION-TAU-HTM-Math"]);
843 parseDeltaPhi_Cos_LUTS(
844 scaleMap,
"TAU",
"MU", precisions[
"PRECISION-TAU-MU-Delta"], precisions[
"PRECISION-TAU-MU-Math"]);
846 parseDeltaPhi_Cos_LUTS(
847 scaleMap,
"MU",
"ETM", precisions[
"PRECISION-MU-ETM-Delta"], precisions[
"PRECISION-MU-ETM-Math"]);
848 parseDeltaPhi_Cos_LUTS(
849 scaleMap,
"MU",
"ETMHF", precisions[
"PRECISION-MU-ETMHF-Delta"], precisions[
"PRECISION-MU-ETMHF-Math"]);
850 parseDeltaPhi_Cos_LUTS(
851 scaleMap,
"MU",
"HTMHF", precisions[
"PRECISION-MU-HTMHF-Delta"], precisions[
"PRECISION-MU-HTMHF-Math"]);
852 parseDeltaPhi_Cos_LUTS(
853 scaleMap,
"MU",
"HTM", precisions[
"PRECISION-MU-HTM-Delta"], precisions[
"PRECISION-MU-HTM-Math"]);
854 parseDeltaPhi_Cos_LUTS(
855 scaleMap,
"MU",
"MU", precisions[
"PRECISION-MU-MU-Delta"], precisions[
"PRECISION-MU-MU-Math"]);
857 parsePhi_Trig_LUTS(scaleMap,
"EG",
l1t::COS, precisions[
"PRECISION-EG-EG-Math"]);
858 parsePhi_Trig_LUTS(scaleMap,
"JET",
l1t::COS, precisions[
"PRECISION-JET-JET-Math"]);
859 parsePhi_Trig_LUTS(scaleMap,
"TAU",
l1t::COS, precisions[
"PRECISION-TAU-TAU-Math"]);
860 parsePhi_Trig_LUTS(scaleMap,
"MU",
l1t::COS, precisions[
"PRECISION-MU-MU-Math"]);
862 parsePhi_Trig_LUTS(scaleMap,
"EG",
l1t::SIN, precisions[
"PRECISION-EG-EG-Math"]);
863 parsePhi_Trig_LUTS(scaleMap,
"JET",
l1t::SIN, precisions[
"PRECISION-JET-JET-Math"]);
864 parsePhi_Trig_LUTS(scaleMap,
"TAU",
l1t::SIN, precisions[
"PRECISION-TAU-TAU-Math"]);
865 parsePhi_Trig_LUTS(scaleMap,
"MU",
l1t::SIN, precisions[
"PRECISION-MU-MU-Math"]);
887 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
890 const tmeventsetup::esScale* scale1 = &scaleMap.find(scLabel1)->second;
891 const tmeventsetup::esScale* scale2 = &scaleMap.find(scLabel2)->second;
893 std::vector<long long> lut_cal_2_mu_eta;
894 getCaloMuonEtaConversionLut(lut_cal_2_mu_eta, scale1, scale2);
899 m_gtScales.setLUT_CalMuEta(lutName, lut_cal_2_mu_eta);
914 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
917 const tmeventsetup::esScale* scale1 = &scaleMap.find(scLabel1)->second;
918 const tmeventsetup::esScale* scale2 = &scaleMap.find(scLabel2)->second;
920 std::vector<long long> lut_cal_2_mu_phi;
921 getCaloMuonPhiConversionLut(lut_cal_2_mu_phi, scale1, scale2);
926 m_gtScales.setLUT_CalMuPhi(lutName, lut_cal_2_mu_phi);
940 if (scaleMap.find(scLabel1) == scaleMap.end())
943 const tmeventsetup::esScale* scale1 = &scaleMap.find(scLabel1)->second;
945 std::vector<long long> lut_pt;
946 getLut(lut_pt, scale1, prec);
948 m_gtScales.setLUT_Pt(lutpfx +
"_" + scLabel1, lut_pt, prec);
963 if (scaleMap.find(scLabel1) == scaleMap.end())
966 const tmeventsetup::esScale* scale1 = &scaleMap.find(scLabel1)->second;
968 std::vector<long long> lut_pt;
969 getLut(lut_pt, scale1, prec);
971 m_gtScales.setLUT_Upt(lutpfx +
"_" + scLabel1, lut_pt, prec);
978 unsigned int prec2) {
988 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
991 const tmeventsetup::esScale* scale1 = &scaleMap.find(scLabel1)->second;
992 const tmeventsetup::esScale* scale2 = &scaleMap.find(scLabel2)->second;
993 std::vector<double> val_delta_eta;
994 std::vector<long long> lut_delta_eta;
995 size_t n = getDeltaVector(val_delta_eta, scale1, scale2);
996 setLut(lut_delta_eta, val_delta_eta, prec1);
1000 m_gtScales.setLUT_DeltaEta(lutName, lut_delta_eta, prec1);
1003 std::vector<long long> lut_cosh;
1004 applyCosh(val_delta_eta,
n);
1005 setLut(lut_cosh, val_delta_eta, prec2);
1006 m_gtScales.setLUT_Cosh(lutName, lut_cosh, prec2);
1013 unsigned int prec2) {
1023 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
1026 const tmeventsetup::esScale* scale1 = &scaleMap.find(scLabel1)->second;
1027 const tmeventsetup::esScale* scale2 = &scaleMap.find(scLabel2)->second;
1028 std::vector<double> val_delta_phi;
1029 std::vector<long long> lut_delta_phi;
1030 size_t n = getDeltaVector(val_delta_phi, scale1, scale2);
1031 setLut(lut_delta_phi, val_delta_phi, prec1);
1035 m_gtScales.setLUT_DeltaPhi(lutName, lut_delta_phi, prec1);
1038 std::vector<long long> lut_cos;
1039 applyCos(val_delta_phi,
n);
1040 setLut(lut_cos, val_delta_phi, prec2);
1041 m_gtScales.setLUT_Cos(lutName, lut_cos, prec2);
1047 unsigned int prec) {
1054 if (scaleMap.find(scLabel) == scaleMap.end())
1059 const tmeventsetup::esScale*
scale = &scaleMap.find(scLabel)->second;
1064 const size_t bitwidth =
std::ceil(std::log10(
n) / std::log10(2));
1068 for (
size_t ii = 0;
ii <
n;
ii++) {
1073 std::vector<long long> lut;
1076 setLut(lut,
array, prec);
1077 m_gtScales.setLUT_Sin(lutName, lut, prec);
1080 setLut(lut,
array, prec);
1081 m_gtScales.setLUT_Cos(lutName, lut, prec);
1111 }
else if (condMu.
getType() == esConditionType::DoubleMuon) {
1115 }
else if (condMu.
getType() == esConditionType::TripleMuon) {
1119 }
else if (condMu.
getType() == esConditionType::QuadMuon) {
1124 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for muon-condition (" <<
type <<
")" << std::endl;
1129 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for muon-condition (" <<
type <<
")" 1130 <<
"\nCan not determine number of trigger objects. " << std::endl;
1134 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 1136 <<
"\n condition = " << condition <<
"\n particle = " << particle
1137 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1142 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
1148 std::vector<uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
1149 tmpValues.reserve(nrObj);
1151 if (
int(condMu.
getObjects().size()) != nrObj) {
1152 edm::LogError(
"TriggerMenuParser") <<
" condMu objects: nrObj = " << nrObj
1153 <<
"condMu.getObjects().size() = " << condMu.
getObjects().size() << std::endl;
1158 unsigned int chargeCorrelation = 1;
1159 const std::vector<L1TUtmCut>&
cuts = condMu.
getCuts();
1160 for (
size_t jj = 0;
jj <
cuts.size();
jj++) {
1162 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
1163 if (
cut.getData() ==
"ls")
1164 chargeCorrelation = 2;
1165 else if (
cut.getData() ==
"os")
1166 chargeCorrelation = 4;
1168 chargeCorrelation = 1;
1185 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
1188 relativeBx =
object.getBxOffset();
1191 int upperUnconstrainedPtInd = -1;
1192 int lowerUnconstrainedPtInd = 0;
1193 int upperImpactParameterInd = -1;
1194 int lowerImpactParameterInd = 0;
1195 int upperThresholdInd = -1;
1196 int lowerThresholdInd = 0;
1197 int upperIndexInd = -1;
1198 int lowerIndexInd = 0;
1200 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1201 int isolationLUT = 0xF;
1202 int impactParameterLUT = 0xF;
1204 int qualityLUT = 0xFFFF;
1206 std::vector<MuonTemplate::Window> etaWindows;
1207 std::vector<MuonTemplate::Window> tfMuonIndexWindows;
1209 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
1210 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1213 switch (
cut.getCutType()) {
1214 case esCutType::UnconstrainedPt:
1215 lowerUnconstrainedPtInd =
cut.getMinimum().index;
1216 upperUnconstrainedPtInd =
cut.getMaximum().index;
1219 case esCutType::ImpactParameter:
1220 lowerImpactParameterInd =
cut.getMinimum().index;
1221 upperImpactParameterInd =
cut.getMaximum().index;
1222 impactParameterLUT = l1tstr2int(
cut.getData());
1226 lowerThresholdInd =
cut.getMinimum().index;
1227 upperThresholdInd =
cut.getMaximum().index;
1230 case esCutType::Slice:
1231 lowerIndexInd =
int(
cut.getMinimum().value);
1232 upperIndexInd =
int(
cut.getMaximum().value);
1235 case esCutType::Eta: {
1236 if (etaWindows.size() < 5) {
1237 if ((
cut.getMinimum().index <=
cut.getMaximum().index) ^
1238 ((
cut.getMinimum().index <= 255) ^ (
cut.getMaximum().index <= 255))) {
1239 etaWindows.push_back({
cut.getMinimum().index,
cut.getMaximum().index});
1242 <<
"Invalid Eta Window for muon-condition (" <<
name <<
")" << std::endl;
1246 <<
"Too Many Eta Cuts for muon-condition (" << particle <<
")" << std::endl;
1253 phiWindow1Lower =
cut.getMinimum().index;
1254 phiWindow1Upper =
cut.getMaximum().index;
1255 }
else if (cntPhi == 1) {
1256 phiWindow2Lower =
cut.getMinimum().index;
1257 phiWindow2Upper =
cut.getMaximum().index;
1260 <<
"Too Many Phi Cuts for muon-condition (" << particle <<
")" << std::endl;
1268 if (
cut.getData() ==
"positive")
1270 else if (
cut.getData() ==
"negative")
1277 qualityLUT = l1tstr2int(
cut.getData());
1280 case esCutType::Isolation: {
1281 isolationLUT = l1tstr2int(
cut.getData());
1285 case esCutType::Index: {
1286 tfMuonIndexWindows.push_back({
cut.getMinimum().index,
cut.getMaximum().index});
1296 objParameter[cnt].unconstrainedPtHigh = upperUnconstrainedPtInd;
1297 objParameter[cnt].unconstrainedPtLow = lowerUnconstrainedPtInd;
1298 objParameter[cnt].impactParameterHigh = upperImpactParameterInd;
1299 objParameter[cnt].impactParameterLow = lowerImpactParameterInd;
1300 objParameter[cnt].impactParameterLUT = impactParameterLUT;
1302 objParameter[cnt].ptHighThreshold = upperThresholdInd;
1303 objParameter[cnt].ptLowThreshold = lowerThresholdInd;
1305 objParameter[cnt].indexHigh = upperIndexInd;
1306 objParameter[cnt].indexLow = lowerIndexInd;
1308 objParameter[cnt].etaWindows = etaWindows;
1310 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
1311 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
1312 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
1313 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
1316 objParameter[cnt].enableMip =
false;
1317 objParameter[cnt].enableIso =
false;
1318 objParameter[cnt].requestIso =
false;
1320 objParameter[cnt].charge =
charge;
1321 objParameter[cnt].qualityLUT = qualityLUT;
1322 objParameter[cnt].isolationLUT = isolationLUT;
1324 objParameter[cnt].tfMuonIndexWindows = tfMuonIndexWindows;
1344 std::ostringstream myCoutStream;
1345 muonCond.
print(myCoutStream);
1346 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1350 if (!insertConditionIntoMap(muonCond, chipNr)) {
1351 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
1354 LogDebug(
"TriggerMenuParser") <<
"Added Condition " <<
name <<
" to the ConditionMap" << std::endl;
1356 (m_corMuonTemplate[chipNr]).
push_back(muonCond);
1358 LogDebug(
"TriggerMenuParser") <<
"Added Condition " <<
name <<
" to the vecMuonTemplate vector" << std::endl;
1359 (m_vecMuonTemplate[chipNr]).
push_back(muonCond);
1381 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for muon-condition (" <<
type <<
")" 1382 <<
"\nCan not determine number of trigger objects. " << std::endl;
1386 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 1388 <<
"\n condition = " << condition <<
"\n particle = " << particle
1389 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1394 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
1400 std::vector<uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
1401 tmpValues.reserve(nrObj);
1406 unsigned int chargeCorrelation = 0;
1407 if (str_chargeCorrelation ==
"ig")
1408 chargeCorrelation = 1;
1409 else if (str_chargeCorrelation ==
"ls")
1410 chargeCorrelation = 2;
1411 else if (str_chargeCorrelation ==
"os")
1412 chargeCorrelation = 4;
1428 int upperUnconstrainedPtInd = -1;
1429 int lowerUnconstrainedPtInd = 0;
1430 int upperImpactParameterInd = -1;
1431 int lowerImpactParameterInd = 0;
1432 int impactParameterLUT = 0xF;
1433 int upperThresholdInd = -1;
1434 int lowerThresholdInd = 0;
1435 int upperIndexInd = -1;
1436 int lowerIndexInd = 0;
1438 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1439 int isolationLUT = 0xF;
1441 int qualityLUT = 0xFFFF;
1443 std::vector<MuonTemplate::Window> etaWindows;
1444 std::vector<MuonTemplate::Window> tfMuonIndexWindows;
1446 const std::vector<L1TUtmCut>&
cuts = corrMu->
getCuts();
1447 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1450 switch (
cut.getCutType()) {
1451 case esCutType::UnconstrainedPt:
1452 lowerUnconstrainedPtInd =
cut.getMinimum().index;
1453 upperUnconstrainedPtInd =
cut.getMaximum().index;
1456 case esCutType::ImpactParameter:
1457 lowerImpactParameterInd =
cut.getMinimum().index;
1458 upperImpactParameterInd =
cut.getMaximum().index;
1459 impactParameterLUT = l1tstr2int(
cut.getData());
1463 lowerThresholdInd =
cut.getMinimum().index;
1464 upperThresholdInd =
cut.getMaximum().index;
1467 case esCutType::Slice:
1468 lowerIndexInd =
int(
cut.getMinimum().value);
1469 upperIndexInd =
int(
cut.getMaximum().value);
1472 case esCutType::Eta: {
1473 if (etaWindows.size() < 5) {
1474 if ((
cut.getMinimum().index <=
cut.getMaximum().index) ^
1475 ((
cut.getMinimum().index <= 255) ^ (
cut.getMaximum().index <= 255))) {
1476 etaWindows.push_back({
cut.getMinimum().index,
cut.getMaximum().index});
1478 edm::LogError(
"TriggerMenuParser") <<
"Invalid Eta Window for muon-condition (" <<
name <<
")" << std::endl;
1482 <<
"Too Many Eta Cuts for muon-condition (" << particle <<
")" << std::endl;
1489 phiWindow1Lower =
cut.getMinimum().index;
1490 phiWindow1Upper =
cut.getMaximum().index;
1491 }
else if (cntPhi == 1) {
1492 phiWindow2Lower =
cut.getMinimum().index;
1493 phiWindow2Upper =
cut.getMaximum().index;
1496 <<
"Too Many Phi Cuts for muon-condition (" << particle <<
")" << std::endl;
1504 if (
cut.getData() ==
"positive")
1506 else if (
cut.getData() ==
"negative")
1513 qualityLUT = l1tstr2int(
cut.getData());
1516 case esCutType::Isolation: {
1517 isolationLUT = l1tstr2int(
cut.getData());
1521 case esCutType::Index: {
1522 tfMuonIndexWindows.push_back({
cut.getMinimum().index,
cut.getMaximum().index});
1532 objParameter[0].unconstrainedPtHigh = upperUnconstrainedPtInd;
1533 objParameter[0].unconstrainedPtLow = lowerUnconstrainedPtInd;
1534 objParameter[0].impactParameterHigh = upperImpactParameterInd;
1535 objParameter[0].impactParameterLow = lowerImpactParameterInd;
1536 objParameter[0].impactParameterLUT = impactParameterLUT;
1538 objParameter[0].ptHighThreshold = upperThresholdInd;
1539 objParameter[0].ptLowThreshold = lowerThresholdInd;
1541 objParameter[0].indexHigh = upperIndexInd;
1542 objParameter[0].indexLow = lowerIndexInd;
1544 objParameter[0].etaWindows = etaWindows;
1546 objParameter[0].phiWindow1Lower = phiWindow1Lower;
1547 objParameter[0].phiWindow1Upper = phiWindow1Upper;
1548 objParameter[0].phiWindow2Lower = phiWindow2Lower;
1549 objParameter[0].phiWindow2Upper = phiWindow2Upper;
1552 objParameter[0].enableMip =
false;
1553 objParameter[0].enableIso =
false;
1554 objParameter[0].requestIso =
false;
1556 objParameter[0].charge =
charge;
1557 objParameter[0].qualityLUT = qualityLUT;
1558 objParameter[0].isolationLUT = isolationLUT;
1560 objParameter[0].tfMuonIndexWindows = tfMuonIndexWindows;
1576 std::ostringstream myCoutStream;
1577 muonCond.
print(myCoutStream);
1578 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1594 (m_corMuonTemplate[chipNr]).
push_back(muonCond);
1626 std::vector<MuonShowerTemplate::ObjectParameter> objParameter(nrObj);
1628 if (
int(condMu.
getObjects().size()) != nrObj) {
1629 edm::LogError(
"TriggerMenuParser") <<
" condMu objects: nrObj = " << nrObj
1630 <<
"condMu.getObjects().size() = " << condMu.
getObjects().size() << std::endl;
1636 int relativeBx =
object.getBxOffset();
1638 if (condMu.
getType() == esConditionType::MuonShower0) {
1639 objParameter[0].MuonShower0 =
true;
1640 }
else if (condMu.
getType() == esConditionType::MuonShower1) {
1641 objParameter[0].MuonShower1 =
true;
1642 }
else if (condMu.
getType() == esConditionType::MuonShower2) {
1643 objParameter[0].MuonShower2 =
true;
1644 }
else if (condMu.
getType() == esConditionType::MuonShowerOutOfTime0) {
1645 objParameter[0].MuonShowerOutOfTime0 =
true;
1646 }
else if (condMu.
getType() == esConditionType::MuonShowerOutOfTime1) {
1647 objParameter[0].MuonShowerOutOfTime1 =
true;
1663 std::ostringstream myCoutStream;
1664 muonShowerCond.
print(myCoutStream);
1668 if (!insertConditionIntoMap(muonShowerCond, chipNr)) {
1669 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
1672 (m_vecMuonShowerTemplate[chipNr]).
push_back(muonShowerCond);
1700 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 1701 <<
"\n (in parseCalo) " 1702 <<
"\n condition = " << condition <<
"\n particle = " << particle
1703 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1712 if (condCalo.
getType() == esConditionType::SingleEgamma) {
1717 }
else if (condCalo.
getType() == esConditionType::DoubleEgamma) {
1722 }
else if (condCalo.
getType() == esConditionType::TripleEgamma) {
1727 }
else if (condCalo.
getType() == esConditionType::QuadEgamma) {
1732 }
else if (condCalo.
getType() == esConditionType::SingleJet) {
1733 caloObjType =
gtJet;
1737 }
else if (condCalo.
getType() == esConditionType::DoubleJet) {
1738 caloObjType =
gtJet;
1742 }
else if (condCalo.
getType() == esConditionType::TripleJet) {
1743 caloObjType =
gtJet;
1747 }
else if (condCalo.
getType() == esConditionType::QuadJet) {
1748 caloObjType =
gtJet;
1752 }
else if (condCalo.
getType() == esConditionType::SingleTau) {
1753 caloObjType =
gtTau;
1757 }
else if (condCalo.
getType() == esConditionType::DoubleTau) {
1758 caloObjType =
gtTau;
1762 }
else if (condCalo.
getType() == esConditionType::TripleTau) {
1763 caloObjType =
gtTau;
1767 }
else if (condCalo.
getType() == esConditionType::QuadTau) {
1768 caloObjType =
gtTau;
1773 edm::LogError(
"TriggerMenuParser") <<
"Wrong particle for calo-condition (" << particle <<
")" << std::endl;
1780 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for calo-condition (" <<
type <<
")" 1781 <<
"\nCan not determine number of trigger objects. " << std::endl;
1788 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
1794 std::vector<uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
1795 tmpValues.reserve(nrObj);
1797 if (
int(condCalo.
getObjects().size()) != nrObj) {
1798 edm::LogError(
"TriggerMenuParser") <<
" condCalo objects: nrObj = " << nrObj
1799 <<
"condCalo.getObjects().size() = " << condCalo.
getObjects().size()
1817 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
1820 relativeBx =
object.getBxOffset();
1823 int upperThresholdInd = -1;
1824 int lowerThresholdInd = 0;
1825 int upperIndexInd = -1;
1826 int lowerIndexInd = 0;
1828 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1829 int isolationLUT = 0xF;
1830 int qualityLUT = 0xF;
1831 int displacedLUT = 0x0;
1835 std::vector<CaloTemplate::Window> etaWindows;
1837 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
1838 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1841 switch (
cut.getCutType()) {
1843 lowerThresholdInd =
cut.getMinimum().index;
1844 upperThresholdInd =
cut.getMaximum().index;
1846 case esCutType::Slice:
1847 lowerIndexInd =
int(
cut.getMinimum().value);
1848 upperIndexInd =
int(
cut.getMaximum().value);
1850 case esCutType::Eta: {
1851 if (etaWindows.size() < 5) {
1852 if ((
cut.getMinimum().index <=
cut.getMaximum().index) ^
1853 ((
cut.getMinimum().index <= 127) ^ (
cut.getMaximum().index <= 127))) {
1854 etaWindows.push_back({
cut.getMinimum().index,
cut.getMaximum().index});
1857 <<
"Invalid Eta Window for calo-conditioni (" <<
name <<
")" << std::endl;
1861 <<
"Too Many Eta Cuts for calo-condition (" << particle <<
")" << std::endl;
1868 phiWindow1Lower =
cut.getMinimum().index;
1869 phiWindow1Upper =
cut.getMaximum().index;
1870 }
else if (cntPhi == 1) {
1871 phiWindow2Lower =
cut.getMinimum().index;
1872 phiWindow2Upper =
cut.getMaximum().index;
1875 <<
"Too Many Phi Cuts for calo-condition (" << particle <<
")" << std::endl;
1883 edm::LogError(
"TriggerMenuParser") <<
"No charge cut for calo-condition (" << particle <<
")" << std::endl;
1888 qualityLUT = l1tstr2int(
cut.getData());
1891 case esCutType::Displaced: {
1892 displacedLUT = l1tstr2int(
cut.getData());
1895 case esCutType::Isolation: {
1896 isolationLUT = l1tstr2int(
cut.getData());
1906 objParameter[cnt].etHighThreshold = upperThresholdInd;
1907 objParameter[cnt].etLowThreshold = lowerThresholdInd;
1908 objParameter[cnt].indexHigh = upperIndexInd;
1909 objParameter[cnt].indexLow = lowerIndexInd;
1910 objParameter[cnt].etaWindows = etaWindows;
1911 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
1912 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
1913 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
1914 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
1915 objParameter[cnt].isolationLUT = isolationLUT;
1916 objParameter[cnt].qualityLUT = qualityLUT;
1917 objParameter[cnt].displacedLUT = displacedLUT;
1921 std::ostringstream oss;
1922 oss <<
"\n Calo ET high thresholds (hex) for calo object " << caloObjType <<
" " << cnt <<
" = " << std::hex
1923 << objParameter[cnt].etLowThreshold <<
" - " << objParameter[cnt].etHighThreshold;
1924 for (
const auto&
window : objParameter[cnt].etaWindows) {
1925 oss <<
"\n etaWindow Lower / Upper for calo object " << cnt <<
" = 0x" <<
window.lower <<
" / 0x" 1928 oss <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x" << objParameter[cnt].phiWindow1Lower
1929 <<
" / 0x" << objParameter[cnt].phiWindow1Upper <<
"\n phiWindowVeto Lower / Upper for calo object " 1930 << cnt <<
" = 0x" << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper
1931 <<
"\n Isolation LUT for calo object " << cnt <<
" = 0x" << objParameter[cnt].isolationLUT
1932 <<
"\n Quality LUT for calo object " << cnt <<
" = 0x" << objParameter[cnt].qualityLUT
1933 <<
"\n LLP DISP LUT for calo object " << cnt <<
" = 0x" << objParameter[cnt].displacedLUT;
1934 LogDebug(
"TriggerMenuParser") << oss.str() << std::endl;
1941 std::vector<GlobalObject>
objType(nrObj, caloObjType);
1959 std::ostringstream myCoutStream;
1960 caloCond.
print(myCoutStream);
1961 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1965 if (!insertConditionIntoMap(caloCond, chipNr)) {
1966 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
1971 (m_corCaloTemplate[chipNr]).
push_back(caloCond);
1973 (m_vecCaloTemplate[chipNr]).
push_back(caloCond);
2003 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 2004 <<
"\n (in parseCalo) " 2005 <<
"\n condition = " << condition <<
"\n particle = " << particle
2006 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
2015 if (corrCalo->
getType() == esObjectType::Egamma) {
2018 caloObjType =
gtJet;
2020 caloObjType =
gtTau;
2022 edm::LogError(
"TriggerMenuParser") <<
"Wrong particle for calo-condition (" << particle <<
")" << std::endl;
2029 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for calo-condition (" <<
type <<
")" 2030 <<
"\nCan not determine number of trigger objects. " << std::endl;
2037 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
2043 std::vector<uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
2044 tmpValues.reserve(nrObj);
2056 int upperThresholdInd = -1;
2057 int lowerThresholdInd = 0;
2058 int upperIndexInd = -1;
2059 int lowerIndexInd = 0;
2061 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
2062 int isolationLUT = 0xF;
2063 int qualityLUT = 0xF;
2064 int displacedLUT = 0x0;
2068 std::vector<CaloTemplate::Window> etaWindows;
2070 const std::vector<L1TUtmCut>&
cuts = corrCalo->
getCuts();
2071 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2074 switch (
cut.getCutType()) {
2076 lowerThresholdInd =
cut.getMinimum().index;
2077 upperThresholdInd =
cut.getMaximum().index;
2079 case esCutType::Slice:
2080 lowerIndexInd =
int(
cut.getMinimum().value);
2081 upperIndexInd =
int(
cut.getMaximum().value);
2083 case esCutType::Eta: {
2084 if (etaWindows.size() < 5) {
2085 if ((
cut.getMinimum().index <=
cut.getMaximum().index) ^
2086 ((
cut.getMinimum().index <= 127) ^ (
cut.getMaximum().index <= 127))) {
2087 etaWindows.push_back({
cut.getMinimum().index,
cut.getMaximum().index});
2089 edm::LogError(
"TriggerMenuParser") <<
"Invalid Eta Window for calo-condition (" <<
name <<
")" << std::endl;
2093 <<
"Too Many Eta Cuts for calo-condition (" << particle <<
")" << std::endl;
2100 phiWindow1Lower =
cut.getMinimum().index;
2101 phiWindow1Upper =
cut.getMaximum().index;
2102 }
else if (cntPhi == 1) {
2103 phiWindow2Lower =
cut.getMinimum().index;
2104 phiWindow2Upper =
cut.getMaximum().index;
2107 <<
"Too Many Phi Cuts for calo-condition (" << particle <<
")" << std::endl;
2115 edm::LogError(
"TriggerMenuParser") <<
"No charge cut for calo-condition (" << particle <<
")" << std::endl;
2120 qualityLUT = l1tstr2int(
cut.getData());
2123 case esCutType::Displaced: {
2124 displacedLUT = l1tstr2int(
cut.getData());
2127 case esCutType::Isolation: {
2128 isolationLUT = l1tstr2int(
cut.getData());
2138 objParameter[0].etLowThreshold = lowerThresholdInd;
2139 objParameter[0].etHighThreshold = upperThresholdInd;
2140 objParameter[0].indexHigh = upperIndexInd;
2141 objParameter[0].indexLow = lowerIndexInd;
2142 objParameter[0].etaWindows = etaWindows;
2143 objParameter[0].phiWindow1Lower = phiWindow1Lower;
2144 objParameter[0].phiWindow1Upper = phiWindow1Upper;
2145 objParameter[0].phiWindow2Lower = phiWindow2Lower;
2146 objParameter[0].phiWindow2Upper = phiWindow2Upper;
2147 objParameter[0].isolationLUT = isolationLUT;
2148 objParameter[0].qualityLUT = qualityLUT;
2149 objParameter[0].displacedLUT = displacedLUT;
2153 std::ostringstream oss;
2154 oss <<
"\n Calo ET high threshold (hex) for calo object " << caloObjType <<
" " 2155 <<
" = " << std::hex << objParameter[0].etLowThreshold <<
" - " << objParameter[0].etHighThreshold;
2156 for (
const auto&
window : objParameter[0].etaWindows) {
2157 oss <<
"\n etaWindow Lower / Upper for calo object " 2160 oss <<
"\n phiWindow Lower / Upper for calo object " 2161 <<
" = 0x" << objParameter[0].phiWindow1Lower <<
" / 0x" << objParameter[0].phiWindow1Upper
2162 <<
"\n phiWindowVeto Lower / Upper for calo object " 2163 <<
" = 0x" << objParameter[0].phiWindow2Lower <<
" / 0x" << objParameter[0].phiWindow2Upper
2164 <<
"\n Isolation LUT for calo object " 2165 <<
" = 0x" << objParameter[0].isolationLUT <<
"\n Quality LUT for calo object " 2166 <<
" = 0x" << objParameter[0].qualityLUT <<
"\n LLP DISP LUT for calo object " 2167 <<
" = 0x" << objParameter[0].displacedLUT;
2168 LogDebug(
"TriggerMenuParser") << oss.str() << std::endl;
2172 std::vector<GlobalObject>
objType(nrObj, caloObjType);
2190 std::ostringstream myCoutStream;
2191 caloCond.
print(myCoutStream);
2192 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2209 (m_corCaloTemplate[chipNr]).
push_back(caloCond);
2236 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 2237 <<
"\n (in parseEnergySum) " 2238 <<
"\n condition = " << condition <<
"\n type = " <<
type 2239 <<
"\n name = " <<
name << std::endl;
2245 if (condEnergySum.
getType() == esConditionType::MissingEt) {
2248 }
else if (condEnergySum.
getType() == esConditionType::TotalEt) {
2251 }
else if (condEnergySum.
getType() == esConditionType::TotalEtEM) {
2254 }
else if (condEnergySum.
getType() == esConditionType::TotalHt) {
2257 }
else if (condEnergySum.
getType() == esConditionType::MissingHt) {
2260 }
else if (condEnergySum.
getType() == esConditionType::MissingEtHF) {
2263 }
else if (condEnergySum.
getType() == esConditionType::MissingHtHF) {
2266 }
else if (condEnergySum.
getType() == esConditionType::TowerCount) {
2269 }
else if (condEnergySum.
getType() == esConditionType::MinBiasHFP0) {
2272 }
else if (condEnergySum.
getType() == esConditionType::MinBiasHFM0) {
2275 }
else if (condEnergySum.
getType() == esConditionType::MinBiasHFP1) {
2278 }
else if (condEnergySum.
getType() == esConditionType::MinBiasHFM1) {
2281 }
else if (condEnergySum.
getType() == esConditionType::AsymmetryEt) {
2284 }
else if (condEnergySum.
getType() == esConditionType::AsymmetryHt) {
2287 }
else if (condEnergySum.
getType() == esConditionType::AsymmetryEtHF) {
2290 }
else if (condEnergySum.
getType() == esConditionType::AsymmetryHtHF) {
2293 }
else if (condEnergySum.
getType() == esConditionType::Centrality0) {
2296 }
else if (condEnergySum.
getType() == esConditionType::Centrality1) {
2299 }
else if (condEnergySum.
getType() == esConditionType::Centrality2) {
2302 }
else if (condEnergySum.
getType() == esConditionType::Centrality3) {
2305 }
else if (condEnergySum.
getType() == esConditionType::Centrality4) {
2308 }
else if (condEnergySum.
getType() == esConditionType::Centrality5) {
2311 }
else if (condEnergySum.
getType() == esConditionType::Centrality6) {
2314 }
else if (condEnergySum.
getType() == esConditionType::Centrality7) {
2318 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for energy-sum condition (" <<
type <<
")" << std::endl;
2330 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
2344 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
2347 relativeBx =
object.getBxOffset();
2350 int lowerThresholdInd = 0;
2351 int upperThresholdInd = -1;
2353 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
2355 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
2356 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2359 switch (
cut.getCutType()) {
2361 lowerThresholdInd =
cut.getMinimum().index;
2362 upperThresholdInd =
cut.getMaximum().index;
2365 case esCutType::Eta:
2370 phiWindow1Lower =
cut.getMinimum().index;
2371 phiWindow1Upper =
cut.getMaximum().index;
2372 }
else if (cntPhi == 1) {
2373 phiWindow2Lower =
cut.getMinimum().index;
2374 phiWindow2Upper =
cut.getMaximum().index;
2376 edm::LogError(
"TriggerMenuParser") <<
"Too Many Phi Cuts for esum-condition (" <<
type <<
")" << std::endl;
2383 case esCutType::Count:
2384 lowerThresholdInd =
cut.getMinimum().index;
2385 upperThresholdInd = 0xffffff;
2395 objParameter[cnt].etLowThreshold = lowerThresholdInd;
2396 objParameter[cnt].etHighThreshold = upperThresholdInd;
2397 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
2398 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
2399 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
2400 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
2403 LogDebug(
"TriggerMenuParser") <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = " 2404 << std::hex << objParameter[cnt].etLowThreshold <<
" - " 2405 << objParameter[cnt].etHighThreshold
2406 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x" 2407 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
2408 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x" 2409 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper
2416 std::vector<GlobalObject>
objType(nrObj, energySumObjType);
2431 std::ostringstream myCoutStream;
2432 energySumCond.
print(myCoutStream);
2433 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2437 if (!insertConditionIntoMap(energySumCond, chipNr)) {
2438 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
2443 (m_corEnergySumTemplate[chipNr]).
push_back(energySumCond);
2446 (m_vecEnergySumTemplate[chipNr]).
push_back(energySumCond);
2466 unsigned int chipNr,
2467 const bool corrFlag) {
2478 <<
"\n ******************************************\n (in parseEnergySumZdc)\n condition = " << condition
2479 <<
"\n type = " <<
type <<
"\n name = " <<
name;
2485 if (condEnergySumZdc.
getType() == esConditionType::ZDCPlus) {
2486 LogDebug(
"TriggerMenuParser") <<
"ZDC signals: esConditionType::ZDCPlus " << std::endl;
2489 }
else if (condEnergySumZdc.
getType() == esConditionType::ZDCMinus) {
2490 LogDebug(
"TriggerMenuParser") <<
"ZDC signals: esConditionType::ZDCMinus " << std::endl;
2494 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for ZDC energy-sum condition (" <<
type <<
")" << std::endl;
2502 std::vector<EnergySumZdcTemplate::ObjectParameter> objParameter(nrObj);
2505 int lowerThresholdInd = 0;
2506 int upperThresholdInd = -1;
2520 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
2523 relativeBx =
object.getBxOffset();
2526 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
2527 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2530 switch (
cut.getCutType()) {
2532 lowerThresholdInd =
cut.getMinimum().index;
2533 upperThresholdInd =
cut.getMaximum().index;
2536 case esCutType::Count:
2537 lowerThresholdInd =
cut.getMinimum().index;
2538 upperThresholdInd = 0xffffff;
2548 objParameter[cnt].etLowThreshold = lowerThresholdInd;
2549 objParameter[cnt].etHighThreshold = upperThresholdInd;
2552 LogDebug(
"TriggerMenuParser") <<
"\n EnergySumZdc ET high threshold (hex) for energy sum object " << cnt
2553 <<
" = " << std::hex << objParameter[cnt].etLowThreshold <<
" - " 2554 << objParameter[cnt].etHighThreshold <<
std::dec;
2560 std::vector<GlobalObject>
objType(nrObj, energySumObjType);
2575 std::ostringstream myCoutStream;
2576 energySumCond.
print(myCoutStream);
2577 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2581 if (!insertConditionIntoMap(energySumCond, chipNr)) {
2582 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
2586 (m_vecEnergySumZdcTemplate[chipNr]).
push_back(energySumCond);
2613 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 2614 <<
"\n (in parseEnergySum) " 2615 <<
"\n condition = " << condition <<
"\n type = " <<
type 2616 <<
"\n name = " <<
name << std::endl;
2628 }
else if (corrESum->
getType() == esObjectType::ETMHF) {
2631 }
else if (corrESum->
getType() == esObjectType::HTMHF) {
2634 }
else if (corrESum->
getType() == esObjectType::TOWERCOUNT) {
2638 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for energy-sum correclation condition (" <<
type <<
")" 2651 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
2667 int lowerThresholdInd = 0;
2668 int upperThresholdInd = -1;
2670 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
2672 const std::vector<L1TUtmCut>&
cuts = corrESum->
getCuts();
2673 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2676 switch (
cut.getCutType()) {
2678 lowerThresholdInd =
cut.getMinimum().index;
2679 upperThresholdInd =
cut.getMaximum().index;
2682 case esCutType::Eta:
2687 phiWindow1Lower =
cut.getMinimum().index;
2688 phiWindow1Upper =
cut.getMaximum().index;
2689 }
else if (cntPhi == 1) {
2690 phiWindow2Lower =
cut.getMinimum().index;
2691 phiWindow2Upper =
cut.getMaximum().index;
2693 edm::LogError(
"TriggerMenuParser") <<
"Too Many Phi Cuts for esum-condition (" <<
type <<
")" << std::endl;
2707 objParameter[0].etLowThreshold = lowerThresholdInd;
2708 objParameter[0].etHighThreshold = upperThresholdInd;
2709 objParameter[0].phiWindow1Lower = phiWindow1Lower;
2710 objParameter[0].phiWindow1Upper = phiWindow1Upper;
2711 objParameter[0].phiWindow2Lower = phiWindow2Lower;
2712 objParameter[0].phiWindow2Upper = phiWindow2Upper;
2715 LogDebug(
"TriggerMenuParser") <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = " 2716 << std::hex << objParameter[0].etLowThreshold <<
" - " << objParameter[0].etLowThreshold
2717 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x" 2718 << objParameter[0].phiWindow1Lower <<
" / 0x" << objParameter[0].phiWindow1Upper
2719 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x" 2720 << objParameter[0].phiWindow2Lower <<
" / 0x" << objParameter[0].phiWindow2Upper
2724 std::vector<GlobalObject>
objType(nrObj, energySumObjType);
2739 std::ostringstream myCoutStream;
2740 energySumCond.
print(myCoutStream);
2741 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2759 (m_corEnergySumTemplate[chipNr]).
push_back(energySumCond);
2784 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
2785 <<
" (in parseAXOL1TL) " << std::endl
2786 <<
" condition = " << condition << std::endl
2787 <<
" type = " <<
type << std::endl
2788 <<
" name = " <<
name << std::endl;
2790 const int nrObj = 1;
2793 std::vector<AXOL1TLTemplate::ObjectParameter> objParameter(nrObj);
2795 if (
int(condAXOL1TL.
getObjects().size()) != nrObj) {
2796 edm::LogError(
"TriggerMenuParser") <<
" condAXOL1TL objects: nrObj = " << nrObj
2797 <<
"condAXOL1TL.getObjects().size() = " << condAXOL1TL.
getObjects().size()
2804 int relativeBx =
object.getBxOffset();
2805 bool gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
2808 int lowerThresholdInd = 0;
2809 int upperThresholdInd = -1;
2815 if (
object.getType() == tmeventsetup::Axol1tl) {
2816 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
2817 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2821 if (
cut.getCutType() == tmeventsetup::Model) {
2825 else if (
cut.getCutType() == esCutType::Score) {
2826 lowerThresholdInd =
cut.getMinimum().value;
2827 upperThresholdInd =
cut.getMaximum().value;
2833 else if (condAXOL1TL.
getType() == esConditionType::AnomalyDetectionTrigger) {
2837 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
2838 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2840 if (
cut.getCutType() == esCutType::AnomalyScore) {
2841 lowerThresholdInd =
cut.getMinimum().value;
2842 upperThresholdInd =
cut.getMaximum().value;
2847 edm::LogError(
"TriggerMenuParser") <<
" Error: not a proper AXOL1TL condition" << std::endl;
2853 edm::LogError(
"TriggerMenuParser") <<
" Error: AXOL1TL movel version is empty" << std::endl;
2858 objParameter[0].minAXOL1TLThreshold = lowerThresholdInd;
2859 objParameter[0].maxAXOL1TLThreshold = upperThresholdInd;
2871 std::ostringstream myCoutStream;
2872 axol1tlCond.
print(myCoutStream);
2873 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2877 if (!insertConditionIntoMap(axol1tlCond, chipNr)) {
2878 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate AXOL1TL condition (" <<
name <<
")" << std::endl;
2882 (m_vecAXOL1TLTemplate[chipNr]).
push_back(axol1tlCond);
2907 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** " 2908 <<
"\n (in parseExternal) " 2909 <<
"\n condition = " << condition <<
"\n particle = " << particle
2910 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
2919 unsigned int channelID = 0;
2925 if (
object.getType() == esObjectType::EXT) {
2926 relativeBx =
object.getBxOffset();
2927 channelID =
object.getExternalChannelId();
2935 std::vector<GlobalObject>
objType(nrObj, extSignalType);
2947 LogTrace(
"TriggerMenuParser") << externalCond <<
"\n" << std::endl;
2950 if (!insertConditionIntoMap(externalCond, chipNr)) {
2951 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
2955 (m_vecExternalTemplate[chipNr]).
push_back(externalCond);
2969 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
2970 <<
" (in parseCICADA) " << std::endl
2971 <<
" condition = " << condition << std::endl
2972 <<
" type = " <<
type << std::endl
2973 <<
" name = " <<
name << std::endl;
2974 const int nrObj = 1;
2977 std::vector<CICADATemplate::ObjectParameter> objParameter(nrObj);
2979 if (
int(condCICADA.
getObjects().size()) != nrObj) {
2980 edm::LogError(
"TriggerMenuParser") <<
" condCICADA objects: nrObj = " << nrObj
2981 <<
"condCICADA.getObjects().size() = " << condCICADA.
getObjects().size()
2987 int relativeBx =
object.getBxOffset();
2988 bool gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
2990 float lowerThresholdInd = 0;
2991 float upperThresholdInd = -1;
2993 const std::vector<L1TUtmCut>&
cuts =
object.getCuts();
2994 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2997 switch (
cut.getCutType()) {
2998 case esCutType::CicadaScore:
2999 lowerThresholdInd =
cut.getMinimum().value;
3000 upperThresholdInd =
cut.getMaximum().value;
3004 objParameter[0].minCICADAThreshold = lowerThresholdInd;
3005 objParameter[0].maxCICADAThreshold = upperThresholdInd;
3015 std::ostringstream myCoutStream;
3016 cicadaCond.
print(myCoutStream);
3017 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3020 if (!insertConditionIntoMap(cicadaCond, chipNr)) {
3021 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate CICADA condition (" <<
name <<
")" << std::endl;
3025 (m_vecCICADATemplate[chipNr]).
push_back(cicadaCond);
3049 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
3050 <<
" (in parseCorrelation) " << std::endl
3051 <<
" condition = " << condition << std::endl
3052 <<
" particle = " << particle << std::endl
3053 <<
" type = " <<
type << std::endl
3054 <<
" name = " <<
name << std::endl;
3060 if (!insertConditionIntoMap(correlationCond, chipNr)) {
3061 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate correlation condition (" <<
name <<
")" << std::endl;
3072 const int nrObj = 2;
3075 int intGEq[nrObj] = {-1, -1};
3076 std::vector<GlobalObject>
objType(nrObj);
3077 std::vector<GtConditionCategory> condCateg(nrObj);
3080 const bool corrFlag =
true;
3081 int corrIndexVal[nrObj] = {-1, -1};
3089 const std::vector<L1TUtmCut>&
cuts = corrCond.
getCuts();
3090 for (
size_t jj = 0;
jj <
cuts.size();
jj++) {
3093 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
3094 if (
cut.getData() ==
"ls")
3096 else if (
cut.getData() ==
"os")
3104 double minV =
cut.getMinimum().value;
3105 double maxV =
cut.getMaximum().value;
3112 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tDeltaEta Cut minV = " << minV
3113 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3114 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3118 cutType = cutType | 0x1;
3120 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tDeltaPhi Cut minV = " << minV
3121 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3122 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3126 cutType = cutType | 0x2;
3128 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tDeltaR Cut minV = " << minV
3129 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3130 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3134 cutType = cutType | 0x4;
3135 }
else if (
cut.getCutType() == esCutType::TwoBodyPt) {
3139 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tTPBT Cut minV = " << minV
3140 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3141 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3142 cutType = cutType | 0x20;
3144 (
cut.getCutType() == esCutType::MassDeltaR)) {
3145 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tMass Cut minV = " << minV
3146 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3147 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3152 if (corrCond.
getType() == esConditionType::TransverseMass) {
3153 cutType = cutType | 0x10;
3154 }
else if (corrCond.
getType() == esConditionType::InvariantMassDeltaR) {
3155 cutType = cutType | 0x80;
3157 cutType = cutType | 0x8;
3159 }
else if (
cut.getCutType() == esCutType::MassUpt) {
3160 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tMass Cut minV = " << minV
3161 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3162 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3166 cutType = cutType | 0x40;
3175 edm::LogError(
"TriggerMenuParser") <<
"incorrect number of objects for the correlation condition " <<
name 3176 <<
" corrFlag " << corrFlag << std::endl;
3183 LogDebug(
"TriggerMenuParser") <<
" obj name = " <<
object.getName() <<
"\n";
3184 LogDebug(
"TriggerMenuParser") <<
" obj type = " <<
object.getType() <<
"\n";
3185 LogDebug(
"TriggerMenuParser") <<
" obj op = " <<
object.getComparisonOperator() <<
"\n";
3186 LogDebug(
"TriggerMenuParser") <<
" obj bx = " <<
object.getBxOffset() <<
"\n";
3223 parseMuonCorr(&
object, chipNr);
3224 corrIndexVal[
jj] = (m_corMuonTemplate[chipNr]).size() - 1;
3227 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
3231 }
else if (
object.getType() == esObjectType::Egamma ||
object.getType() ==
esObjectType::Jet ||
3234 parseCaloCorr(&
object, chipNr);
3235 corrIndexVal[
jj] = (m_corCaloTemplate[chipNr]).size() - 1;
3238 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
3239 switch (
object.getType()) {
3240 case esObjectType::Egamma: {
3254 }
else if (
object.getType() ==
esObjectType::ETM ||
object.getType() == esObjectType::ETMHF ||
3255 object.getType() == esObjectType::HTMHF ||
object.getType() == esObjectType::TOWERCOUNT ||
3258 parseEnergySumCorr(&
object, chipNr);
3259 corrIndexVal[
jj] = (m_corEnergySumTemplate[chipNr]).size() - 1;
3262 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
3263 switch (
object.getType()) {
3270 case esObjectType::ETMHF: {
3273 case esObjectType::HTMHF: {
3276 case esObjectType::TOWERCOUNT: {
3285 edm::LogError(
"TriggerMenuParser") <<
"Illegal Object Type " <<
object.getType()
3286 <<
" for the correlation condition " <<
name << std::endl;
3295 if (intGEq[0] != intGEq[1]) {
3296 edm::LogError(
"TriggerMenuParser") <<
"Inconsistent GEq flags for sub-conditions " 3297 <<
" for the correlation condition " <<
name << std::endl;
3301 gEq = (intGEq[0] != 0);
3319 std::ostringstream myCoutStream;
3320 correlationCond.
print(myCoutStream);
3321 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3327 (m_vecCorrelationTemplate[chipNr]).
push_back(correlationCond);
3353 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
3354 <<
" (in parseCorrelationThreeBody) " << std::endl
3355 <<
" condition = " << condition << std::endl
3356 <<
" particle = " << particle << std::endl
3357 <<
" type = " <<
type << std::endl
3358 <<
" name = " <<
name << std::endl;
3364 if (!insertConditionIntoMap(correlationThreeBodyCond, chipNr)) {
3365 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate correlation condition (" <<
name <<
")" << std::endl;
3373 const int nrObj = 3;
3376 std::vector<GlobalObject>
objType(nrObj);
3377 std::vector<GtConditionCategory> condCateg(nrObj);
3380 const bool corrFlag =
true;
3381 int corrIndexVal[nrObj] = {-1, -1, -1};
3391 const std::vector<L1TUtmCut>&
cuts = corrCond.
getCuts();
3392 for (
size_t lll = 0; lll <
cuts.size(); lll++) {
3395 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
3396 if (
cut.getData() ==
"ls")
3398 else if (
cut.getData() ==
"os")
3407 double minV =
cut.getMinimum().value;
3408 double maxV =
cut.getMaximum().value;
3414 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tMass Cut minV = " << minV
3415 <<
"\tMass Cut maxV = " << maxV <<
" precMin = " <<
cut.getMinimum().index
3416 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
3420 cutType = cutType | 0x8;
3421 }
else if (
cut.getCutType() == esCutType::MassDeltaR) {
3425 cutType = cutType | 0x80;
3433 edm::LogError(
"TriggerMenuParser") <<
"incorrect number of objects for the correlation condition " <<
name 3434 <<
" corrFlag " << corrFlag << std::endl;
3439 for (
size_t lll = 0; lll <
objects.size(); lll++) {
3441 LogDebug(
"TriggerMenuParser") <<
" obj name = " <<
object.getName() <<
"\n";
3442 LogDebug(
"TriggerMenuParser") <<
" obj type = " <<
object.getType() <<
"\n";
3443 LogDebug(
"TriggerMenuParser") <<
" obj bx = " <<
object.getBxOffset() <<
"\n";
3448 parseMuonCorr(&
object, chipNr);
3449 corrIndexVal[lll] = (m_corMuonTemplate[chipNr]).size() - 1;
3456 edm::LogError(
"TriggerMenuParser") <<
"Checked the object Type " <<
object.getType()
3457 <<
" for the correlation condition " <<
name 3458 <<
": no three muons in the event!" << std::endl;
3478 std::ostringstream myCoutStream;
3479 correlationThreeBodyCond.
print(myCoutStream);
3480 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3486 (m_vecCorrelationThreeBodyTemplate[chipNr]).
push_back(correlationThreeBodyCond);
3512 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
3513 <<
" (in parseCorrelationWithOverlapRemoval) " << std::endl
3514 <<
" condition = " << condition << std::endl
3515 <<
" particle = " << particle << std::endl
3516 <<
" type = " <<
type << std::endl
3517 <<
" name = " <<
name << std::endl;
3523 if (!insertConditionIntoMap(correlationWORCond, chipNr)) {
3524 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate correlation condition (" <<
name <<
")" << std::endl;
3535 const int nrObj = 3;
3538 int intGEq[nrObj] = {-1, -1, -1};
3539 std::vector<GlobalObject>
objType(nrObj);
3540 std::vector<GtConditionCategory> condCateg(nrObj);
3543 const bool corrFlag =
true;
3544 int corrIndexVal[nrObj] = {-1, -1, -1};
3552 const std::vector<L1TUtmCut>&
cuts = corrCond.
getCuts();
3553 for (
size_t jj = 0;
jj <
cuts.size();
jj++) {
3556 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
3557 if (
cut.getData() ==
"ls")
3559 else if (
cut.getData() ==
"os")
3567 double minV =
cut.getMinimum().value;
3568 double maxV =
cut.getMaximum().value;
3579 cutType = cutType | 0x1;
3585 cutType = cutType | 0x2;
3591 cutType = cutType | 0x4;
3597 cutType = cutType | 0x8;
3598 }
else if (
cut.getCutType() == esCutType::MassDeltaR) {
3602 cutType = cutType | 0x80;
3604 if (
cut.getCutType() == esCutType::OvRmDeltaEta) {
3609 cutType = cutType | 0x10;
3610 }
else if (
cut.getCutType() == esCutType::OvRmDeltaPhi) {
3615 cutType = cutType | 0x20;
3616 }
else if (
cut.getCutType() == esCutType::OvRmDeltaR) {
3621 cutType = cutType | 0x40;
3631 <<
"incorrect number of objects for the correlation condition with overlap removal " <<
name <<
" corrFlag " 3632 << corrFlag << std::endl;
3639 LogDebug(
"TriggerMenuParser") <<
" obj name = " <<
object.getName() <<
"\n";
3640 LogDebug(
"TriggerMenuParser") <<
" obj type = " <<
object.getType() <<
"\n";
3641 LogDebug(
"TriggerMenuParser") <<
" obj op = " <<
object.getComparisonOperator() <<
"\n";
3642 LogDebug(
"TriggerMenuParser") <<
" obj bx = " <<
object.getBxOffset() <<
"\n";
3643 LogDebug(
"TriggerMenuParser") <<
"type = done" << std::endl;
3680 parseMuonCorr(&
object, chipNr);
3681 corrIndexVal[
jj] = (m_corMuonTemplate[chipNr]).size() - 1;
3684 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
3688 }
else if (
object.getType() == esObjectType::Egamma ||
object.getType() ==
esObjectType::Jet ||
3691 parseCaloCorr(&
object, chipNr);
3692 corrIndexVal[
jj] = (m_corCaloTemplate[chipNr]).size() - 1;
3695 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
3696 switch (
object.getType()) {
3697 case esObjectType::Egamma: {
3711 }
else if (
object.getType() ==
esObjectType::ETM ||
object.getType() == esObjectType::ETMHF ||
3712 object.getType() == esObjectType::HTMHF ||
object.getType() == esObjectType::TOWERCOUNT ||
3715 parseEnergySumCorr(&
object, chipNr);
3716 corrIndexVal[
jj] = (m_corEnergySumTemplate[chipNr]).size() - 1;
3719 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
3720 switch (
object.getType()) {
3727 case esObjectType::ETMHF: {
3730 case esObjectType::HTMHF: {
3733 case esObjectType::TOWERCOUNT: {
3742 edm::LogError(
"TriggerMenuParser") <<
"Illegal Object Type " <<
object.getType()
3743 <<
" for the correlation condition " <<
name << std::endl;
3752 if (intGEq[0] != intGEq[1]) {
3753 edm::LogError(
"TriggerMenuParser") <<
"Inconsistent GEq flags for sub-conditions " 3754 <<
" for the correlation condition " <<
name << std::endl;
3758 gEq = (intGEq[0] != 0);
3778 std::ostringstream myCoutStream;
3779 correlationWORCond.
print(myCoutStream);
3780 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3786 (m_vecCorrelationWithOverlapRemovalTemplate[chipNr]).
push_back(correlationWORCond);
3808 if (algAlias.empty()) {
3810 LogDebug(
"TriggerMenuParser") <<
"\n No alias defined for algorithm. Alias set to algorithm name." 3811 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
3815 LogDebug(
"TriggerMenuParser") <<
"\n Alias defined for algorithm." 3816 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
3823 LogDebug(
"TriggerMenuParser") <<
" Logical expression: " << logExpression
3824 <<
" Chip number: " << chipNr << std::endl;
3830 LogDebug(
"TriggerMenuParser") <<
" Output pin: " << outputPin << std::endl;
3845 std::ostringstream myCoutStream;
3846 alg.
print(myCoutStream);
3847 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3851 if (!insertAlgorithmIntoMap(alg)) {
unsigned int chargeCorrelation
unsigned int precOverlapRemovalPhiCut
constexpr int32_t ceil(float num)
long long maxOverlapRemovalEtaCutValue
void setCondGEq(const bool &cGEq)
void setModelVersion(const std::string &modelversion)
long long maxMassCutValue
void setAlgoAlias(const std::string &algoAliasValue)
const int getType() const
const std::vector< L1TUtmCut > & getCuts() const
void setConditionParameter(const std::vector< ObjectParameter > &objParameter)
set functions
void setCond0Index(const int &)
typedef for correlation three-body parameters
int algoBitNumber() const
get / set algorithm bit number
void setCorrelationThreeBodyParameter(const CorrelationThreeBodyParameter &corrThreeBodyParameter)
void setCond0Index(const int &)
void print(std::ostream &myCout) const override
print the condition
unsigned int chargeCorrelation
const int algoOutputPin(const int numberConditionChips, const int pinsOnConditionChip, const std::vector< int > &orderConditionChip) const
get the output pin on the condition chip for the algorithm
void setCond1Index(const int &)
void setCondType(const l1t::GtConditionType &cType)
void print(std::ostream &myCout) const override
print the condition
void setConditionParameter(const std::vector< ObjectParameter > &objParameter)
set functions
void setCorrelationParameter(const CorrelationParameter &corrParameter)
long long minMassCutValue
const std::vector< L1TUtmObject > & getObjects() const
void print(std::ostream &myCout) const override
print the condition
void print(std::ostream &myCout) const override
print condition
Log< level::Error, false > LogError
const int getComparisonOperator() const
const std::string & getName() const
void setCondRelativeBx(const int &cRelativeBx)
std::vector< std::pair< double, double > > phiBins
void setCond0Category(const l1t::GtConditionCategory &)
void print(std::ostream &myCout) const override
print the condition
void setCondChipNr(const int &cChipNr)
const int algoChipNumber() const
get / set algorithm bit number
long long minMassCutValue
void print(std::ostream &myCout) const override
print the condition
long long maxMassCutValue
void setCorrelationWithOverlapRemovalParameter(const CorrelationWithOverlapRemovalParameter &corrParameter)
const int getBxOffset() const
void setCond0Category(const l1t::GtConditionCategory &)
Container::value_type value_type
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
void setExternalChannel(unsigned int extCh)
set functions
long long minOverlapRemovalEtaCutValue
void setCond0Index(const int &)
virtual void print(std::ostream &myCout) const
print condition
const int getType() const
void print(std::ostream &myCout) const override
print the condition
long long minMassCutValue
long long minTBPTCutValue
void setCond1Category(const l1t::GtConditionCategory &)
unsigned int precOverlapRemovalEtaCut
long long minOverlapRemovalPhiCutValue
void setCond1Index(const int &)
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
unsigned int chargeCorrelation
void setConditionParameter(const std::vector< ObjectParameter > &objParameter, const CorrelationParameter &corrParameter)
set functions
const std::string & getName() const
void setObjectType(const std::vector< l1t::GlobalObject > &objType)
void setCond1Category(const l1t::GtConditionCategory &)
void setCond2Category(const l1t::GtConditionCategory &)
void setCond2Index(const int &)
long long maxOverlapRemovalDRCutValue
void setCond0Category(const l1t::GtConditionCategory &)
void print(std::ostream &myCout) const override
print the condition
void print(std::ostream &myCout) const override
print the condition
const std::vector< L1TUtmCut > & getCuts() const
unsigned int precOverlapRemovalDRCut
std::vector< std::pair< double, double > > etBins
void setAlgoChipNumber(const int algoChipNumberValue)
deadvectors [0] push_back({0.0175431, 0.538005, 6.80997, 13.29})
void setConditionParameter(const std::vector< ObjectParameter > &objParameter)
typedef for a single object template
long long maxOverlapRemovalPhiCutValue
void setConditionParameter(const std::vector< ObjectParameter > &objParameter, const CorrelationParameter &corrParameter)
set functions
typedef for correlation parameters
long long maxTBPTCutValue
char data[epos_bytes_allocation]
long long minOverlapRemovalDRCutValue
std::string const & algoAlias() const
get / set algorithm alias
std::vector< std::pair< double, double > > uptBins
void setConditionParameter(const std::vector< ObjectParameter > &)
set functions
typedef for correlation parameters
void print(std::ostream &myCout) const override
print the condition
void setCond1Category(const l1t::GtConditionCategory &)
typedef for correlation parameters
unsigned int chargeCorrelation
void setCond2Category(const l1t::GtConditionCategory &)
std::map< std::string, GlobalAlgorithm > AlgorithmMap
map containing the algorithms
if(threadIdxLocalY==0 &&threadIdxLocalX==0)
Power< A, B >::type pow(const A &a, const B &b)
void setConditionParameter(const std::vector< ObjectParameter > &)
set functions
const std::string algoName() const
get / set algorithm name
void setCond2Index(const int &)
long long maxMassCutValue
std::vector< std::pair< double, double > > etaBins
void setCond1Index(const int &)