CMS 3D CMS Logo

L1GlobalTriggerGTL.cc
Go to the documentation of this file.
1 
16 // this class header
18 
19 // system include files
20 #include <ext/hash_map>
21 
22 // user include files
24 
26 
29 
32 
43 
48 
51 
53 
64 
66 
68 
71 
73 
74 // forward declarations
75 
76 // constructor
78  m_candL1Mu( new std::vector<const L1MuGMTCand*>),
79  m_isDebugEnabled(edm::isDebugEnabled())
80 {
81 
82  m_gtlAlgorithmOR.reset();
83  m_gtlDecisionWord.reset();
84 
85  // initialize cached IDs
86  m_l1GtMenuCacheID = 0ULL;
89 
90  // pointer to conversion - actually done in the event loop (cached)
93 
94  iC.consumes<std::vector<L1MuGMTCand> >(m_muGmtInputTag);
95 
96 }
97 
98 // destructor
100 
101  reset();
102  delete m_candL1Mu;
103  delete m_gtEtaPhiConversions;
104 
105 }
106 
107 // operations
108 void L1GlobalTriggerGTL::init(const int nrL1Mu, const int numberPhysTriggers) {
109 
110  m_candL1Mu->reserve(nrL1Mu);
111 
112  // FIXME move from bitset to std::vector<bool> to be able to use
113  // numberPhysTriggers from EventSetup
114 
115  //m_gtlAlgorithmOR.reserve(numberPhysTriggers);
116  //m_gtlAlgorithmOR.assign(numberPhysTriggers, false);
117 
118  //m_gtlDecisionWord.reserve(numberPhysTriggers);
119  //m_gtlDecisionWord.assign(numberPhysTriggers, false);
120 
121 }
122 
123 // receive data from Global Muon Trigger
125  const edm::InputTag& muGmtInputTag, const int iBxInEvent, const bool receiveMu,
126  const int nrL1Mu) {
127 
128  if (m_verbosity) {
129  LogDebug("L1GlobalTrigger")
130  << "\n**** L1GlobalTriggerGTL receiving muon data for BxInEvent = "
131  << iBxInEvent << "\n from input tag " << muGmtInputTag << "\n"
132  << std::endl;
133 
134  }
135 
136  reset();
137 
138  // get data from Global Muon Trigger
139  if (receiveMu) {
140 
142  iEvent.getByLabel(muGmtInputTag, muonData);
143 
144  if (!muonData.isValid()) {
145  if (m_verbosity) {
146  edm::LogWarning("L1GlobalTrigger")
147  << "\nWarning: std::vector<L1MuGMTCand> with input tag "
148  << muGmtInputTag
149  << "\nrequested in configuration, but not found in the event.\n"
150  << std::endl;
151  }
152  } else {
153 
154  std::vector<L1MuGMTCand>::const_iterator itMuon;
155  for (itMuon = muonData->begin(); itMuon != muonData->end(); itMuon++) {
156  if ((*itMuon).bx() == iBxInEvent) {
157 
158  (*m_candL1Mu).push_back(&(*itMuon));
159  //LogTrace("L1GlobalTrigger") << (*itMuon)
160  // << std::endl;
161 
162  }
163 
164  }
165 
166  }
167  }
168 
169  if (m_verbosity && m_isDebugEnabled) {
170  printGmtData(iBxInEvent);
171  }
172 
173 }
174 
175 // run GTL
177  edm::Event& iEvent, const edm::EventSetup& evSetup,
178  const L1GlobalTriggerPSB* ptrGtPSB,
179  const bool produceL1GtObjectMapRecord,
180  const int iBxInEvent,
181  L1GlobalTriggerObjectMapRecord* gtObjectMapRecord,
182  const unsigned int numberPhysTriggers,
183  const int nrL1Mu,
184  const int nrL1NoIsoEG, const int nrL1IsoEG,
185  const int nrL1CenJet, const int nrL1ForJet, const int nrL1TauJet,
186  const int nrL1JetCounts,
187  const int ifMuEtaNumberBits, const int ifCaloEtaNumberBits) {
188 
189 
190  // get / update the trigger menu from the EventSetup
191  // local cache & check on cacheIdentifier
192 
193  unsigned long long l1GtMenuCacheID = evSetup.get<L1GtTriggerMenuRcd>().cacheIdentifier();
194 
195  if (m_l1GtMenuCacheID != l1GtMenuCacheID) {
196 
198  evSetup.get< L1GtTriggerMenuRcd>().get(l1GtMenu) ;
199  m_l1GtMenu = l1GtMenu.product();
200  m_l1GtMenuCacheID = l1GtMenuCacheID;
201  }
202 
203  const std::vector<ConditionMap>& conditionMap = m_l1GtMenu->gtConditionMap();
204  const AlgorithmMap& algorithmMap = m_l1GtMenu->gtAlgorithmMap();
205 
206  const std::vector<std::vector<L1GtMuonTemplate> >& corrMuon =
208 
209  const std::vector<std::vector<L1GtCaloTemplate> >& corrCalo =
211 
212  const std::vector<std::vector<L1GtEnergySumTemplate> >& corrEnergySum =
214 
215  // conversion needed for correlation conditions
216  // done in the condition loop when the first correlation template is in the menu
217  bool convertScale = false;
218 
219  // get / update the calorimeter geometry from the EventSetup
220  // local cache & check on cacheIdentifier
221  unsigned long long l1CaloGeometryCacheID =
222  evSetup.get<L1CaloGeometryRecord>().cacheIdentifier();
223 
224  if (m_l1CaloGeometryCacheID != l1CaloGeometryCacheID) {
225 
226  edm::ESHandle<L1CaloGeometry> l1CaloGeometry;
227  evSetup.get<L1CaloGeometryRecord>().get(l1CaloGeometry) ;
228  m_l1CaloGeometry = l1CaloGeometry.product();
229 
230  m_l1CaloGeometryCacheID = l1CaloGeometryCacheID;
231  convertScale = true;
232 
233  }
234 
235  // get / update the eta and phi muon trigger scales from the EventSetup
236  // local cache & check on cacheIdentifier
237  unsigned long long l1MuTriggerScalesCacheID =
238  evSetup.get<L1MuTriggerScalesRcd>().cacheIdentifier();
239 
240  if (m_l1MuTriggerScalesCacheID != l1MuTriggerScalesCacheID) {
241 
242  edm::ESHandle< L1MuTriggerScales> l1MuTriggerScales;
243  evSetup.get< L1MuTriggerScalesRcd>().get(l1MuTriggerScales);
244  m_l1MuTriggerScales = l1MuTriggerScales.product();
245 
246  m_l1MuTriggerScalesCacheID = l1MuTriggerScalesCacheID;
247  convertScale = true;
248  }
249 
250  if (convertScale) {
253  m_l1MuTriggerScales, ifCaloEtaNumberBits, ifMuEtaNumberBits);
254 
255  // print the conversions if DEBUG and verbosity enabled
256 
257  if (m_verbosity && m_isDebugEnabled) {
258  std::ostringstream myCout;
259  m_gtEtaPhiConversions->print(myCout);
260 
261  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
262  }
263 
264  // set convertScale to false to avoid executing the conversion
265  // more than once - in case the scales change it will be set to true
266  // in the cache check
267  convertScale = false;
268  }
269 
270 
271  // loop over condition maps (one map per condition chip)
272  // then loop over conditions in the map
273  // save the results in temporary maps
274 
275  // never happens in production but at first event...
276  if (m_conditionResultMaps.size() != conditionMap.size()) {
277  m_conditionResultMaps.clear();
278  m_conditionResultMaps.resize(conditionMap.size());
279  }
280 
281  int iChip = -1;
282 
283  for (std::vector<ConditionMap>::const_iterator
284  itCondOnChip = conditionMap.begin(); itCondOnChip != conditionMap.end(); itCondOnChip++) {
285 
286  iChip++;
287 
288  //L1GtAlgorithmEvaluation::ConditionEvaluationMap cMapResults;
289  // L1GtAlgorithmEvaluation::ConditionEvaluationMap cMapResults((*itCondOnChip).size()); // hash map
291  m_conditionResultMaps[iChip];
292 
293  for (CItCond itCond = itCondOnChip->begin(); itCond != itCondOnChip->end(); itCond++) {
294 
295  // evaluate condition
296  switch ((itCond->second)->condCategory()) {
297  case CondMuon: {
298 
299  L1GtMuonCondition* muCondition = new L1GtMuonCondition(itCond->second, this,
300  nrL1Mu, ifMuEtaNumberBits);
301 
302  muCondition->setVerbosity(m_verbosity);
303  muCondition->setGtCorrParDeltaPhiNrBins(
305  + 1);
306  muCondition->evaluateConditionStoreResult();
307 
308  cMapResults[itCond->first] = muCondition;
309 
310  if (m_verbosity && m_isDebugEnabled) {
311  std::ostringstream myCout;
312  muCondition->print(myCout);
313 
314  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
315  }
316 
317  //delete muCondition;
318 
319  }
320  break;
321  case CondCalo: {
322 
323  L1GtCaloCondition* caloCondition = new L1GtCaloCondition(
324  itCond->second, ptrGtPSB,
325  nrL1NoIsoEG,
326  nrL1IsoEG,
327  nrL1CenJet,
328  nrL1ForJet,
329  nrL1TauJet,
330  ifCaloEtaNumberBits);
331 
332  caloCondition->setVerbosity(m_verbosity);
333  caloCondition->setGtCorrParDeltaPhiNrBins(
335  ((itCond->second)->objectType())[0])) / 2
336  + 1);
337  caloCondition->evaluateConditionStoreResult();
338 
339  cMapResults[itCond->first] = caloCondition;
340 
341  if (m_verbosity && m_isDebugEnabled) {
342  std::ostringstream myCout;
343  caloCondition->print(myCout);
344 
345  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
346  }
347  // delete caloCondition;
348 
349  }
350  break;
351  case CondEnergySum: {
352  L1GtEnergySumCondition* eSumCondition = new L1GtEnergySumCondition(
353  itCond->second, ptrGtPSB);
354 
355  eSumCondition->setVerbosity(m_verbosity);
356  eSumCondition->evaluateConditionStoreResult();
357 
358  cMapResults[itCond->first] = eSumCondition;
359 
360  if (m_verbosity && m_isDebugEnabled) {
361  std::ostringstream myCout;
362  eSumCondition->print(myCout);
363 
364  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
365  }
366  // delete eSumCondition;
367 
368  }
369  break;
370  case CondJetCounts: {
372  itCond->second, ptrGtPSB, nrL1JetCounts);
373 
374  jcCondition->setVerbosity(m_verbosity);
375  jcCondition->evaluateConditionStoreResult();
376 
377  cMapResults[itCond->first] = jcCondition;
378 
379  if (m_verbosity && m_isDebugEnabled) {
380  std::ostringstream myCout;
381  jcCondition->print(myCout);
382 
383  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
384  }
385 
386  // delete jcCondition;
387 
388  }
389  break;
390  case CondHfBitCounts: {
392  itCond->second, ptrGtPSB);
393 
394  bcCondition->setVerbosity(m_verbosity);
395  bcCondition->evaluateConditionStoreResult();
396 
397  cMapResults[itCond->first] = bcCondition;
398 
399  if (m_isDebugEnabled ) {
400  std::ostringstream myCout;
401  bcCondition->print(myCout);
402 
403  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
404  }
405 
406  // delete bcCondition;
407 
408  }
409  break;
410  case CondHfRingEtSums: {
412  itCond->second, ptrGtPSB);
413 
414  etCondition->setVerbosity(m_verbosity);
415  etCondition->evaluateConditionStoreResult();
416 
417  cMapResults[itCond->first] = etCondition;
418 
419  if (m_verbosity && m_isDebugEnabled) {
420  std::ostringstream myCout;
421  etCondition->print(myCout);
422 
423  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
424  }
425 
426  // delete etCondition;
427 
428  }
429  break;
430  case CondCastor: {
431  bool castorCondResult = false;
432 
433  // FIXME need a solution to read CASTOR
434  //if (castorConditionFlag) {
435  // castorCondResult = castorData->conditionResult(itCond->first);
436  //}
437 
438  L1GtCastorCondition* castorCondition = new L1GtCastorCondition(
439  itCond->second, castorCondResult);
440 
441  castorCondition->setVerbosity(m_verbosity);
442  castorCondition->evaluateConditionStoreResult();
443 
444  cMapResults[itCond->first] = castorCondition;
445 
446  if (m_verbosity && m_isDebugEnabled) {
447  std::ostringstream myCout;
448  castorCondition->print(myCout);
449 
450  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
451  }
452 
453  // delete castorCondition;
454 
455  }
456  break;
457  case CondBptx: {
458  bool bptxCondResult = true;
459 
460  // FIXME need a solution to read BPTX with real value
461 
462  L1GtBptxCondition* bptxCondition = new L1GtBptxCondition(
463  itCond->second, bptxCondResult);
464 
465  bptxCondition->setVerbosity(m_verbosity);
466  bptxCondition->evaluateConditionStoreResult();
467 
468  cMapResults[itCond->first] = bptxCondition;
469 
470  if (m_verbosity && m_isDebugEnabled) {
471  std::ostringstream myCout;
472  bptxCondition->print(myCout);
473 
474  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
475  }
476 
477  // delete bptxCondition;
478 
479  }
480  break;
481  case CondExternal: {
482  bool externalCondResult = true;
483 
484  // FIXME need a solution to read External with real value
485 
486  L1GtExternalCondition* externalCondition = new L1GtExternalCondition(
487  itCond->second, externalCondResult);
488 
489  externalCondition->setVerbosity(m_verbosity);
490  externalCondition->evaluateConditionStoreResult();
491 
492  cMapResults[itCond->first] = externalCondition;
493 
494  if (m_verbosity && m_isDebugEnabled) {
495  std::ostringstream myCout;
496  externalCondition->print(myCout);
497 
498  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
499  }
500 
501  // delete externalCondition;
502 
503  }
504  break;
505  case CondCorrelation: {
506 
507  // get first the sub-conditions
508  const L1GtCorrelationTemplate* corrTemplate =
509  static_cast<const L1GtCorrelationTemplate*>(itCond->second);
510  const L1GtConditionCategory cond0Categ = corrTemplate->cond0Category();
511  const L1GtConditionCategory cond1Categ = corrTemplate->cond1Category();
512  const int cond0Ind = corrTemplate->cond0Index();
513  const int cond1Ind = corrTemplate->cond1Index();
514 
515  const L1GtCondition* cond0Condition = nullptr;
516  const L1GtCondition* cond1Condition = nullptr;
517 
518  // maximum number of objects received for evaluation of Type1s condition
519  int cond0NrL1Objects = 0;
520  int cond1NrL1Objects = 0;
521 
522  int cond0EtaBits = 0;
523  int cond1EtaBits = 0;
524 
525  switch (cond0Categ) {
526  case CondMuon: {
527  cond0Condition = &((corrMuon[iChip])[cond0Ind]);
528  cond0NrL1Objects = nrL1Mu;
529  cond0EtaBits = ifMuEtaNumberBits;
530  }
531  break;
532  case CondCalo: {
533  cond0Condition = &((corrCalo[iChip])[cond0Ind]);
534 
535  switch ((cond0Condition->objectType())[0]) {
536  case NoIsoEG:
537  cond0NrL1Objects= nrL1NoIsoEG;
538  break;
539  case IsoEG:
540  cond0NrL1Objects = nrL1IsoEG;
541  break;
542  case CenJet:
543  cond0NrL1Objects = nrL1CenJet;
544  break;
545  case ForJet:
546  cond0NrL1Objects = nrL1ForJet;
547  break;
548  case TauJet:
549  cond0NrL1Objects = nrL1TauJet;
550  break;
551  default:
552  cond0NrL1Objects = 0;
553  break;
554  }
555 
556  cond0EtaBits = ifCaloEtaNumberBits;
557  }
558  break;
559  case CondEnergySum: {
560  cond0Condition = &((corrEnergySum[iChip])[cond0Ind]);
561  cond0NrL1Objects = 1;
562  }
563  break;
564  default: {
565  // do nothing, should not arrive here
566  }
567  break;
568  }
569 
570  switch (cond1Categ) {
571  case CondMuon: {
572  cond1Condition = &((corrMuon[iChip])[cond1Ind]);
573  cond1NrL1Objects = nrL1Mu;
574  cond1EtaBits = ifMuEtaNumberBits;
575  }
576  break;
577  case CondCalo: {
578  cond1Condition = &((corrCalo[iChip])[cond1Ind]);
579 
580  switch ((cond1Condition->objectType())[0]) {
581  case NoIsoEG:
582  cond1NrL1Objects= nrL1NoIsoEG;
583  break;
584  case IsoEG:
585  cond1NrL1Objects = nrL1IsoEG;
586  break;
587  case CenJet:
588  cond1NrL1Objects = nrL1CenJet;
589  break;
590  case ForJet:
591  cond1NrL1Objects = nrL1ForJet;
592  break;
593  case TauJet:
594  cond1NrL1Objects = nrL1TauJet;
595  break;
596  default:
597  cond1NrL1Objects = 0;
598  break;
599  }
600 
601  cond1EtaBits = ifCaloEtaNumberBits;
602  }
603  break;
604  case CondEnergySum: {
605  cond1Condition = &((corrEnergySum[iChip])[cond1Ind]);
606  cond1NrL1Objects = 1;
607  }
608  break;
609  default: {
610  // do nothing, should not arrive here
611  }
612  break;
613  }
614 
615  L1GtCorrelationCondition* correlationCond =
616  new L1GtCorrelationCondition(itCond->second,
617  cond0Condition, cond1Condition,
618  cond0NrL1Objects, cond1NrL1Objects,
619  cond0EtaBits, cond1EtaBits,
620  this, ptrGtPSB, m_gtEtaPhiConversions);
621 
622  correlationCond->setVerbosity(m_verbosity);
623  correlationCond->evaluateConditionStoreResult();
624 
625  cMapResults[itCond->first] = correlationCond;
626 
627  if (m_verbosity && m_isDebugEnabled) {
628  std::ostringstream myCout;
629  correlationCond->print(myCout);
630 
631  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
632  }
633 
634  // delete correlationCond;
635 
636  }
637  break;
638  case CondNull: {
639 
640  // do nothing
641 
642  }
643  break;
644  default: {
645 
646  // do nothing
647 
648  }
649  break;
650  }
651 
652  }
653 
654  }
655 
656  // loop over algorithm map
657 
658  // empty vector for object maps - filled during loop
659  std::vector<L1GlobalTriggerObjectMap> objMapVec;
660  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) objMapVec.reserve(numberPhysTriggers);
661 
662  for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
663 
664  L1GtAlgorithmEvaluation gtAlg(itAlgo->second);
665  gtAlg.evaluateAlgorithm((itAlgo->second).algoChipNumber(), m_conditionResultMaps);
666 
667  int algBitNumber = (itAlgo->second).algoBitNumber();
668  bool algResult = gtAlg.gtAlgoResult();
669 
670  if (algResult) {
671  m_gtlAlgorithmOR.set(algBitNumber);
672  }
673 
674  if (m_verbosity && m_isDebugEnabled) {
675  std::ostringstream myCout;
676  ( itAlgo->second ).print(myCout);
677  gtAlg.print(myCout);
678 
679  LogTrace("L1GlobalTrigger") << myCout.str() << std::endl;
680  }
681 
682 
683  // object maps only for BxInEvent = 0
684  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) {
685 
686  // set object map
688 
689  objMap.setAlgoName(itAlgo->first);
690  objMap.setAlgoBitNumber(algBitNumber);
691  objMap.setAlgoGtlResult(algResult);
694  // gtAlg is empty now...
695 
696  if (m_verbosity && m_isDebugEnabled) {
697  std::ostringstream myCout1;
698  objMap.print(myCout1);
699 
700  LogTrace("L1GlobalTrigger") << myCout1.str() << std::endl;
701  }
702 
703  objMapVec.push_back(objMap);
704 
705  }
706 
707 
708  }
709 
710  // object maps only for BxInEvent = 0
711  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) {
712  gtObjectMapRecord->swapGtObjectMap(objMapVec);
713  }
714 
715  // loop over condition maps (one map per condition chip)
716  // then loop over conditions in the map
717  // delete the conditions created with new, zero pointer, do not clear map, keep the vector as is...
718  for (std::vector<L1GtAlgorithmEvaluation::ConditionEvaluationMap>::iterator
719  itCondOnChip = m_conditionResultMaps.begin();
720  itCondOnChip != m_conditionResultMaps.end(); itCondOnChip++) {
721 
723  itCond = itCondOnChip->begin();
724  itCond != itCondOnChip->end(); itCond++) {
725 
726  delete itCond->second;
727  itCond->second = nullptr;
728  }
729  }
730 
731 }
732 
733 // clear GTL
735 
736  m_candL1Mu->clear();
737 
738  m_gtlDecisionWord.reset();
739  m_gtlAlgorithmOR.reset();
740 
741 }
742 
743 // print Global Muon Trigger data received by GTL
744 void L1GlobalTriggerGTL::printGmtData(const int iBxInEvent) const {
745 
746  LogTrace("L1GlobalTrigger")
747  << "\nL1GlobalTrigger: GMT data received for BxInEvent = "
748  << iBxInEvent << std::endl;
749 
750  int nrL1Mu = m_candL1Mu->size();
751  LogTrace("L1GlobalTrigger")
752  << "Number of GMT muons = " << nrL1Mu << "\n"
753  << std::endl;
754 
755  for (std::vector<const L1MuGMTCand*>::const_iterator iter =
756  m_candL1Mu->begin(); iter != m_candL1Mu->end(); iter++) {
757 
758  LogTrace("L1GlobalTrigger") << *(*iter) << std::endl;
759 
760  }
761 
762  LogTrace("L1GlobalTrigger") << std::endl;
763 
764 }
#define LogDebug(id)
bool isDebugEnabled()
std::bitset< L1GlobalTriggerReadoutSetup::NumberPhysTriggers > m_gtlAlgorithmOR
std::vector< L1GtAlgorithmEvaluation::ConditionEvaluationMap > m_conditionResultMaps
void init(const int nrL1Mu, const int numberPhysTriggers)
initialize the class (mainly reserve)
void print(std::ostream &myCout) const override
print condition
void printGmtData(const int iBxInEvent) const
print received Muon dataWord
void swapCombinationVector(std::vector< CombinationsInCond > &combinationVectorValue)
void setAlgoName(const std::string &algoNameValue)
std::map< std::string, L1GtAlgorithm > AlgorithmMap
map containing the algorithms
std::vector< CombinationsInCond > & gtAlgoCombinationVector()
ConditionMap::const_iterator CItCond
iterators through map containing the conditions
L1GlobalTriggerGTL(const edm::InputTag &mutag, edm::ConsumesCollector &&iC)
void print(std::ostream &myCout) const override
print condition
void swapGtObjectMap(std::vector< L1GlobalTriggerObjectMap > &gtObjectMapValue)
void setVerbosity(const int verbosity)
__gnu_cxx::hash_map< std::string, L1GtConditionEvaluation * > ConditionEvaluationMap
copy constructor
void print(std::ostream &myCout) const override
print condition
std::vector< L1GtLogicParser::OperandToken > & operandTokenVector()
const std::vector< L1GtObject > & objectType() const
get / set the trigger object type(s) in the condition
Definition: L1GtCondition.h:90
void swapOperandTokenVector(std::vector< L1GtLogicParser::OperandToken > &operandTokenVectorValue)
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:65
const std::vector< ConditionMap > & gtConditionMap() const
get / set / build the condition maps
const std::vector< std::vector< L1GtEnergySumTemplate > > & corEnergySumTemplate() const
std::vector< const L1MuGMTCand * > * m_candL1Mu
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
const L1GtConditionCategory cond1Category() const
void evaluateConditionStoreResult()
call evaluateCondition and save last result
void print(std::ostream &myCout) const override
print condition
void print(std::ostream &myCout) const override
print condition
void setVerbosity(const int verbosity)
int iEvent
Definition: GenABIO.cc:230
bool gtAlgoResult() const
get / set the result of the algorithm
void convertL1Scales(const L1CaloGeometry *, const L1MuTriggerScales *, const int, const int)
perform all scale conversions
int m_verbosity
verbosity level
const L1GtTriggerMenu * m_l1GtMenu
void print(std::ostream &myCout) const
print the full object map
L1GtConditionCategory
condition categories
void print(std::ostream &myCout) const override
print condition
std::bitset< L1GlobalTriggerReadoutSetup::NumberPhysTriggers > m_gtlDecisionWord
const L1GtConditionCategory cond0Category() const
get / set the category of the two sub-conditions
const unsigned int gtObjectNrBinsPhi(const L1GtObject &) const
return the number of phi bins for a GT object
void run(edm::Event &iEvent, const edm::EventSetup &evSetup, const L1GlobalTriggerPSB *ptrGtPSB, const bool produceL1GtObjectMapRecord, const int iBxInEvent, L1GlobalTriggerObjectMapRecord *gtObjectMapRecord, const unsigned int numberPhysTriggers, const int nrL1Mu, const int nrL1NoIsoEG, const int nrL1IsoEG, const int nrL1CenJet, const int nrL1ForJet, const int nrL1TauJet, const int nrL1JetCounts, const int ifMuEtaNumberBits, const int ifCaloEtaNumberBits)
run the GTL
const std::vector< std::vector< L1GtMuonTemplate > > & corMuonTemplate() const
bool isValid() const
Definition: HandleBase.h:74
unsigned long long m_l1GtMenuCacheID
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:475
const std::vector< std::vector< L1GtCaloTemplate > > & corCaloTemplate() const
#define LogTrace(id)
void print(std::ostream &myCout) const override
print condition
const int cond0Index() const
get / set the index of the two sub-conditions in the cor* vector from menu
const L1MuTriggerScales * m_l1MuTriggerScales
void setAlgoGtlResult(bool algoGtlResultValue)
L1GtEtaPhiConversions * m_gtEtaPhiConversions
Definition: L1GtObject.h:30
void print(std::ostream &myCout) const override
print condition
const T & get() const
Definition: EventSetup.h:58
void receiveGmtObjectData(edm::Event &, const edm::InputTag &, const int iBxInEvent, const bool receiveMu, const int nrL1Mu)
receive data from Global Muon Trigger
void print(std::ostream &myCout) const override
print condition
void setAlgoBitNumber(int algoBitNumberValue)
HLT enums.
void setGtCorrParDeltaPhiNrBins(const int &)
virtual void print(std::ostream &myCout) const
print all the performed conversions
const AlgorithmMap & gtAlgorithmMap() const
get / set the algorithm map (by name)
ConditionEvaluationMap::iterator ItEvalMap
void print(std::ostream &myCout) const
const L1CaloGeometry * m_l1CaloGeometry
T const * product() const
Definition: ESHandle.h:86
void print(std::ostream &myCout) const override
print condition
void evaluateAlgorithm(const int chipNumber, const std::vector< ConditionEvaluationMap > &)
evaluate an algorithm
unsigned long long m_l1MuTriggerScalesCacheID
void reset()
clear GTL
unsigned long long m_l1CaloGeometryCacheID
void setGtCorrParDeltaPhiNrBins(const int &)