38 #include "tmEventSetup/tmEventSetup.hh"
39 #include "tmEventSetup/esTriggerMenu.hh"
40 #include "tmEventSetup/esAlgorithm.hh"
41 #include "tmEventSetup/esCondition.hh"
42 #include "tmEventSetup/esObject.hh"
43 #include "tmEventSetup/esCut.hh"
44 #include "tmEventSetup/esScale.hh"
45 #include "tmGrammar/Algorithm.hh"
50 : m_triggerMenuInterface(
"NULL"),
51 m_triggerMenuName(
"NULL"),
52 m_triggerMenuImplementation(0x0),
66 m_numberConditionChips = numberConditionChipsValue;
71 m_pinsOnConditionChip = pinsOnConditionChipValue;
77 m_orderConditionChip = orderConditionChipValue;
82 m_numberPhysTriggers = numberPhysTriggersValue;
90 m_triggerMenuInterface = menuInterface;
99 m_triggerMenuImplementation = menuImplementation;
107 m_vecMuonTemplate = vecMuonTempl;
111 m_vecCaloTemplate = vecCaloTempl;
115 const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTempl) {
116 m_vecEnergySumTemplate = vecEnergySumTempl;
120 const std::vector<std::vector<ExternalTemplate> >& vecExternalTempl) {
121 m_vecExternalTemplate = vecExternalTempl;
125 const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTempl) {
126 m_vecCorrelationTemplate = vecCorrelationTempl;
130 const std::vector<std::vector<CorrelationWithOverlapRemovalTemplate> >& vecCorrelationWithOverlapRemovalTempl) {
131 m_vecCorrelationWithOverlapRemovalTemplate = vecCorrelationWithOverlapRemovalTempl;
137 m_corMuonTemplate = corMuonTempl;
141 m_corCaloTemplate = corCaloTempl;
145 const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTempl) {
146 m_corEnergySumTemplate = corEnergySumTempl;
156 using namespace tmeventsetup;
157 const esTriggerMenu*
menu = reinterpret_cast<const esTriggerMenu*>(utmMenu);
158 const std::map<std::string, esCondition>& condMap =
menu->getConditionMap();
160 std::map<std::string, unsigned int> extBitMap;
163 for (std::map<std::string, esCondition>::const_iterator cit = condMap.begin(); cit != condMap.end(); cit++) {
164 const esCondition&
condition = cit->second;
165 if (
condition.getType() == esConditionType::Externals) {
170 if (
object.getType() == esObjectType::EXT) {
171 unsigned int channelID =
object.getExternalChannelId();
174 if (extBitMap.count(
name) == 0)
193 m_conditionMap.resize(m_numberConditionChips);
195 m_vecMuonTemplate.resize(m_numberConditionChips);
196 m_vecCaloTemplate.resize(m_numberConditionChips);
197 m_vecEnergySumTemplate.resize(m_numberConditionChips);
198 m_vecExternalTemplate.resize(m_numberConditionChips);
200 m_vecCorrelationTemplate.resize(m_numberConditionChips);
201 m_vecCorrelationWithOverlapRemovalTemplate.resize(m_numberConditionChips);
202 m_corMuonTemplate.resize(m_numberConditionChips);
203 m_corCaloTemplate.resize(m_numberConditionChips);
204 m_corEnergySumTemplate.resize(m_numberConditionChips);
206 using namespace tmeventsetup;
209 const esTriggerMenu*
menu = reinterpret_cast<const esTriggerMenu*>(utmMenu);
212 m_triggerMenuDescription =
menu->getComment();
213 m_triggerMenuDate =
menu->getDatetime();
214 m_triggerMenuImplementation = (getMmHashN(
menu->getFirmwareUuid()) & 0xFFFFFFFF);
215 m_triggerMenuName =
menu->getName();
216 m_triggerMenuInterface =
menu->getVersion();
217 m_triggerMenuUUID = (getMmHashN(
menu->getName()) & 0xFFFFFFFF);
219 const std::map<std::string, esAlgorithm>& algoMap =
menu->getAlgorithmMap();
220 const std::map<std::string, esCondition>& condMap =
menu->getConditionMap();
221 const std::map<std::string, esScale>& scaleMap =
menu->getScaleMap();
224 m_gtScales.setScalesName(
menu->getScaleSetName());
225 parseScales(scaleMap);
228 for (std::map<std::string, esAlgorithm>::const_iterator cit = algoMap.begin(); cit != algoMap.end(); cit++) {
233 const esAlgorithm&
algo = cit->second;
236 parseAlgorithm(
algo, chipNr);
239 const std::vector<std::string>& rpn_vec =
algo.getRpnVector();
240 for (
size_t ii = 0;
ii < rpn_vec.size();
ii++) {
250 if (
condition.getType() == esConditionType::SingleEgamma ||
251 condition.getType() == esConditionType::DoubleEgamma ||
252 condition.getType() == esConditionType::TripleEgamma ||
253 condition.getType() == esConditionType::QuadEgamma ||
condition.getType() == esConditionType::SingleTau ||
254 condition.getType() == esConditionType::DoubleTau ||
condition.getType() == esConditionType::TripleTau ||
255 condition.getType() == esConditionType::QuadTau ||
condition.getType() == esConditionType::SingleJet ||
256 condition.getType() == esConditionType::DoubleJet ||
condition.getType() == esConditionType::TripleJet ||
257 condition.getType() == esConditionType::QuadJet) {
261 }
else if (
condition.getType() == esConditionType::TotalEt ||
262 condition.getType() == esConditionType::TotalEtEM ||
263 condition.getType() == esConditionType::TotalHt ||
264 condition.getType() == esConditionType::MissingEt ||
265 condition.getType() == esConditionType::MissingHt ||
266 condition.getType() == esConditionType::MissingEtHF ||
267 condition.getType() == esConditionType::TowerCount ||
268 condition.getType() == esConditionType::MinBiasHFP0 ||
269 condition.getType() == esConditionType::MinBiasHFM0 ||
270 condition.getType() == esConditionType::MinBiasHFP1 ||
271 condition.getType() == esConditionType::MinBiasHFM1 ||
272 condition.getType() == esConditionType::AsymmetryEt ||
273 condition.getType() == esConditionType::AsymmetryHt ||
274 condition.getType() == esConditionType::AsymmetryEtHF ||
275 condition.getType() == esConditionType::AsymmetryHtHF ||
276 condition.getType() == esConditionType::Centrality0 ||
277 condition.getType() == esConditionType::Centrality1 ||
278 condition.getType() == esConditionType::Centrality2 ||
279 condition.getType() == esConditionType::Centrality3 ||
280 condition.getType() == esConditionType::Centrality4 ||
281 condition.getType() == esConditionType::Centrality5 ||
282 condition.getType() == esConditionType::Centrality6 ||
283 condition.getType() == esConditionType::Centrality7) {
284 parseEnergySum(
condition, chipNr,
false);
289 condition.getType() == esConditionType::TripleMuon ||
290 condition.getType() == esConditionType::QuadMuon) {
294 }
else if (
condition.getType() == esConditionType::MuonMuonCorrelation ||
295 condition.getType() == esConditionType::MuonEsumCorrelation ||
296 condition.getType() == esConditionType::CaloMuonCorrelation ||
297 condition.getType() == esConditionType::CaloCaloCorrelation ||
298 condition.getType() == esConditionType::CaloEsumCorrelation ||
299 condition.getType() == esConditionType::InvariantMass ||
300 condition.getType() == esConditionType::TransverseMass) {
304 }
else if (
condition.getType() == esConditionType::Externals) {
307 }
else if (
condition.getType() == esConditionType::SingleEgammaOvRm ||
308 condition.getType() == esConditionType::DoubleEgammaOvRm ||
309 condition.getType() == esConditionType::TripleEgammaOvRm ||
310 condition.getType() == esConditionType::QuadEgammaOvRm ||
311 condition.getType() == esConditionType::SingleTauOvRm ||
312 condition.getType() == esConditionType::DoubleTauOvRm ||
313 condition.getType() == esConditionType::TripleTauOvRm ||
314 condition.getType() == esConditionType::QuadTauOvRm ||
315 condition.getType() == esConditionType::SingleJetOvRm ||
316 condition.getType() == esConditionType::DoubleJetOvRm ||
317 condition.getType() == esConditionType::TripleJetOvRm ||
318 condition.getType() == esConditionType::QuadJetOvRm) {
321 <<
"SingleEgammaOvRm" << std::endl
322 <<
"DoubleEgammaOvRm" << std::endl
323 <<
"TripleEgammaOvRm" << std::endl
324 <<
"QuadEgammaOvRm" << std::endl
325 <<
"SingleTauOvRm" << std::endl
326 <<
"DoubleTauOvRm" << std::endl
327 <<
"TripleTauOvRm" << std::endl
328 <<
"QuadTauOvRm" << std::endl
329 <<
"SingleJetOvRm" << std::endl
330 <<
"DoubleJetOvRm" << std::endl
331 <<
"TripleJetOvRm" << std::endl
332 <<
"QuadJetOvRm" << std::endl
333 <<
"The above conditions types OvRm are not implemented yet in the parser. Please remove alogrithms that "
334 "use this type of condtion from L1T Menu!"
339 else if (
condition.getType() == esConditionType::CaloCaloCorrelationOvRm ||
340 condition.getType() == esConditionType::InvariantMassOvRm ||
341 condition.getType() == esConditionType::TransverseMassOvRm) {
342 parseCorrelationWithOverlapRemoval(
condition, chipNr);
357 m_triggerMenuInterfaceAuthor =
val;
361 m_triggerMenuInterfaceDescription =
val;
379 for (std::vector<ConditionMap>::iterator itCondOnChip = m_conditionMap.begin(); itCondOnChip != m_conditionMap.end();
383 itCondOnChip->clear();
387 m_algorithmMap.clear();
394 LogTrace(
"TriggerMenuParser") <<
" Trying to insert condition \"" << cName <<
"\" in the condition map."
398 if ((m_conditionMap[chipNr]).
count(cName) != 0) {
399 LogTrace(
"TriggerMenuParser") <<
" Condition " << cName <<
" already exists - not inserted!" << std::endl;
403 (m_conditionMap[chipNr])[cName] = &
cond;
404 LogTrace(
"TriggerMenuParser") <<
" OK - condition inserted!" << std::endl;
417 if (m_algorithmMap.count(algName) != 0) {
418 LogTrace(
"TriggerMenuParser") <<
" Algorithm \"" << algName
419 <<
"\"already exists in the algorithm map- not inserted!" << std::endl;
423 if (m_algorithmAliasMap.count(algAlias) != 0) {
424 LogTrace(
"TriggerMenuParser") <<
" Algorithm alias \"" << algAlias
425 <<
"\"already exists in the algorithm alias map- not inserted!" << std::endl;
432 LogTrace(
"TriggerMenuParser") <<
" Bit number " <<
bitNumber <<
" outside allowed range [0, "
433 << m_numberPhysTriggers <<
") - algorithm not inserted!" << std::endl;
438 if (m_algorithmMap.size() >= m_numberPhysTriggers) {
439 LogTrace(
"TriggerMenuParser") <<
" More than maximum allowed " << m_numberPhysTriggers
440 <<
" algorithms in the algorithm map - not inserted!" << std::endl;
446 static_cast<int>(m_numberConditionChips), static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
448 if ((chipNr < 0) || (chipNr > static_cast<int>(m_numberConditionChips))) {
449 LogTrace(
"TriggerMenuParser") <<
" Chip number " << chipNr <<
" outside allowed range [0, "
450 << m_numberConditionChips <<
") - algorithm not inserted!" << std::endl;
456 static_cast<int>(m_numberConditionChips), static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
458 if ((outputPin < 0) || (outputPin > static_cast<int>(m_pinsOnConditionChip))) {
459 LogTrace(
"TriggerMenuParser") <<
" Output pin " << outputPin <<
" outside allowed range [0, "
460 << m_pinsOnConditionChip <<
"] - algorithm not inserted!" << std::endl;
465 for (
CItAlgo itAlgo = m_algorithmMap.begin(); itAlgo != m_algorithmMap.end(); itAlgo++) {
466 int iPin = (itAlgo->second)
467 .algoOutputPin(static_cast<int>(m_numberConditionChips),
468 static_cast<int>(m_pinsOnConditionChip),
469 m_orderConditionChip);
471 int iChip = (itAlgo->second)
472 .algoChipNumber(static_cast<int>(m_numberConditionChips),
473 static_cast<int>(m_pinsOnConditionChip),
474 m_orderConditionChip);
476 if ((outputPin == iPin) && (chipNr == iChip)) {
477 LogTrace(
"TriggerMenuParser") <<
" Output pin " << outputPin <<
" is the same as for algorithm " << iName
478 <<
"\n from the same chip number " << chipNr <<
" - algorithm not inserted!"
485 m_algorithmMap[algName] = alg;
486 m_algorithmAliasMap[algAlias] = alg;
495 template <
typename T>
497 std::stringstream
ss;
502 std::stringstream
ss;
517 using namespace tmeventsetup;
532 for (std::map<std::string, esScale>::const_iterator cit = scaleMap.begin(); cit != scaleMap.end(); cit++) {
533 const esScale&
scale = cit->second;
537 scaleParam = &muScales;
539 scaleParam = &egScales;
541 scaleParam = &tauScales;
543 scaleParam = &jetScales;
545 scaleParam = &ettScales;
546 else if (
scale.getObjectType() == esObjectType::ETTEM)
547 scaleParam = &ettEmScales;
549 scaleParam = &etmScales;
550 else if (
scale.getObjectType() == esObjectType::ETMHF)
551 scaleParam = &etmHfScales;
553 scaleParam = &httScales;
555 scaleParam = &htmScales;
557 scaleParam =
nullptr;
559 if (scaleParam !=
nullptr) {
560 switch (
scale.getScaleType()) {
561 case esScaleType::EtScale: {
567 const std::vector<esBin>& binsV =
scale.getBins();
568 for (
unsigned int i = 0;
i < binsV.size();
i++) {
569 const esBin&
bin = binsV.at(
i);
570 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
571 scaleParam->
etBins.push_back(binLimits);
578 scale.getObjectType() == esObjectType::ETTEM ||
scale.getObjectType() == esObjectType::ETMHF) {
583 scale.getObjectType() == esObjectType::ETTEM) {
591 case esScaleType::EtaScale: {
597 const std::vector<esBin>& binsV =
scale.getBins();
599 for (
unsigned int i = 0;
i < binsV.size();
i++) {
600 const esBin&
bin = binsV.at(
i);
601 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
602 scaleParam->
etaBins.at(
bin.hw_index) = binLimits;
605 case esScaleType::PhiScale: {
611 const std::vector<esBin>& binsV =
scale.getBins();
613 for (
unsigned int i = 0;
i < binsV.size();
i++) {
614 const esBin&
bin = binsV.at(
i);
615 std::pair<double, double> binLimits(
bin.minimum,
bin.maximum);
616 scaleParam->
phiBins.at(
bin.hw_index) = binLimits;
627 m_gtScales.setMuonScales(muScales);
628 m_gtScales.setEGScales(egScales);
629 m_gtScales.setTauScales(tauScales);
630 m_gtScales.setJetScales(jetScales);
631 m_gtScales.setETTScales(ettScales);
632 m_gtScales.setETTEmScales(ettEmScales);
633 m_gtScales.setETMScales(etmScales);
634 m_gtScales.setETMHfScales(etmHfScales);
635 m_gtScales.setHTTScales(httScales);
636 m_gtScales.setHTMScales(htmScales);
639 bool hasPrecision =
false;
640 std::map<std::string, unsigned int> precisions;
641 getPrecisions(precisions, scaleMap);
642 for (std::map<std::string, unsigned int>::const_iterator cit = precisions.begin(); cit != precisions.end(); cit++) {
650 parseCalMuEta_LUTS(scaleMap,
"EG",
"MU");
651 parseCalMuEta_LUTS(scaleMap,
"JET",
"MU");
652 parseCalMuEta_LUTS(scaleMap,
"TAU",
"MU");
656 parseCalMuPhi_LUTS(scaleMap,
"EG",
"MU");
657 parseCalMuPhi_LUTS(scaleMap,
"JET",
"MU");
658 parseCalMuPhi_LUTS(scaleMap,
"TAU",
"MU");
659 parseCalMuPhi_LUTS(scaleMap,
"HTM",
"MU");
660 parseCalMuPhi_LUTS(scaleMap,
"ETM",
"MU");
661 parseCalMuPhi_LUTS(scaleMap,
"ETMHF",
"MU");
665 parsePt_LUTS(scaleMap,
"Mass",
"EG", precisions[
"PRECISION-EG-MU-MassPt"]);
666 parsePt_LUTS(scaleMap,
"Mass",
"MU", precisions[
"PRECISION-EG-MU-MassPt"]);
667 parsePt_LUTS(scaleMap,
"Mass",
"JET", precisions[
"PRECISION-EG-JET-MassPt"]);
668 parsePt_LUTS(scaleMap,
"Mass",
"TAU", precisions[
"PRECISION-EG-TAU-MassPt"]);
669 parsePt_LUTS(scaleMap,
"Mass",
"ETM", precisions[
"PRECISION-EG-ETM-MassPt"]);
670 parsePt_LUTS(scaleMap,
"Mass",
"ETMHF", precisions[
"PRECISION-EG-ETMHF-MassPt"]);
671 parsePt_LUTS(scaleMap,
"Mass",
"HTM", precisions[
"PRECISION-EG-HTM-MassPt"]);
675 parsePt_LUTS(scaleMap,
"TwoBody",
"EG", precisions[
"PRECISION-EG-MU-TwoBodyPt"]);
676 parsePt_LUTS(scaleMap,
"TwoBody",
"MU", precisions[
"PRECISION-EG-MU-TwoBodyPt"]);
677 parsePt_LUTS(scaleMap,
"TwoBody",
"JET", precisions[
"PRECISION-EG-JET-TwoBodyPt"]);
678 parsePt_LUTS(scaleMap,
"TwoBody",
"TAU", precisions[
"PRECISION-EG-TAU-TwoBodyPt"]);
679 parsePt_LUTS(scaleMap,
"TwoBody",
"ETM", precisions[
"PRECISION-EG-ETM-TwoBodyPt"]);
680 parsePt_LUTS(scaleMap,
"TwoBody",
"ETMHF", precisions[
"PRECISION-EG-ETMHF-TwoBodyPt"]);
681 parsePt_LUTS(scaleMap,
"TwoBody",
"HTM", precisions[
"PRECISION-EG-HTM-TwoBodyPt"]);
685 parseDeltaEta_Cosh_LUTS(
686 scaleMap,
"EG",
"EG", precisions[
"PRECISION-EG-EG-Delta"], precisions[
"PRECISION-EG-EG-Math"]);
687 parseDeltaEta_Cosh_LUTS(
688 scaleMap,
"EG",
"JET", precisions[
"PRECISION-EG-JET-Delta"], precisions[
"PRECISION-EG-JET-Math"]);
689 parseDeltaEta_Cosh_LUTS(
690 scaleMap,
"EG",
"TAU", precisions[
"PRECISION-EG-TAU-Delta"], precisions[
"PRECISION-EG-TAU-Math"]);
691 parseDeltaEta_Cosh_LUTS(
692 scaleMap,
"EG",
"MU", precisions[
"PRECISION-EG-MU-Delta"], precisions[
"PRECISION-EG-MU-Math"]);
694 parseDeltaEta_Cosh_LUTS(
695 scaleMap,
"JET",
"JET", precisions[
"PRECISION-JET-JET-Delta"], precisions[
"PRECISION-JET-JET-Math"]);
696 parseDeltaEta_Cosh_LUTS(
697 scaleMap,
"JET",
"TAU", precisions[
"PRECISION-JET-TAU-Delta"], precisions[
"PRECISION-JET-TAU-Math"]);
698 parseDeltaEta_Cosh_LUTS(
699 scaleMap,
"JET",
"MU", precisions[
"PRECISION-JET-MU-Delta"], precisions[
"PRECISION-JET-MU-Math"]);
701 parseDeltaEta_Cosh_LUTS(
702 scaleMap,
"TAU",
"TAU", precisions[
"PRECISION-TAU-TAU-Delta"], precisions[
"PRECISION-TAU-TAU-Math"]);
703 parseDeltaEta_Cosh_LUTS(
704 scaleMap,
"TAU",
"MU", precisions[
"PRECISION-TAU-MU-Delta"], precisions[
"PRECISION-TAU-MU-Math"]);
706 parseDeltaEta_Cosh_LUTS(
707 scaleMap,
"MU",
"MU", precisions[
"PRECISION-MU-MU-Delta"], precisions[
"PRECISION-MU-MU-Math"]);
711 parseDeltaPhi_Cos_LUTS(
712 scaleMap,
"EG",
"EG", precisions[
"PRECISION-EG-EG-Delta"], precisions[
"PRECISION-EG-EG-Math"]);
713 parseDeltaPhi_Cos_LUTS(
714 scaleMap,
"EG",
"JET", precisions[
"PRECISION-EG-JET-Delta"], precisions[
"PRECISION-EG-JET-Math"]);
715 parseDeltaPhi_Cos_LUTS(
716 scaleMap,
"EG",
"TAU", precisions[
"PRECISION-EG-TAU-Delta"], precisions[
"PRECISION-EG-TAU-Math"]);
717 parseDeltaPhi_Cos_LUTS(
718 scaleMap,
"EG",
"ETM", precisions[
"PRECISION-EG-ETM-Delta"], precisions[
"PRECISION-EG-ETM-Math"]);
719 parseDeltaPhi_Cos_LUTS(
720 scaleMap,
"EG",
"ETMHF", precisions[
"PRECISION-EG-ETMHF-Delta"], precisions[
"PRECISION-EG-ETMHF-Math"]);
721 parseDeltaPhi_Cos_LUTS(
722 scaleMap,
"EG",
"HTM", precisions[
"PRECISION-EG-HTM-Delta"], precisions[
"PRECISION-EG-HTM-Math"]);
723 parseDeltaPhi_Cos_LUTS(
724 scaleMap,
"EG",
"MU", precisions[
"PRECISION-EG-MU-Delta"], precisions[
"PRECISION-EG-MU-Math"]);
726 parseDeltaPhi_Cos_LUTS(
727 scaleMap,
"JET",
"JET", precisions[
"PRECISION-JET-JET-Delta"], precisions[
"PRECISION-JET-JET-Math"]);
728 parseDeltaPhi_Cos_LUTS(
729 scaleMap,
"JET",
"TAU", precisions[
"PRECISION-JET-TAU-Delta"], precisions[
"PRECISION-JET-TAU-Math"]);
730 parseDeltaPhi_Cos_LUTS(
731 scaleMap,
"JET",
"ETM", precisions[
"PRECISION-JET-ETM-Delta"], precisions[
"PRECISION-JET-ETM-Math"]);
732 parseDeltaPhi_Cos_LUTS(
733 scaleMap,
"JET",
"ETMHF", precisions[
"PRECISION-JET-ETMHF-Delta"], precisions[
"PRECISION-JET-ETMHF-Math"]);
734 parseDeltaPhi_Cos_LUTS(
735 scaleMap,
"JET",
"HTM", precisions[
"PRECISION-JET-HTM-Delta"], precisions[
"PRECISION-JET-HTM-Math"]);
736 parseDeltaPhi_Cos_LUTS(
737 scaleMap,
"JET",
"MU", precisions[
"PRECISION-JET-MU-Delta"], precisions[
"PRECISION-JET-MU-Math"]);
739 parseDeltaPhi_Cos_LUTS(
740 scaleMap,
"TAU",
"TAU", precisions[
"PRECISION-TAU-TAU-Delta"], precisions[
"PRECISION-TAU-TAU-Math"]);
741 parseDeltaPhi_Cos_LUTS(
742 scaleMap,
"TAU",
"ETM", precisions[
"PRECISION-TAU-ETM-Delta"], precisions[
"PRECISION-TAU-ETM-Math"]);
743 parseDeltaPhi_Cos_LUTS(
744 scaleMap,
"TAU",
"ETMHF", precisions[
"PRECISION-TAU-ETMHF-Delta"], precisions[
"PRECISION-TAU-ETMHF-Math"]);
745 parseDeltaPhi_Cos_LUTS(
746 scaleMap,
"TAU",
"HTM", precisions[
"PRECISION-TAU-HTM-Delta"], precisions[
"PRECISION-TAU-HTM-Math"]);
747 parseDeltaPhi_Cos_LUTS(
748 scaleMap,
"TAU",
"MU", precisions[
"PRECISION-TAU-MU-Delta"], precisions[
"PRECISION-TAU-MU-Math"]);
750 parseDeltaPhi_Cos_LUTS(
751 scaleMap,
"MU",
"ETM", precisions[
"PRECISION-MU-ETM-Delta"], precisions[
"PRECISION-MU-ETM-Math"]);
752 parseDeltaPhi_Cos_LUTS(
753 scaleMap,
"MU",
"ETMHF", precisions[
"PRECISION-MU-ETMHF-Delta"], precisions[
"PRECISION-MU-ETMHF-Math"]);
754 parseDeltaPhi_Cos_LUTS(
755 scaleMap,
"MU",
"HTM", precisions[
"PRECISION-MU-HTM-Delta"], precisions[
"PRECISION-MU-HTM-Math"]);
756 parseDeltaPhi_Cos_LUTS(
757 scaleMap,
"MU",
"MU", precisions[
"PRECISION-MU-MU-Delta"], precisions[
"PRECISION-MU-MU-Math"]);
759 parsePhi_Trig_LUTS(scaleMap,
"EG",
l1t::COS, precisions[
"PRECISION-EG-EG-Math"]);
760 parsePhi_Trig_LUTS(scaleMap,
"JET",
l1t::COS, precisions[
"PRECISION-JET-JET-Math"]);
761 parsePhi_Trig_LUTS(scaleMap,
"TAU",
l1t::COS, precisions[
"PRECISION-TAU-TAU-Math"]);
762 parsePhi_Trig_LUTS(scaleMap,
"MU",
l1t::COS, precisions[
"PRECISION-MU-MU-Math"]);
764 parsePhi_Trig_LUTS(scaleMap,
"EG",
l1t::SIN, precisions[
"PRECISION-EG-EG-Math"]);
765 parsePhi_Trig_LUTS(scaleMap,
"JET",
l1t::SIN, precisions[
"PRECISION-JET-JET-Math"]);
766 parsePhi_Trig_LUTS(scaleMap,
"TAU",
l1t::SIN, precisions[
"PRECISION-TAU-TAU-Math"]);
767 parsePhi_Trig_LUTS(scaleMap,
"MU",
l1t::SIN, precisions[
"PRECISION-MU-MU-Math"]);
780 using namespace tmeventsetup;
789 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
792 const esScale* scale1 = &scaleMap.find(scLabel1)->second;
793 const esScale* scale2 = &scaleMap.find(scLabel2)->second;
795 std::vector<long long> lut_cal_2_mu_eta;
796 getCaloMuonEtaConversionLut(lut_cal_2_mu_eta, scale1, scale2);
801 m_gtScales.setLUT_CalMuEta(lutName, lut_cal_2_mu_eta);
807 using namespace tmeventsetup;
816 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
819 const esScale* scale1 = &scaleMap.find(scLabel1)->second;
820 const esScale* scale2 = &scaleMap.find(scLabel2)->second;
822 std::vector<long long> lut_cal_2_mu_phi;
823 getCaloMuonPhiConversionLut(lut_cal_2_mu_phi, scale1, scale2);
828 m_gtScales.setLUT_CalMuPhi(lutName, lut_cal_2_mu_phi);
835 using namespace tmeventsetup;
842 if (scaleMap.find(scLabel1) == scaleMap.end())
845 const esScale* scale1 = &scaleMap.find(scLabel1)->second;
847 std::vector<long long> lut_pt;
848 getLut(lut_pt, scale1, prec);
850 m_gtScales.setLUT_Pt(lutpfx +
"_" + scLabel1, lut_pt, prec);
857 unsigned int prec2) {
858 using namespace tmeventsetup;
867 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
870 const esScale* scale1 = &scaleMap.find(scLabel1)->second;
871 const esScale* scale2 = &scaleMap.find(scLabel2)->second;
872 std::vector<double> val_delta_eta;
873 std::vector<long long> lut_delta_eta;
874 size_t n = getDeltaVector(val_delta_eta, scale1, scale2);
875 setLut(lut_delta_eta, val_delta_eta, prec1);
879 m_gtScales.setLUT_DeltaEta(lutName, lut_delta_eta, prec1);
882 std::vector<long long> lut_cosh;
883 applyCosh(val_delta_eta,
n);
884 setLut(lut_cosh, val_delta_eta, prec2);
885 m_gtScales.setLUT_Cosh(lutName, lut_cosh, prec2);
892 unsigned int prec2) {
893 using namespace tmeventsetup;
902 if (scaleMap.find(scLabel1) == scaleMap.end() || scaleMap.find(scLabel2) == scaleMap.end())
905 const esScale* scale1 = &scaleMap.find(scLabel1)->second;
906 const esScale* scale2 = &scaleMap.find(scLabel2)->second;
907 std::vector<double> val_delta_phi;
908 std::vector<long long> lut_delta_phi;
909 size_t n = getDeltaVector(val_delta_phi, scale1, scale2);
910 setLut(lut_delta_phi, val_delta_phi, prec1);
914 m_gtScales.setLUT_DeltaPhi(lutName, lut_delta_phi, prec1);
917 std::vector<long long> lut_cos;
918 applyCos(val_delta_phi,
n);
919 setLut(lut_cos, val_delta_phi, prec2);
920 m_gtScales.setLUT_Cos(lutName, lut_cos, prec2);
927 using namespace tmeventsetup;
933 if (scaleMap.find(scLabel) == scaleMap.end())
938 const esScale*
scale = &scaleMap.find(scLabel)->second;
943 const size_t bitwidth =
std::ceil(std::log10(
n) / std::log10(2));
947 for (
size_t ii = 0;
ii <
n;
ii++) {
952 std::vector<long long> lut;
955 setLut(lut,
array, prec);
956 m_gtScales.setLUT_Sin(lutName, lut, prec);
959 setLut(lut,
array, prec);
960 m_gtScales.setLUT_Cos(lutName, lut, prec);
976 using namespace tmeventsetup;
995 }
else if (condMu.getType() == esConditionType::TripleMuon) {
999 }
else if (condMu.getType() == esConditionType::QuadMuon) {
1004 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for muon-condition (" <<
type <<
")" << std::endl;
1009 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for muon-condition (" <<
type <<
")"
1010 <<
"\nCan not determine number of trigger objects. " << std::endl;
1014 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
1016 <<
"\n condition = " <<
condition <<
"\n particle = " << particle
1017 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1022 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
1028 std::vector<uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
1029 tmpValues.reserve(nrObj);
1031 if (
int(condMu.getObjects().size()) != nrObj) {
1032 edm::LogError(
"TriggerMenuParser") <<
" condMu objects: nrObj = " << nrObj
1033 <<
"condMu.getObjects().size() = " << condMu.getObjects().size() << std::endl;
1038 unsigned int chargeCorrelation = 1;
1039 const std::vector<esCut>&
cuts = condMu.getCuts();
1040 for (
size_t jj = 0;
jj <
cuts.size();
jj++) {
1042 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
1043 if (
cut.getData() ==
"ls")
1044 chargeCorrelation = 2;
1045 else if (
cut.getData() ==
"os")
1046 chargeCorrelation = 4;
1048 chargeCorrelation = 1;
1062 const std::vector<esObject>&
objects = condMu.getObjects();
1065 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
1068 relativeBx =
object.getBxOffset();
1071 int upperUnconstrainedPtInd = -1;
1072 int lowerUnconstrainedPtInd = 0;
1073 int upperImpactParameterInd = -1;
1074 int lowerImpactParameterInd = 0;
1075 int upperThresholdInd = -1;
1076 int lowerThresholdInd = 0;
1077 int upperIndexInd = -1;
1078 int lowerIndexInd = 0;
1080 unsigned int etaWindow1Lower = -1, etaWindow1Upper = -1, etaWindow2Lower = -1, etaWindow2Upper = -1;
1082 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1083 int isolationLUT = 0xF;
1084 int impactParameterLUT = 0xF;
1086 int qualityLUT = 0xFFFF;
1088 const std::vector<esCut>&
cuts =
object.getCuts();
1089 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1092 switch (
cut.getCutType()) {
1093 case esCutType::UnconstrainedPt:
1094 lowerUnconstrainedPtInd =
cut.getMinimum().index;
1095 upperUnconstrainedPtInd =
cut.getMaximum().index;
1098 case esCutType::ImpactParameter:
1099 lowerImpactParameterInd =
cut.getMinimum().index;
1100 upperImpactParameterInd =
cut.getMaximum().index;
1101 impactParameterLUT = l1tstr2int(
cut.getData());
1105 lowerThresholdInd =
cut.getMinimum().index;
1106 upperThresholdInd =
cut.getMaximum().index;
1109 case esCutType::Slice:
1110 lowerIndexInd =
int(
cut.getMinimum().value);
1111 upperIndexInd =
int(
cut.getMaximum().value);
1114 case esCutType::Eta: {
1116 etaWindow1Lower =
cut.getMinimum().index;
1117 etaWindow1Upper =
cut.getMaximum().index;
1118 }
else if (cntEta == 1) {
1119 etaWindow2Lower =
cut.getMinimum().index;
1120 etaWindow2Upper =
cut.getMaximum().index;
1123 <<
"Too Many Eta Cuts for muon-condition (" << particle <<
")" << std::endl;
1132 phiWindow1Lower =
cut.getMinimum().index;
1133 phiWindow1Upper =
cut.getMaximum().index;
1134 }
else if (cntPhi == 1) {
1135 phiWindow2Lower =
cut.getMinimum().index;
1136 phiWindow2Upper =
cut.getMaximum().index;
1139 <<
"Too Many Phi Cuts for muon-condition (" << particle <<
")" << std::endl;
1147 if (
cut.getData() ==
"positive")
1149 else if (
cut.getData() ==
"negative")
1156 qualityLUT = l1tstr2int(
cut.getData());
1159 case esCutType::Isolation: {
1160 isolationLUT = l1tstr2int(
cut.getData());
1170 objParameter[cnt].unconstrainedPtHigh = upperUnconstrainedPtInd;
1171 objParameter[cnt].unconstrainedPtLow = lowerUnconstrainedPtInd;
1172 objParameter[cnt].impactParameterHigh = upperImpactParameterInd;
1173 objParameter[cnt].impactParameterLow = lowerImpactParameterInd;
1174 objParameter[cnt].impactParameterLUT = impactParameterLUT;
1176 objParameter[cnt].ptHighThreshold = upperThresholdInd;
1177 objParameter[cnt].ptLowThreshold = lowerThresholdInd;
1179 objParameter[cnt].indexHigh = upperIndexInd;
1180 objParameter[cnt].indexLow = lowerIndexInd;
1182 objParameter[cnt].etaWindow1Lower = etaWindow1Lower;
1183 objParameter[cnt].etaWindow1Upper = etaWindow1Upper;
1184 objParameter[cnt].etaWindow2Lower = etaWindow2Lower;
1185 objParameter[cnt].etaWindow2Upper = etaWindow2Upper;
1187 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
1188 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
1189 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
1190 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
1193 objParameter[cnt].enableMip =
false;
1194 objParameter[cnt].enableIso =
false;
1195 objParameter[cnt].requestIso =
false;
1197 objParameter[cnt].charge =
charge;
1198 objParameter[cnt].qualityLUT = qualityLUT;
1199 objParameter[cnt].isolationLUT = isolationLUT;
1219 std::ostringstream myCoutStream;
1220 muonCond.
print(myCoutStream);
1221 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1225 if (!insertConditionIntoMap(muonCond, chipNr)) {
1226 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
1229 LogDebug(
"TriggerMenuParser") <<
"Added Condition " <<
name <<
" to the ConditionMap" << std::endl;
1231 (m_corMuonTemplate[chipNr]).push_back(muonCond);
1233 LogDebug(
"TriggerMenuParser") <<
"Added Condition " <<
name <<
" to the vecMuonTemplate vector" << std::endl;
1234 (m_vecMuonTemplate[chipNr]).push_back(muonCond);
1244 using namespace tmeventsetup;
1256 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for muon-condition (" <<
type <<
")"
1257 <<
"\nCan not determine number of trigger objects. " << std::endl;
1261 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
1263 <<
"\n condition = " <<
condition <<
"\n particle = " << particle
1264 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1269 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
1275 std::vector<uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
1276 tmpValues.reserve(nrObj);
1281 unsigned int chargeCorrelation = 0;
1282 if (str_chargeCorrelation ==
"ig")
1283 chargeCorrelation = 1;
1284 else if (str_chargeCorrelation ==
"ls")
1285 chargeCorrelation = 2;
1286 else if (str_chargeCorrelation ==
"os")
1287 chargeCorrelation = 4;
1297 gEq = (corrMu->getComparisonOperator() == esComparisonOperator::GE);
1300 relativeBx = corrMu->getBxOffset();
1303 int upperThresholdInd = -1;
1304 int lowerThresholdInd = 0;
1305 int upperIndexInd = -1;
1306 int lowerIndexInd = 0;
1308 unsigned int etaWindow1Lower = -1, etaWindow1Upper = -1, etaWindow2Lower = -1, etaWindow2Upper = -1;
1310 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1311 int isolationLUT = 0xF;
1313 int qualityLUT = 0xFFFF;
1315 const std::vector<esCut>&
cuts = corrMu->getCuts();
1316 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1319 switch (
cut.getCutType()) {
1321 lowerThresholdInd =
cut.getMinimum().index;
1322 upperThresholdInd =
cut.getMaximum().index;
1325 case esCutType::Slice:
1326 lowerIndexInd =
int(
cut.getMinimum().value);
1327 upperIndexInd =
int(
cut.getMaximum().value);
1330 case esCutType::Eta: {
1332 etaWindow1Lower =
cut.getMinimum().index;
1333 etaWindow1Upper =
cut.getMaximum().index;
1334 }
else if (cntEta == 1) {
1335 etaWindow2Lower =
cut.getMinimum().index;
1336 etaWindow2Upper =
cut.getMaximum().index;
1339 <<
"Too Many Eta Cuts for muon-condition (" << particle <<
")" << std::endl;
1348 phiWindow1Lower =
cut.getMinimum().index;
1349 phiWindow1Upper =
cut.getMaximum().index;
1350 }
else if (cntPhi == 1) {
1351 phiWindow2Lower =
cut.getMinimum().index;
1352 phiWindow2Upper =
cut.getMaximum().index;
1355 <<
"Too Many Phi Cuts for muon-condition (" << particle <<
")" << std::endl;
1363 if (
cut.getData() ==
"positive")
1365 else if (
cut.getData() ==
"negative")
1372 qualityLUT = l1tstr2int(
cut.getData());
1375 case esCutType::Isolation: {
1376 isolationLUT = l1tstr2int(
cut.getData());
1386 objParameter[0].ptHighThreshold = upperThresholdInd;
1387 objParameter[0].ptLowThreshold = lowerThresholdInd;
1389 objParameter[0].indexHigh = upperIndexInd;
1390 objParameter[0].indexLow = lowerIndexInd;
1392 objParameter[0].etaWindow1Lower = etaWindow1Lower;
1393 objParameter[0].etaWindow1Upper = etaWindow1Upper;
1394 objParameter[0].etaWindow2Lower = etaWindow2Lower;
1395 objParameter[0].etaWindow2Upper = etaWindow2Upper;
1397 objParameter[0].phiWindow1Lower = phiWindow1Lower;
1398 objParameter[0].phiWindow1Upper = phiWindow1Upper;
1399 objParameter[0].phiWindow2Lower = phiWindow2Lower;
1400 objParameter[0].phiWindow2Upper = phiWindow2Upper;
1403 objParameter[0].enableMip =
false;
1404 objParameter[0].enableIso =
false;
1405 objParameter[0].requestIso =
false;
1407 objParameter[0].charge =
charge;
1408 objParameter[0].qualityLUT = qualityLUT;
1409 objParameter[0].isolationLUT = isolationLUT;
1425 std::ostringstream myCoutStream;
1426 muonCond.
print(myCoutStream);
1427 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1443 (m_corMuonTemplate[chipNr]).push_back(muonCond);
1462 using namespace tmeventsetup;
1471 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
1472 <<
"\n (in parseCalo) "
1473 <<
"\n condition = " <<
condition <<
"\n particle = " << particle
1474 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1483 if (condCalo.getType() == esConditionType::SingleEgamma) {
1488 }
else if (condCalo.getType() == esConditionType::DoubleEgamma) {
1493 }
else if (condCalo.getType() == esConditionType::TripleEgamma) {
1498 }
else if (condCalo.getType() == esConditionType::QuadEgamma) {
1503 }
else if (condCalo.getType() == esConditionType::SingleJet) {
1504 caloObjType =
gtJet;
1508 }
else if (condCalo.getType() == esConditionType::DoubleJet) {
1509 caloObjType =
gtJet;
1513 }
else if (condCalo.getType() == esConditionType::TripleJet) {
1514 caloObjType =
gtJet;
1518 }
else if (condCalo.getType() == esConditionType::QuadJet) {
1519 caloObjType =
gtJet;
1523 }
else if (condCalo.getType() == esConditionType::SingleTau) {
1524 caloObjType =
gtTau;
1528 }
else if (condCalo.getType() == esConditionType::DoubleTau) {
1529 caloObjType =
gtTau;
1533 }
else if (condCalo.getType() == esConditionType::TripleTau) {
1534 caloObjType =
gtTau;
1538 }
else if (condCalo.getType() == esConditionType::QuadTau) {
1539 caloObjType =
gtTau;
1544 edm::LogError(
"TriggerMenuParser") <<
"Wrong particle for calo-condition (" << particle <<
")" << std::endl;
1551 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for calo-condition (" <<
type <<
")"
1552 <<
"\nCan not determine number of trigger objects. " << std::endl;
1559 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
1565 std::vector<uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
1566 tmpValues.reserve(nrObj);
1568 if (
int(condCalo.getObjects().size()) != nrObj) {
1569 edm::LogError(
"TriggerMenuParser") <<
" condCalo objects: nrObj = " << nrObj
1570 <<
"condCalo.getObjects().size() = " << condCalo.getObjects().size()
1585 const std::vector<esObject>&
objects = condCalo.getObjects();
1588 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
1591 relativeBx =
object.getBxOffset();
1594 int upperThresholdInd = -1;
1595 int lowerThresholdInd = 0;
1596 int upperIndexInd = -1;
1597 int lowerIndexInd = 0;
1599 unsigned int etaWindow1Lower = -1, etaWindow1Upper = -1, etaWindow2Lower = -1, etaWindow2Upper = -1;
1601 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1602 int isolationLUT = 0xF;
1603 int qualityLUT = 0xF;
1605 const std::vector<esCut>&
cuts =
object.getCuts();
1606 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1609 switch (
cut.getCutType()) {
1611 lowerThresholdInd =
cut.getMinimum().index;
1612 upperThresholdInd =
cut.getMaximum().index;
1614 case esCutType::Slice:
1615 lowerIndexInd =
int(
cut.getMinimum().value);
1616 upperIndexInd =
int(
cut.getMaximum().value);
1618 case esCutType::Eta: {
1620 etaWindow1Lower =
cut.getMinimum().index;
1621 etaWindow1Upper =
cut.getMaximum().index;
1622 }
else if (cntEta == 1) {
1623 etaWindow2Lower =
cut.getMinimum().index;
1624 etaWindow2Upper =
cut.getMaximum().index;
1627 <<
"Too Many Eta Cuts for calo-condition (" << particle <<
")" << std::endl;
1636 phiWindow1Lower =
cut.getMinimum().index;
1637 phiWindow1Upper =
cut.getMaximum().index;
1638 }
else if (cntPhi == 1) {
1639 phiWindow2Lower =
cut.getMinimum().index;
1640 phiWindow2Upper =
cut.getMaximum().index;
1643 <<
"Too Many Phi Cuts for calo-condition (" << particle <<
")" << std::endl;
1651 edm::LogError(
"TriggerMenuParser") <<
"No charge cut for calo-condition (" << particle <<
")" << std::endl;
1656 qualityLUT = l1tstr2int(
cut.getData());
1659 case esCutType::Isolation: {
1660 isolationLUT = l1tstr2int(
cut.getData());
1670 objParameter[cnt].etHighThreshold = upperThresholdInd;
1671 objParameter[cnt].etLowThreshold = lowerThresholdInd;
1672 objParameter[cnt].indexHigh = upperIndexInd;
1673 objParameter[cnt].indexLow = lowerIndexInd;
1674 objParameter[cnt].etaWindow1Lower = etaWindow1Lower;
1675 objParameter[cnt].etaWindow1Upper = etaWindow1Upper;
1676 objParameter[cnt].etaWindow2Lower = etaWindow2Lower;
1677 objParameter[cnt].etaWindow2Upper = etaWindow2Upper;
1678 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
1679 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
1680 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
1681 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
1682 objParameter[cnt].isolationLUT = isolationLUT;
1683 objParameter[cnt].qualityLUT = qualityLUT;
1686 LogDebug(
"TriggerMenuParser") <<
"\n Calo ET high thresholds (hex) for calo object " << caloObjType <<
" "
1687 << cnt <<
" = " << std::hex << objParameter[cnt].etLowThreshold <<
" - "
1688 << objParameter[cnt].etHighThreshold
1689 <<
"\n etaWindow Lower / Upper for calo object " << cnt <<
" = 0x"
1690 << objParameter[cnt].etaWindow1Lower <<
" / 0x" << objParameter[cnt].etaWindow1Upper
1691 <<
"\n etaWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
1692 << objParameter[cnt].etaWindow2Lower <<
" / 0x" << objParameter[cnt].etaWindow2Upper
1693 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
1694 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
1695 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
1696 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper
1697 <<
"\n Isolation LUT for calo object " << cnt <<
" = 0x"
1698 << objParameter[cnt].isolationLUT <<
"\n Quality LUT for calo object " << cnt
1699 <<
" = 0x" << objParameter[cnt].qualityLUT <<
std::dec << std::endl;
1705 std::vector<GlobalObject>
objType(nrObj, caloObjType);
1723 std::ostringstream myCoutStream;
1724 caloCond.
print(myCoutStream);
1725 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1729 if (!insertConditionIntoMap(caloCond, chipNr)) {
1730 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
1735 (m_corCaloTemplate[chipNr]).push_back(caloCond);
1737 (m_vecCaloTemplate[chipNr]).push_back(caloCond);
1758 using namespace tmeventsetup;
1767 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
1768 <<
"\n (in parseCalo) "
1769 <<
"\n condition = " <<
condition <<
"\n particle = " << particle
1770 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
1782 caloObjType =
gtJet;
1784 caloObjType =
gtTau;
1786 edm::LogError(
"TriggerMenuParser") <<
"Wrong particle for calo-condition (" << particle <<
")" << std::endl;
1793 edm::LogError(
"TriggerMenuParser") <<
"Unknown type for calo-condition (" <<
type <<
")"
1794 <<
"\nCan not determine number of trigger objects. " << std::endl;
1801 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
1807 std::vector<uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
1808 tmpValues.reserve(nrObj);
1814 gEq = (corrCalo->getComparisonOperator() == esComparisonOperator::GE);
1817 relativeBx = corrCalo->getBxOffset();
1820 int upperThresholdInd = -1;
1821 int lowerThresholdInd = 0;
1822 int upperIndexInd = -1;
1823 int lowerIndexInd = 0;
1825 unsigned int etaWindow1Lower = -1, etaWindow1Upper = -1, etaWindow2Lower = -1, etaWindow2Upper = -1;
1827 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
1828 int isolationLUT = 0xF;
1829 int qualityLUT = 0xF;
1831 const std::vector<esCut>&
cuts = corrCalo->getCuts();
1832 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
1835 switch (
cut.getCutType()) {
1837 lowerThresholdInd =
cut.getMinimum().index;
1838 upperThresholdInd =
cut.getMaximum().index;
1840 case esCutType::Slice:
1841 lowerIndexInd =
int(
cut.getMinimum().value);
1842 upperIndexInd =
int(
cut.getMaximum().value);
1844 case esCutType::Eta: {
1846 etaWindow1Lower =
cut.getMinimum().index;
1847 etaWindow1Upper =
cut.getMaximum().index;
1848 }
else if (cntEta == 1) {
1849 etaWindow2Lower =
cut.getMinimum().index;
1850 etaWindow2Upper =
cut.getMaximum().index;
1853 <<
"Too Many Eta Cuts for calo-condition (" << particle <<
")" << std::endl;
1862 phiWindow1Lower =
cut.getMinimum().index;
1863 phiWindow1Upper =
cut.getMaximum().index;
1864 }
else if (cntPhi == 1) {
1865 phiWindow2Lower =
cut.getMinimum().index;
1866 phiWindow2Upper =
cut.getMaximum().index;
1869 <<
"Too Many Phi Cuts for calo-condition (" << particle <<
")" << std::endl;
1877 edm::LogError(
"TriggerMenuParser") <<
"No charge cut for calo-condition (" << particle <<
")" << std::endl;
1882 qualityLUT = l1tstr2int(
cut.getData());
1885 case esCutType::Isolation: {
1886 isolationLUT = l1tstr2int(
cut.getData());
1896 objParameter[0].etLowThreshold = lowerThresholdInd;
1897 objParameter[0].etHighThreshold = upperThresholdInd;
1898 objParameter[0].indexHigh = upperIndexInd;
1899 objParameter[0].indexLow = lowerIndexInd;
1900 objParameter[0].etaWindow1Lower = etaWindow1Lower;
1901 objParameter[0].etaWindow1Upper = etaWindow1Upper;
1902 objParameter[0].etaWindow2Lower = etaWindow2Lower;
1903 objParameter[0].etaWindow2Upper = etaWindow2Upper;
1904 objParameter[0].phiWindow1Lower = phiWindow1Lower;
1905 objParameter[0].phiWindow1Upper = phiWindow1Upper;
1906 objParameter[0].phiWindow2Lower = phiWindow2Lower;
1907 objParameter[0].phiWindow2Upper = phiWindow2Upper;
1908 objParameter[0].isolationLUT = isolationLUT;
1909 objParameter[0].qualityLUT = qualityLUT;
1912 LogDebug(
"TriggerMenuParser") <<
"\n Calo ET high threshold (hex) for calo object " << caloObjType <<
" "
1913 <<
" = " << std::hex << objParameter[0].etLowThreshold <<
" - "
1914 << objParameter[0].etHighThreshold <<
"\n etaWindow Lower / Upper for calo object "
1915 <<
" = 0x" << objParameter[0].etaWindow1Lower <<
" / 0x"
1916 << objParameter[0].etaWindow1Upper
1917 <<
"\n etaWindowVeto Lower / Upper for calo object "
1918 <<
" = 0x" << objParameter[0].etaWindow2Lower <<
" / 0x"
1919 << objParameter[0].etaWindow2Upper <<
"\n phiWindow Lower / Upper for calo object "
1920 <<
" = 0x" << objParameter[0].phiWindow1Lower <<
" / 0x"
1921 << objParameter[0].phiWindow1Upper
1922 <<
"\n phiWindowVeto Lower / Upper for calo object "
1923 <<
" = 0x" << objParameter[0].phiWindow2Lower <<
" / 0x"
1924 << objParameter[0].phiWindow2Upper <<
"\n Isolation LUT for calo object "
1925 <<
" = 0x" << objParameter[0].isolationLUT <<
"\n Quality LUT for calo object "
1926 <<
" = 0x" << objParameter[0].qualityLUT <<
std::dec << std::endl;
1929 std::vector<GlobalObject>
objType(nrObj, caloObjType);
1947 std::ostringstream myCoutStream;
1948 caloCond.
print(myCoutStream);
1949 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
1966 (m_corCaloTemplate[chipNr]).push_back(caloCond);
1984 unsigned int chipNr,
1985 const bool corrFlag) {
1987 using namespace tmeventsetup;
1995 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
1996 <<
"\n (in parseEnergySum) "
1998 <<
"\n name = " <<
name << std::endl;
2004 if (condEnergySum.getType() == esConditionType::MissingEt) {
2007 }
else if (condEnergySum.getType() == esConditionType::TotalEt) {
2010 }
else if (condEnergySum.getType() == esConditionType::TotalEtEM) {
2013 }
else if (condEnergySum.getType() == esConditionType::TotalHt) {
2016 }
else if (condEnergySum.getType() == esConditionType::MissingHt) {
2019 }
else if (condEnergySum.getType() == esConditionType::MissingEtHF) {
2022 }
else if (condEnergySum.getType() == esConditionType::TowerCount) {
2025 }
else if (condEnergySum.getType() == esConditionType::MinBiasHFP0) {
2028 }
else if (condEnergySum.getType() == esConditionType::MinBiasHFM0) {
2031 }
else if (condEnergySum.getType() == esConditionType::MinBiasHFP1) {
2034 }
else if (condEnergySum.getType() == esConditionType::MinBiasHFM1) {
2037 }
else if (condEnergySum.getType() == esConditionType::AsymmetryEt) {
2040 }
else if (condEnergySum.getType() == esConditionType::AsymmetryHt) {
2043 }
else if (condEnergySum.getType() == esConditionType::AsymmetryEtHF) {
2046 }
else if (condEnergySum.getType() == esConditionType::AsymmetryHtHF) {
2049 }
else if (condEnergySum.getType() == esConditionType::Centrality0) {
2052 }
else if (condEnergySum.getType() == esConditionType::Centrality1) {
2055 }
else if (condEnergySum.getType() == esConditionType::Centrality2) {
2058 }
else if (condEnergySum.getType() == esConditionType::Centrality3) {
2061 }
else if (condEnergySum.getType() == esConditionType::Centrality4) {
2064 }
else if (condEnergySum.getType() == esConditionType::Centrality5) {
2067 }
else if (condEnergySum.getType() == esConditionType::Centrality6) {
2070 }
else if (condEnergySum.getType() == esConditionType::Centrality7) {
2074 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for energy-sum condition (" <<
type <<
")" << std::endl;
2086 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
2097 const std::vector<esObject>&
objects = condEnergySum.getObjects();
2100 gEq = (
object.getComparisonOperator() == esComparisonOperator::GE);
2103 relativeBx =
object.getBxOffset();
2106 int lowerThresholdInd = 0;
2107 int upperThresholdInd = -1;
2109 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
2111 const std::vector<esCut>&
cuts =
object.getCuts();
2112 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2115 switch (
cut.getCutType()) {
2117 lowerThresholdInd =
cut.getMinimum().index;
2118 upperThresholdInd =
cut.getMaximum().index;
2121 case esCutType::Eta:
2126 phiWindow1Lower =
cut.getMinimum().index;
2127 phiWindow1Upper =
cut.getMaximum().index;
2128 }
else if (cntPhi == 1) {
2129 phiWindow2Lower =
cut.getMinimum().index;
2130 phiWindow2Upper =
cut.getMaximum().index;
2132 edm::LogError(
"TriggerMenuParser") <<
"Too Many Phi Cuts for esum-condition (" <<
type <<
")" << std::endl;
2139 case esCutType::Count:
2140 lowerThresholdInd =
cut.getMinimum().index;
2141 upperThresholdInd = 0xffffff;
2151 objParameter[cnt].etLowThreshold = lowerThresholdInd;
2152 objParameter[cnt].etHighThreshold = upperThresholdInd;
2153 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
2154 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
2155 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
2156 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
2159 LogDebug(
"TriggerMenuParser") <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = "
2160 << std::hex << objParameter[cnt].etLowThreshold <<
" - "
2161 << objParameter[cnt].etHighThreshold
2162 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
2163 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
2164 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
2165 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper
2172 std::vector<GlobalObject>
objType(nrObj, energySumObjType);
2187 std::ostringstream myCoutStream;
2188 energySumCond.
print(myCoutStream);
2189 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2193 if (!insertConditionIntoMap(energySumCond, chipNr)) {
2194 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
2199 (m_corEnergySumTemplate[chipNr]).push_back(energySumCond);
2202 (m_vecEnergySumTemplate[chipNr]).push_back(energySumCond);
2223 using namespace tmeventsetup;
2231 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
2232 <<
"\n (in parseEnergySum) "
2234 <<
"\n name = " <<
name << std::endl;
2246 }
else if (corrESum->getType() == esObjectType::ETMHF) {
2249 }
else if (corrESum->getType() == esObjectType::TOWERCOUNT) {
2253 edm::LogError(
"TriggerMenuParser") <<
"Wrong type for energy-sum correclation condition (" <<
type <<
")"
2266 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
2276 gEq = (corrESum->getComparisonOperator() == esComparisonOperator::GE);
2279 relativeBx = corrESum->getBxOffset();
2282 int lowerThresholdInd = 0;
2283 int upperThresholdInd = -1;
2285 unsigned int phiWindow1Lower = -1, phiWindow1Upper = -1, phiWindow2Lower = -1, phiWindow2Upper = -1;
2287 const std::vector<esCut>&
cuts = corrESum->getCuts();
2288 for (
size_t kk = 0;
kk <
cuts.size();
kk++) {
2291 switch (
cut.getCutType()) {
2293 lowerThresholdInd =
cut.getMinimum().index;
2294 upperThresholdInd =
cut.getMaximum().index;
2297 case esCutType::Eta:
2302 phiWindow1Lower =
cut.getMinimum().index;
2303 phiWindow1Upper =
cut.getMaximum().index;
2304 }
else if (cntPhi == 1) {
2305 phiWindow2Lower =
cut.getMinimum().index;
2306 phiWindow2Upper =
cut.getMaximum().index;
2308 edm::LogError(
"TriggerMenuParser") <<
"Too Many Phi Cuts for esum-condition (" <<
type <<
")" << std::endl;
2322 objParameter[0].etLowThreshold = lowerThresholdInd;
2323 objParameter[0].etHighThreshold = upperThresholdInd;
2324 objParameter[0].phiWindow1Lower = phiWindow1Lower;
2325 objParameter[0].phiWindow1Upper = phiWindow1Upper;
2326 objParameter[0].phiWindow2Lower = phiWindow2Lower;
2327 objParameter[0].phiWindow2Upper = phiWindow2Upper;
2330 LogDebug(
"TriggerMenuParser") <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = "
2331 << std::hex << objParameter[0].etLowThreshold <<
" - " << objParameter[0].etLowThreshold
2332 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
2333 << objParameter[0].phiWindow1Lower <<
" / 0x" << objParameter[0].phiWindow1Upper
2334 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
2335 << objParameter[0].phiWindow2Lower <<
" / 0x" << objParameter[0].phiWindow2Upper
2339 std::vector<GlobalObject>
objType(nrObj, energySumObjType);
2354 std::ostringstream myCoutStream;
2355 energySumCond.
print(myCoutStream);
2356 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2374 (m_corEnergySumTemplate[chipNr]).push_back(energySumCond);
2393 using namespace tmeventsetup;
2401 LogDebug(
"TriggerMenuParser") <<
"\n ****************************************** "
2402 <<
"\n (in parseExternal) "
2403 <<
"\n condition = " <<
condition <<
"\n particle = " << particle
2404 <<
"\n type = " <<
type <<
"\n name = " <<
name << std::endl;
2413 unsigned int channelID = 0;
2416 const std::vector<esObject>&
objects = condExt.getObjects();
2419 if (
object.getType() == esObjectType::EXT) {
2420 relativeBx =
object.getBxOffset();
2421 channelID =
object.getExternalChannelId();
2429 std::vector<GlobalObject>
objType(nrObj, extSignalType);
2441 LogTrace(
"TriggerMenuParser") << externalCond <<
"\n" << std::endl;
2444 if (!insertConditionIntoMap(externalCond, chipNr)) {
2445 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate condition (" <<
name <<
")" << std::endl;
2449 (m_vecExternalTemplate[chipNr]).push_back(externalCond);
2468 using namespace tmeventsetup;
2475 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
2476 <<
" (in parseCorrelation) " << std::endl
2477 <<
" condition = " <<
condition << std::endl
2478 <<
" particle = " << particle << std::endl
2479 <<
" type = " <<
type << std::endl
2480 <<
" name = " <<
name << std::endl;
2486 if (!insertConditionIntoMap(correlationCond, chipNr)) {
2487 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate correlation condition (" <<
name <<
")" << std::endl;
2498 const int nrObj = 2;
2501 int intGEq[nrObj] = {-1, -1};
2502 std::vector<GlobalObject>
objType(nrObj);
2503 std::vector<GtConditionCategory> condCateg(nrObj);
2506 const bool corrFlag =
true;
2507 int corrIndexVal[nrObj] = {-1, -1};
2515 const std::vector<esCut>&
cuts = corrCond.getCuts();
2516 for (
size_t jj = 0;
jj <
cuts.size();
jj++) {
2519 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
2520 if (
cut.getData() ==
"ls")
2522 else if (
cut.getData() ==
"os")
2530 double minV =
cut.getMinimum().value;
2531 double maxV =
cut.getMaximum().value;
2538 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tDeltaEta Cut minV = " << minV
2539 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
2540 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
2544 cutType = cutType | 0x1;
2546 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tDeltaPhi Cut minV = " << minV
2547 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
2548 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
2552 cutType = cutType | 0x2;
2554 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tDeltaR Cut minV = " << minV
2555 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
2556 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
2560 cutType = cutType | 0x4;
2561 }
else if (
cut.getCutType() == esCutType::TwoBodyPt) {
2565 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tTPBT Cut minV = " << minV
2566 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
2567 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
2568 cutType = cutType | 0x20;
2570 LogDebug(
"TriggerMenuParser") <<
"CutType: " <<
cut.getCutType() <<
"\tMass Cut minV = " << minV
2571 <<
" Max = " << maxV <<
" precMin = " <<
cut.getMinimum().index
2572 <<
" precMax = " <<
cut.getMaximum().index << std::endl;
2577 if (corrCond.getType() == esConditionType::TransverseMass) {
2578 cutType = cutType | 0x10;
2581 cutType = cutType | 0x8;
2590 const std::vector<esObject>&
objects = corrCond.getObjects();
2592 edm::LogError(
"TriggerMenuParser") <<
"incorrect number of objects for the correlation condition " <<
name
2593 <<
" corrFlag " << corrFlag << std::endl;
2640 parseMuonCorr(&
object, chipNr);
2641 corrIndexVal[
jj] = (m_corMuonTemplate[chipNr]).
size() - 1;
2644 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
2651 parseCaloCorr(&
object, chipNr);
2652 corrIndexVal[
jj] = (m_corCaloTemplate[chipNr]).
size() - 1;
2655 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
2656 switch (
object.getType()) {
2671 }
else if (
object.getType() ==
esObjectType::ETM ||
object.getType() == esObjectType::ETMHF ||
2672 object.getType() == esObjectType::TOWERCOUNT ||
object.getType() ==
esObjectType::HTM) {
2674 parseEnergySumCorr(&
object, chipNr);
2675 corrIndexVal[
jj] = (m_corEnergySumTemplate[chipNr]).
size() - 1;
2678 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
2679 switch (
object.getType()) {
2686 case esObjectType::ETMHF: {
2689 case esObjectType::TOWERCOUNT: {
2698 edm::LogError(
"TriggerMenuParser") <<
"Illegal Object Type " <<
object.getType()
2699 <<
" for the correlation condition " <<
name << std::endl;
2708 if (intGEq[0] != intGEq[1]) {
2709 edm::LogError(
"TriggerMenuParser") <<
"Inconsistent GEq flags for sub-conditions "
2710 <<
" for the correlation condition " <<
name << std::endl;
2714 gEq = (intGEq[0] != 0);
2732 std::ostringstream myCoutStream;
2733 correlationCond.
print(myCoutStream);
2734 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
2740 (m_vecCorrelationTemplate[chipNr]).push_back(correlationCond);
2759 unsigned int chipNr) {
2760 using namespace tmeventsetup;
2767 LogDebug(
"TriggerMenuParser") <<
" ****************************************** " << std::endl
2768 <<
" (in parseCorrelationWithOverlapRemoval) " << std::endl
2769 <<
" condition = " <<
condition << std::endl
2770 <<
" particle = " << particle << std::endl
2771 <<
" type = " <<
type << std::endl
2772 <<
" name = " <<
name << std::endl;
2778 if (!insertConditionIntoMap(correlationWORCond, chipNr)) {
2779 edm::LogError(
"TriggerMenuParser") <<
" Error: duplicate correlation condition (" <<
name <<
")" << std::endl;
2790 const int nrObj = 3;
2793 int intGEq[nrObj] = {-1, -1, -1};
2794 std::vector<GlobalObject>
objType(nrObj);
2795 std::vector<GtConditionCategory> condCateg(nrObj);
2798 const bool corrFlag =
true;
2799 int corrIndexVal[nrObj] = {-1, -1, -1};
2807 const std::vector<esCut>&
cuts = corrCond.getCuts();
2808 for (
size_t jj = 0;
jj <
cuts.size();
jj++) {
2811 if (
cut.getCutType() == esCutType::ChargeCorrelation) {
2812 if (
cut.getData() ==
"ls")
2814 else if (
cut.getData() ==
"os")
2822 double minV =
cut.getMinimum().value;
2823 double maxV =
cut.getMaximum().value;
2834 cutType = cutType | 0x1;
2840 cutType = cutType | 0x2;
2846 cutType = cutType | 0x4;
2852 cutType = cutType | 0x8;
2854 if (
cut.getCutType() == esCutType::OvRmDeltaEta) {
2859 cutType = cutType | 0x10;
2860 }
else if (
cut.getCutType() == esCutType::OvRmDeltaPhi) {
2865 cutType = cutType | 0x20;
2866 }
else if (
cut.getCutType() == esCutType::OvRmDeltaR) {
2871 cutType = cutType | 0x40;
2878 const std::vector<esObject>&
objects = corrCond.getObjects();
2881 <<
"incorrect number of objects for the correlation condition with overlap removal " <<
name <<
" corrFlag "
2882 << corrFlag << std::endl;
2888 const esObject&
object =
objects.at(
jj);
2930 parseMuonCorr(&
object, chipNr);
2931 corrIndexVal[
jj] = (m_corMuonTemplate[chipNr]).
size() - 1;
2934 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
2941 parseCaloCorr(&
object, chipNr);
2942 corrIndexVal[
jj] = (m_corCaloTemplate[chipNr]).
size() - 1;
2945 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
2946 switch (
object.getType()) {
2961 }
else if (
object.getType() ==
esObjectType::ETM ||
object.getType() == esObjectType::ETMHF ||
2962 object.getType() == esObjectType::TOWERCOUNT ||
object.getType() ==
esObjectType::HTM) {
2964 parseEnergySumCorr(&
object, chipNr);
2965 corrIndexVal[
jj] = (m_corEnergySumTemplate[chipNr]).
size() - 1;
2968 intGEq[
jj] = (
object.getComparisonOperator() == esComparisonOperator::GE);
2969 switch (
object.getType()) {
2976 case esObjectType::ETMHF: {
2979 case esObjectType::TOWERCOUNT: {
2988 edm::LogError(
"TriggerMenuParser") <<
"Illegal Object Type " <<
object.getType()
2989 <<
" for the correlation condition " <<
name << std::endl;
2998 if (intGEq[0] != intGEq[1]) {
2999 edm::LogError(
"TriggerMenuParser") <<
"Inconsistent GEq flags for sub-conditions "
3000 <<
" for the correlation condition " <<
name << std::endl;
3004 gEq = (intGEq[0] != 0);
3024 std::ostringstream myCoutStream;
3025 correlationWORCond.
print(myCoutStream);
3026 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3032 (m_vecCorrelationWithOverlapRemovalTemplate[chipNr]).push_back(correlationWORCond);
3050 using namespace tmeventsetup;
3057 if (algAlias.empty()) {
3059 LogDebug(
"TriggerMenuParser") <<
"\n No alias defined for algorithm. Alias set to algorithm name."
3060 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
3064 LogDebug(
"TriggerMenuParser") <<
"\n Alias defined for algorithm."
3065 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
3072 LogDebug(
"TriggerMenuParser") <<
" Logical expression: " << logExpression
3073 <<
" Chip number: " << chipNr << std::endl;
3079 LogDebug(
"TriggerMenuParser") <<
" Output pin: " << outputPin << std::endl;
3094 std::ostringstream myCoutStream;
3095 alg.
print(myCoutStream);
3096 LogTrace(
"TriggerMenuParser") << myCoutStream.str() <<
"\n" << std::endl;
3100 if (!insertAlgorithmIntoMap(alg)) {