CMS 3D CMS Logo

GlobalBoard.cc
Go to the documentation of this file.
1 
19 // this class header
21 
22 // system include files
23 #include <ext/hash_map>
24 
25 // user include files
29 
39 
42 
43 // Conditions for uGt
48 
50 
53 
55 
56 // forward declarations
57 
58 // constructor
60  : m_candL1Mu(new BXVector<const l1t::Muon*>),
61  m_candL1EG(new BXVector<const l1t::L1Candidate*>),
62  m_candL1Tau(new BXVector<const l1t::L1Candidate*>),
63  m_candL1Jet(new BXVector<const l1t::L1Candidate*>),
64  m_candL1EtSum(new BXVector<const l1t::EtSum*>),
65  m_candL1External(new BXVector<const GlobalExtBlk*>),
66  m_firstEv(true),
67  m_firstEvLumiSegment(true),
68  m_currentLumi(0),
69  m_isDebugEnabled(edm::isDebugEnabled()) {
71 
72  m_gtlAlgorithmOR.reset();
73  m_gtlDecisionWord.reset();
74 
75  // initialize cached IDs
76  m_l1GtMenuCacheID = 0ULL;
79 
80  // Counter for number of events board sees
82 
83  // Need to expand use with more than one uGt GlobalBoard for now assume 1
84  m_uGtBoardNumber = 0;
85  m_uGtFinalBoard = true;
86 }
87 
88 // destructor
90  //reset(); //why would we need a reset?
91  delete m_candL1Mu;
92  delete m_candL1EG;
93  delete m_candL1Tau;
94  delete m_candL1Jet;
95  delete m_candL1EtSum;
96  delete m_candL1External;
97 
98  // delete m_gtEtaPhiConversions;
99 }
100 
101 // operations
102 void l1t::GlobalBoard::setBxFirst(int bx) { m_bxFirst_ = bx; }
103 
104 void l1t::GlobalBoard::setBxLast(int bx) { m_bxLast_ = bx; }
105 
106 void l1t::GlobalBoard::init(const int numberPhysTriggers,
107  const int nrL1Mu,
108  const int nrL1EG,
109  const int nrL1Tau,
110  const int nrL1Jet,
111  int bxFirst,
112  int bxLast) {
113  setBxFirst(bxFirst);
114  setBxLast(bxLast);
115 
116  m_candL1Mu->setBXRange(m_bxFirst_, m_bxLast_);
117  m_candL1EG->setBXRange(m_bxFirst_, m_bxLast_);
118  m_candL1Tau->setBXRange(m_bxFirst_, m_bxLast_);
119  m_candL1Jet->setBXRange(m_bxFirst_, m_bxLast_);
120  m_candL1EtSum->setBXRange(m_bxFirst_, m_bxLast_);
121  m_candL1External->setBXRange(m_bxFirst_, m_bxLast_);
122 
123  m_uGtAlgBlk.reset();
124 
125  LogDebug("L1TGlobal") << "\t Initializing Board with bxFirst = " << m_bxFirst_ << ", bxLast = " << m_bxLast_
126  << std::endl;
127 }
128 
129 // receive data from Calorimeter
131  const edm::EDGetTokenT<BXVector<l1t::EGamma>>& egInputToken,
132  const edm::EDGetTokenT<BXVector<l1t::Tau>>& tauInputToken,
133  const edm::EDGetTokenT<BXVector<l1t::Jet>>& jetInputToken,
134  const edm::EDGetTokenT<BXVector<l1t::EtSum>>& sumInputToken,
135  const bool receiveEG,
136  const int nrL1EG,
137  const bool receiveTau,
138  const int nrL1Tau,
139  const bool receiveJet,
140  const int nrL1Jet,
141  const bool receiveEtSums) {
142  if (m_verbosity) {
143  LogDebug("L1TGlobal") << "\n**** Board receiving Calo Data "
144  //<< "\n from input tag " << caloInputTag << "\n"
145  << std::endl;
146  }
147 
148  resetCalo();
149 
150  // get data from Calorimeter
151  if (receiveEG) {
153  iEvent.getByToken(egInputToken, egData);
154 
155  if (!egData.isValid()) {
156  if (m_verbosity) {
157  edm::LogWarning("L1TGlobal") << "\nWarning: BXVector<l1t::EGamma> with input tag "
158  //<< caloInputTag
159  << "\nrequested in configuration, but not found in the event.\n"
160  << std::endl;
161  }
162  } else {
163  // bx in EG data
164  for (int i = egData->getFirstBX(); i <= egData->getLastBX(); ++i) {
165  // Prevent from pushing back bx that is outside of allowed range
166  if (i < m_bxFirst_ || i > m_bxLast_)
167  continue;
168 
169  //Loop over EG in this bx
170  int nObj = 0;
171  for (std::vector<l1t::EGamma>::const_iterator eg = egData->begin(i); eg != egData->end(i); ++eg) {
172  if (nObj < nrL1EG) {
173  (*m_candL1EG).push_back(i, &(*eg));
174  } else {
175  edm::LogWarning("L1TGlobal") << " Too many EG (" << nObj << ") for uGT Configuration maxEG =" << nrL1EG
176  << std::endl;
177  }
178  LogDebug("L1TGlobal") << "EG Pt " << eg->hwPt() << " Eta " << eg->hwEta() << " Phi " << eg->hwPhi()
179  << " Qual " << eg->hwQual() << " Iso " << eg->hwIso() << std::endl;
180 
181  nObj++;
182  } //end loop over EG in bx
183  } //end loop over bx
184 
185  } //end if over valid EG data
186 
187  } //end if ReveiveEG data
188 
189  if (receiveTau) {
191  iEvent.getByToken(tauInputToken, tauData);
192 
193  if (!tauData.isValid()) {
194  if (m_verbosity) {
195  edm::LogWarning("L1TGlobal") << "\nWarning: BXVector<l1t::Tau> with input tag "
196  //<< caloInputTag
197  << "\nrequested in configuration, but not found in the event.\n"
198  << std::endl;
199  }
200  } else {
201  // bx in tau data
202  for (int i = tauData->getFirstBX(); i <= tauData->getLastBX(); ++i) {
203  // Prevent from pushing back bx that is outside of allowed range
204  if (i < m_bxFirst_ || i > m_bxLast_)
205  continue;
206 
207  //Loop over tau in this bx
208  int nObj = 0;
209  for (std::vector<l1t::Tau>::const_iterator tau = tauData->begin(i); tau != tauData->end(i); ++tau) {
210  if (nObj < nrL1Tau) {
211  (*m_candL1Tau).push_back(i, &(*tau));
212  } else {
213  LogTrace("L1TGlobal") << " Too many Tau (" << nObj << ") for uGT Configuration maxTau =" << nrL1Tau
214  << std::endl;
215  }
216 
217  LogDebug("L1TGlobal") << "tau Pt " << tau->hwPt() << " Eta " << tau->hwEta() << " Phi " << tau->hwPhi()
218  << " Qual " << tau->hwQual() << " Iso " << tau->hwIso() << std::endl;
219  nObj++;
220 
221  } //end loop over tau in bx
222  } //end loop over bx
223 
224  } //end if over valid tau data
225 
226  } //end if ReveiveTau data
227 
228  if (receiveJet) {
230  iEvent.getByToken(jetInputToken, jetData);
231 
232  if (!jetData.isValid()) {
233  if (m_verbosity) {
234  edm::LogWarning("L1TGlobal") << "\nWarning: BXVector<l1t::Jet> with input tag "
235  //<< caloInputTag
236  << "\nrequested in configuration, but not found in the event.\n"
237  << std::endl;
238  }
239  } else {
240  // bx in jet data
241  for (int i = jetData->getFirstBX(); i <= jetData->getLastBX(); ++i) {
242  // Prevent from pushing back bx that is outside of allowed range
243  if (i < m_bxFirst_ || i > m_bxLast_)
244  continue;
245 
246  //Loop over jet in this bx
247  int nObj = 0;
248  for (std::vector<l1t::Jet>::const_iterator jet = jetData->begin(i); jet != jetData->end(i); ++jet) {
249  if (nObj < nrL1Jet) {
250  (*m_candL1Jet).push_back(i, &(*jet));
251  } else {
252  edm::LogWarning("L1TGlobal") << " Too many Jets (" << nObj << ") for uGT Configuration maxJet =" << nrL1Jet
253  << std::endl;
254  }
255 
256  LogDebug("L1TGlobal") << "Jet Pt " << jet->hwPt() << " Eta " << jet->hwEta() << " Phi " << jet->hwPhi()
257  << " Qual " << jet->hwQual() << " Iso " << jet->hwIso() << std::endl;
258  nObj++;
259  } //end loop over jet in bx
260  } //end loop over bx
261 
262  } //end if over valid jet data
263 
264  } //end if ReveiveJet data
265 
266  if (receiveEtSums) {
268  iEvent.getByToken(sumInputToken, etSumData);
269 
270  if (!etSumData.isValid()) {
271  if (m_verbosity) {
272  edm::LogWarning("L1TGlobal") << "\nWarning: BXVector<l1t::EtSum> with input tag "
273  //<< caloInputTag
274  << "\nrequested in configuration, but not found in the event.\n"
275  << std::endl;
276  }
277  } else {
278  for (int i = etSumData->getFirstBX(); i <= etSumData->getLastBX(); ++i) {
279  // Prevent from pushing back bx that is outside of allowed range
280  if (i < m_bxFirst_ || i > m_bxLast_)
281  continue;
282 
283  //Loop over jet in this bx
284  for (std::vector<l1t::EtSum>::const_iterator etsum = etSumData->begin(i); etsum != etSumData->end(i); ++etsum) {
285  (*m_candL1EtSum).push_back(i, &(*etsum));
286 
287  /* In case we need to split these out
288  switch ( etsum->getType() ) {
289  case l1t::EtSum::EtSumType::kMissingEt:
290  {
291  //(*m_candETM).push_back(i,&(*etsum));
292  LogDebug("L1TGlobal") << "ETM: Pt " << etsum->hwPt() << " Phi " << etsum->hwPhi() << std::endl;
293  }
294  break;
295  case l1t::EtSum::EtSumType::kMissingHt:
296  {
297  //(*m_candHTM).push_back(i,&(*etsum));
298  LogDebug("L1TGlobal") << "HTM: Pt " << etsum->hwPt() << " Phi " << etsum->hwPhi() << std::endl;
299  }
300  break;
301  case l1t::EtSum::EtSumType::kTotalEt:
302  {
303  //(*m_candETT).push_back(i,&(*etsum));
304  LogDebug("L1TGlobal") << "ETT: Pt " << etsum->hwPt() << std::endl;
305  }
306  break;
307  case l1t::EtSum::EtSumType::kTotalHt:
308  {
309  //(*m_candHTT).push_back(i,&(*etsum));
310  LogDebug("L1TGlobal") << "HTT: Pt " << etsum->hwPt() << std::endl;
311  }
312  break;
313  case l1t::EtSum::EtSumType::kTowerCount:
314  {
315  //(*m_candTowerCount).push_back(i,&(*etsum));
316  LogDebug("L1TGlobal") << "TowerCount: " << etsum->hwPt() << std::endl;
317  }
318  break;
319  default:
320  LogDebug("L1TGlobal") << "Default encounted " << std::endl;
321  break;
322  }
323 */
324 
325  } //end loop over jet in bx
326  } //end loop over Bx
327  }
328  }
329 }
330 
331 // receive data from Global Muon Trigger
333  const edm::EDGetTokenT<BXVector<l1t::Muon>>& muInputToken,
334  const bool receiveMu,
335  const int nrL1Mu) {
336  if (m_verbosity) {
337  LogDebug("L1TGlobal") << "\n**** GlobalBoard receiving muon data = "
338  //<< "\n from input tag " << muInputTag << "\n"
339  << std::endl;
340  }
341 
342  resetMu();
343 
344  // get data from Global Muon Trigger
345  if (receiveMu) {
347  iEvent.getByToken(muInputToken, muonData);
348 
349  if (!muonData.isValid()) {
350  if (m_verbosity) {
351  edm::LogWarning("L1TGlobal") << "\nWarning: BXVector<l1t::Muon> with input tag "
352  //<< muInputTag
353  << "\nrequested in configuration, but not found in the event.\n"
354  << std::endl;
355  }
356  } else {
357  // bx in muon data
358  for (int i = muonData->getFirstBX(); i <= muonData->getLastBX(); ++i) {
359  // Prevent from pushing back bx that is outside of allowed range
360  if (i < m_bxFirst_ || i > m_bxLast_)
361  continue;
362 
363  //Loop over Muons in this bx
364  int nObj = 0;
365  for (std::vector<l1t::Muon>::const_iterator mu = muonData->begin(i); mu != muonData->end(i); ++mu) {
366  if (nObj < nrL1Mu) {
367  (*m_candL1Mu).push_back(i, &(*mu));
368  } else {
369  edm::LogWarning("L1TGlobal") << " Too many Muons (" << nObj << ") for uGT Configuration maxMu =" << nrL1Mu
370  << std::endl;
371  }
372 
373  LogDebug("L1TGlobal") << "Muon Pt " << mu->hwPt() << " EtaAtVtx " << mu->hwEtaAtVtx() << " PhiAtVtx "
374  << mu->hwPhiAtVtx() << " Qual " << mu->hwQual() << " Iso " << mu->hwIso()
375  << std::endl;
376  nObj++;
377  } //end loop over muons in bx
378  } //end loop over bx
379 
380  } //end if over valid muon data
381 
382  } //end if ReveiveMuon data
383 }
384 
385 // receive data from Global External Conditions
387  const edm::EDGetTokenT<BXVector<GlobalExtBlk>>& extInputToken,
388  const bool receiveExt) {
389  if (m_verbosity) {
390  LogDebug("L1TGlobal") << "\n**** GlobalBoard receiving external data = "
391  //<< "\n from input tag " << muInputTag << "\n"
392  << std::endl;
393  }
394 
395  resetExternal();
396 
397  // get data from Global Muon Trigger
398  if (receiveExt) {
400  iEvent.getByToken(extInputToken, extData);
401 
402  if (!extData.isValid()) {
403  if (m_verbosity) {
404  edm::LogWarning("L1TGlobal") << "\nWarning: BXVector<GlobalExtBlk> with input tag "
405  //<< muInputTag
406  << "\nrequested in configuration, but not found in the event.\n"
407  << std::endl;
408  }
409  } else {
410  // bx in muon data
411  for (int i = extData->getFirstBX(); i <= extData->getLastBX(); ++i) {
412  // Prevent from pushing back bx that is outside of allowed range
413  if (i < m_bxFirst_ || i > m_bxLast_)
414  continue;
415 
416  //Loop over ext in this bx
417  for (std::vector<GlobalExtBlk>::const_iterator ext = extData->begin(i); ext != extData->end(i); ++ext) {
418  (*m_candL1External).push_back(i, &(*ext));
419  } //end loop over ext in bx
420  } //end loop over bx
421 
422  } //end if over valid ext data
423 
424  } //end if ReveiveExt data
425 }
426 
427 // run GTL
429  const edm::EventSetup& evSetup,
430  const TriggerMenu* m_l1GtMenu,
431  const bool produceL1GtObjectMapRecord,
432  const int iBxInEvent,
433  std::unique_ptr<GlobalObjectMapRecord>& gtObjectMapRecord,
434  const unsigned int numberPhysTriggers,
435  const int nrL1Mu,
436  const int nrL1EG,
437  const int nrL1Tau,
438  const int nrL1Jet) {
439  const std::vector<ConditionMap>& conditionMap = m_l1GtMenu->gtConditionMap();
440  const AlgorithmMap& algorithmMap = m_l1GtMenu->gtAlgorithmMap();
441  const GlobalScales& gtScales = m_l1GtMenu->gtScales();
442  const std::string scaleSetName = gtScales.getScalesName();
443  LogDebug("L1TGlobal") << " L1 Menu Scales -- Set Name: " << scaleSetName << std::endl;
444 
445  // Reset AlgBlk for this bx
446  m_uGtAlgBlk.reset();
447  m_algInitialOr = false;
448  m_algPrescaledOr = false;
449  m_algIntermOr = false;
450  m_algFinalOr = false;
451  m_algFinalOrVeto = false;
452 
453  const std::vector<std::vector<MuonTemplate>>& corrMuon = m_l1GtMenu->corMuonTemplate();
454 
455  // Comment out for now
456  const std::vector<std::vector<CaloTemplate>>& corrCalo = m_l1GtMenu->corCaloTemplate();
457 
458  const std::vector<std::vector<EnergySumTemplate>>& corrEnergySum = m_l1GtMenu->corEnergySumTemplate();
459 
460  LogDebug("L1TGlobal") << "Size corrMuon " << corrMuon.size() << "\nSize corrCalo " << corrCalo.size()
461  << "\nSize corrSums " << corrEnergySum.size() << std::endl;
462 
463  // loop over condition maps (one map per condition chip)
464  // then loop over conditions in the map
465  // save the results in temporary maps
466 
467  // never happens in production but at first event...
468  if (m_conditionResultMaps.size() != conditionMap.size()) {
469  m_conditionResultMaps.clear();
470  m_conditionResultMaps.resize(conditionMap.size());
471  }
472 
473  int iChip = -1;
474 
475  for (std::vector<ConditionMap>::const_iterator itCondOnChip = conditionMap.begin();
476  itCondOnChip != conditionMap.end();
477  itCondOnChip++) {
478  iChip++;
479 
480  AlgorithmEvaluation::ConditionEvaluationMap& cMapResults = m_conditionResultMaps[iChip];
481 
482  for (CItCond itCond = itCondOnChip->begin(); itCond != itCondOnChip->end(); itCond++) {
483  // evaluate condition
484  switch ((itCond->second)->condCategory()) {
485  case CondMuon: {
486  // BLW Not sure what to do with this for now
487  const int ifMuEtaNumberBits = 0;
488 
489  MuCondition* muCondition = new MuCondition(itCond->second, this, nrL1Mu, ifMuEtaNumberBits);
490 
491  muCondition->setVerbosity(m_verbosity);
492 
493  muCondition->evaluateConditionStoreResult(iBxInEvent);
494 
495  // BLW COmment out for now
496  cMapResults[itCond->first] = muCondition;
497 
498  if (m_verbosity && m_isDebugEnabled) {
499  std::ostringstream myCout;
500  muCondition->print(myCout);
501 
502  LogTrace("L1TGlobal") << myCout.str() << std::endl;
503  }
504  //delete muCondition;
505 
506  } break;
507  case CondCalo: {
508  // BLW Not sure w hat to do with this for now
509  const int ifCaloEtaNumberBits = 0;
510 
511  CaloCondition* caloCondition =
512  new CaloCondition(itCond->second, this, nrL1EG, nrL1Jet, nrL1Tau, ifCaloEtaNumberBits);
513 
514  caloCondition->setVerbosity(m_verbosity);
515 
516  caloCondition->evaluateConditionStoreResult(iBxInEvent);
517 
518  cMapResults[itCond->first] = caloCondition;
519 
520  if (m_verbosity && m_isDebugEnabled) {
521  std::ostringstream myCout;
522  caloCondition->print(myCout);
523 
524  LogTrace("L1TGlobal") << myCout.str() << std::endl;
525  }
526  // delete caloCondition;
527 
528  } break;
529  case CondEnergySum: {
530  EnergySumCondition* eSumCondition = new EnergySumCondition(itCond->second, this);
531 
532  eSumCondition->setVerbosity(m_verbosity);
533  eSumCondition->evaluateConditionStoreResult(iBxInEvent);
534 
535  cMapResults[itCond->first] = eSumCondition;
536 
537  if (m_verbosity && m_isDebugEnabled) {
538  std::ostringstream myCout;
539  eSumCondition->print(myCout);
540 
541  LogTrace("L1TGlobal") << myCout.str() << std::endl;
542  }
543  // delete eSumCondition;
544 
545  } break;
546 
547  case CondExternal: {
548  ExternalCondition* extCondition = new ExternalCondition(itCond->second, this);
549 
550  extCondition->setVerbosity(m_verbosity);
551  extCondition->evaluateConditionStoreResult(iBxInEvent);
552 
553  cMapResults[itCond->first] = extCondition;
554 
555  if (m_verbosity && m_isDebugEnabled) {
556  std::ostringstream myCout;
557  extCondition->print(myCout);
558 
559  LogTrace("L1TGlobal") << myCout.str() << std::endl;
560  }
561  // delete extCondition;
562 
563  } break;
564  case CondCorrelation: {
565  // get first the sub-conditions
566  const CorrelationTemplate* corrTemplate = static_cast<const CorrelationTemplate*>(itCond->second);
567  const GtConditionCategory cond0Categ = corrTemplate->cond0Category();
568  const GtConditionCategory cond1Categ = corrTemplate->cond1Category();
569  const int cond0Ind = corrTemplate->cond0Index();
570  const int cond1Ind = corrTemplate->cond1Index();
571 
572  const GlobalCondition* cond0Condition = nullptr;
573  const GlobalCondition* cond1Condition = nullptr;
574 
575  // maximum number of objects received for evaluation of l1t::Type1s condition
576  int cond0NrL1Objects = 0;
577  int cond1NrL1Objects = 0;
578  LogDebug("L1TGlobal") << " cond0NrL1Objects" << cond0NrL1Objects << " cond1NrL1Objects " << cond1NrL1Objects
579  << std::endl;
580 
581  switch (cond0Categ) {
582  case CondMuon: {
583  cond0Condition = &((corrMuon[iChip])[cond0Ind]);
584  } break;
585  case CondCalo: {
586  cond0Condition = &((corrCalo[iChip])[cond0Ind]);
587  } break;
588  case CondEnergySum: {
589  cond0Condition = &((corrEnergySum[iChip])[cond0Ind]);
590  } break;
591  default: {
592  // do nothing, should not arrive here
593  } break;
594  }
595 
596  switch (cond1Categ) {
597  case CondMuon: {
598  cond1Condition = &((corrMuon[iChip])[cond1Ind]);
599  } break;
600  case CondCalo: {
601  cond1Condition = &((corrCalo[iChip])[cond1Ind]);
602  } break;
603  case CondEnergySum: {
604  cond1Condition = &((corrEnergySum[iChip])[cond1Ind]);
605  } break;
606  default: {
607  // do nothing, should not arrive here
608  } break;
609  }
610 
611  CorrCondition* correlationCond = new CorrCondition(itCond->second, cond0Condition, cond1Condition, this);
612 
613  correlationCond->setVerbosity(m_verbosity);
614  correlationCond->setScales(&gtScales);
615  correlationCond->evaluateConditionStoreResult(iBxInEvent);
616 
617  cMapResults[itCond->first] = correlationCond;
618 
619  if (m_verbosity && m_isDebugEnabled) {
620  std::ostringstream myCout;
621  correlationCond->print(myCout);
622 
623  LogTrace("L1TGlobal") << myCout.str() << std::endl;
624  }
625 
626  // delete correlationCond;
627 
628  } break;
630  // get first the sub-conditions
631  const CorrelationWithOverlapRemovalTemplate* corrTemplate =
632  static_cast<const CorrelationWithOverlapRemovalTemplate*>(itCond->second);
633  const GtConditionCategory cond0Categ = corrTemplate->cond0Category();
634  const GtConditionCategory cond1Categ = corrTemplate->cond1Category();
635  const GtConditionCategory cond2Categ = corrTemplate->cond2Category();
636  const int cond0Ind = corrTemplate->cond0Index();
637  const int cond1Ind = corrTemplate->cond1Index();
638  const int cond2Ind = corrTemplate->cond2Index();
639 
640  const GlobalCondition* cond0Condition = nullptr;
641  const GlobalCondition* cond1Condition = nullptr;
642  const GlobalCondition* cond2Condition = nullptr;
643 
644  // maximum number of objects received for evaluation of l1t::Type1s condition
645  int cond0NrL1Objects = 0;
646  int cond1NrL1Objects = 0;
647  int cond2NrL1Objects = 0;
648  LogDebug("L1TGlobal") << " cond0NrL1Objects" << cond0NrL1Objects << " cond1NrL1Objects " << cond1NrL1Objects
649  << " cond2NrL1Objects " << cond2NrL1Objects << std::endl;
650 
651  switch (cond0Categ) {
652  case CondMuon: {
653  cond0Condition = &((corrMuon[iChip])[cond0Ind]);
654  } break;
655  case CondCalo: {
656  cond0Condition = &((corrCalo[iChip])[cond0Ind]);
657  } break;
658  case CondEnergySum: {
659  cond0Condition = &((corrEnergySum[iChip])[cond0Ind]);
660  } break;
661  default: {
662  // do nothing, should not arrive here
663  } break;
664  }
665 
666  switch (cond1Categ) {
667  case CondMuon: {
668  cond1Condition = &((corrMuon[iChip])[cond1Ind]);
669  } break;
670  case CondCalo: {
671  cond1Condition = &((corrCalo[iChip])[cond1Ind]);
672  } break;
673  case CondEnergySum: {
674  cond1Condition = &((corrEnergySum[iChip])[cond1Ind]);
675  } break;
676  default: {
677  // do nothing, should not arrive here
678  } break;
679  }
680 
681  switch (cond2Categ) {
682  case CondMuon: {
683  cond2Condition = &((corrMuon[iChip])[cond2Ind]);
684  } break;
685  case CondCalo: {
686  cond2Condition = &((corrCalo[iChip])[cond2Ind]);
687  } break;
688  case CondEnergySum: {
689  cond2Condition = &((corrEnergySum[iChip])[cond2Ind]);
690  } break;
691  default: {
692  // do nothing, should not arrive here
693  } break;
694  }
695 
696  CorrWithOverlapRemovalCondition* correlationCondWOR =
697  new CorrWithOverlapRemovalCondition(itCond->second, cond0Condition, cond1Condition, cond2Condition, this);
698 
699  correlationCondWOR->setVerbosity(m_verbosity);
700  correlationCondWOR->setScales(&gtScales);
701  correlationCondWOR->evaluateConditionStoreResult(iBxInEvent);
702 
703  cMapResults[itCond->first] = correlationCondWOR;
704 
705  if (m_verbosity && m_isDebugEnabled) {
706  std::ostringstream myCout;
707  correlationCondWOR->print(myCout);
708 
709  LogTrace("L1TGlobal") << myCout.str() << std::endl;
710  }
711 
712  // delete correlationCondWOR;
713 
714  } break;
715  case CondNull: {
716  // do nothing
717 
718  } break;
719  default: {
720  // do nothing
721 
722  } break;
723  }
724  }
725  }
726 
727  // loop over algorithm map
729  // empty vector for object maps - filled during loop
730  std::vector<GlobalObjectMap> objMapVec;
731  if (produceL1GtObjectMapRecord && (iBxInEvent == 0))
732  objMapVec.reserve(numberPhysTriggers);
733 
734  for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
735  AlgorithmEvaluation gtAlg(itAlgo->second);
736  gtAlg.evaluateAlgorithm((itAlgo->second).algoChipNumber(), m_conditionResultMaps);
737 
738  int algBitNumber = (itAlgo->second).algoBitNumber();
739  bool algResult = gtAlg.gtAlgoResult();
740 
741  LogDebug("L1TGlobal") << " ===> for iBxInEvent = " << iBxInEvent << ":\t algBitName = " << itAlgo->first
742  << ",\t algBitNumber = " << algBitNumber << ",\t algResult = " << algResult << std::endl;
743 
744  if (algResult) {
745  // m_gtlAlgorithmOR.set(algBitNumber);
746  m_uGtAlgBlk.setAlgoDecisionInitial(algBitNumber, algResult);
747  m_algInitialOr = true;
748  }
749 
750  if (m_verbosity && m_isDebugEnabled) {
751  std::ostringstream myCout;
752  (itAlgo->second).print(myCout);
753  gtAlg.print(myCout);
754 
755  LogTrace("L1TGlobal") << myCout.str() << std::endl;
756  }
757 
758  // object maps only for BxInEvent = 0
759  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) {
760  std::vector<L1TObjectTypeInCond> otypes;
761  for (auto iop = gtAlg.operandTokenVector().begin(); iop != gtAlg.operandTokenVector().end(); ++iop) {
762  //cout << "INFO: operand name: " << iop->tokenName << "\n";
763  int myChip = -1;
764  int found = 0;
766  for (auto imap = conditionMap.begin(); imap != conditionMap.end(); imap++) {
767  myChip++;
768  auto match = imap->find(iop->tokenName);
769 
770  if (match != imap->end()) {
771  found = 1;
772  //cout << "DEBUG: found match for " << iop->tokenName << " at " << match->first << "\n";
773 
774  otype = match->second->objectType();
775 
776  for (auto itype = otype.begin(); itype != otype.end(); itype++) {
777  //cout << "type: " << *itype << "\n";
778  }
779  }
780  }
781  if (!found) {
782  edm::LogWarning("L1TGlobal") << "\n Failed to find match for operand token " << iop->tokenName << "\n";
783  } else {
784  otypes.push_back(otype);
785  }
786  }
787 
788  // set object map
789  GlobalObjectMap objMap;
790 
791  objMap.setAlgoName(itAlgo->first);
792  objMap.setAlgoBitNumber(algBitNumber);
793  objMap.setAlgoGtlResult(algResult);
796  // gtAlg is empty now...
797  objMap.swapObjectTypeVector(otypes);
798 
799  if (m_verbosity && m_isDebugEnabled) {
800  std::ostringstream myCout1;
801  objMap.print(myCout1);
802 
803  LogTrace("L1TGlobal") << myCout1.str() << std::endl;
804  }
805 
806  objMapVec.push_back(objMap);
807  }
808  }
809 
810  // object maps only for BxInEvent = 0
811  if (produceL1GtObjectMapRecord && (iBxInEvent == 0)) {
812  gtObjectMapRecord->swapGtObjectMap(objMapVec);
813  }
814 
815  // loop over condition maps (one map per condition chip)
816  // then loop over conditions in the map
817  // delete the conditions created with new, zero pointer, do not clear map, keep the vector as is...
818  for (std::vector<AlgorithmEvaluation::ConditionEvaluationMap>::iterator itCondOnChip = m_conditionResultMaps.begin();
819  itCondOnChip != m_conditionResultMaps.end();
820  itCondOnChip++) {
821  for (AlgorithmEvaluation::ItEvalMap itCond = itCondOnChip->begin(); itCond != itCondOnChip->end(); itCond++) {
822  delete itCond->second;
823  itCond->second = nullptr;
824  }
825  }
826 }
827 
828 // run GTL
830  const int iBxInEvent,
831  const int totalBxInEvent,
832  const unsigned int numberPhysTriggers,
833  const std::vector<int>& prescaleFactorsAlgoTrig,
834  const std::vector<unsigned int>& triggerMaskAlgoTrig,
835  const std::vector<int>& triggerMaskVetoAlgoTrig,
836  const bool algorithmTriggersUnprescaled,
837  const bool algorithmTriggersUnmasked) {
838  if (m_verbosity) {
839  LogDebug("L1TGlobal") << "\n**** GlobalBoard apply Final Decision Logic " << std::endl;
840  }
841 
842  // prescale counters are reset at the beginning of the luminosity segment
843  if (m_firstEv) {
844  // prescale counters: numberPhysTriggers counters per bunch cross
845  m_prescaleCounterAlgoTrig.reserve(numberPhysTriggers * totalBxInEvent);
846 
847  for (int iBxInEvent = 0; iBxInEvent <= totalBxInEvent; ++iBxInEvent) {
848  m_prescaleCounterAlgoTrig.push_back(prescaleFactorsAlgoTrig);
849  }
850  m_firstEv = false;
851  m_currentLumi = iEvent.luminosityBlock();
852  }
853 
854  // update and clear prescales at the beginning of the luminosity segment
855  if (m_firstEvLumiSegment || m_currentLumi != iEvent.luminosityBlock()) {
856  m_prescaleCounterAlgoTrig.clear();
857  for (int iBxInEvent = 0; iBxInEvent <= totalBxInEvent; ++iBxInEvent) {
858  m_prescaleCounterAlgoTrig.push_back(prescaleFactorsAlgoTrig);
859  }
860 
861  m_firstEvLumiSegment = false;
862  m_currentLumi = iEvent.luminosityBlock();
863  }
864 
865  // Copy Algorithm bits to Prescaled word
866  // Prescaling and Masking done below if requested.
867  m_uGtAlgBlk.copyInitialToInterm();
868 
869  // -------------------------------------------
870  // Apply Prescales or skip if turned off
871  // -------------------------------------------
872  if (!algorithmTriggersUnprescaled) {
873  // iBxInEvent is ... -2 -1 0 1 2 ... while counters are 0 1 2 3 4 ...
874  int inBxInEvent = totalBxInEvent / 2 + iBxInEvent;
875 
876  bool temp_algPrescaledOr = false;
877  bool alreadyReported = false;
878  for (unsigned int iBit = 0; iBit < numberPhysTriggers; ++iBit) {
879  bool bitValue = m_uGtAlgBlk.getAlgoDecisionInitial(iBit);
880  if (bitValue) {
881  // Make sure algo bit in range, warn otherwise
882  if (iBit < prescaleFactorsAlgoTrig.size()) {
883  if (prescaleFactorsAlgoTrig.at(iBit) != 1) {
884  (m_prescaleCounterAlgoTrig.at(inBxInEvent).at(iBit))--;
885  if (m_prescaleCounterAlgoTrig.at(inBxInEvent).at(iBit) == 0) {
886  // bit already true in algoDecisionWord, just reset counter
887  m_prescaleCounterAlgoTrig.at(inBxInEvent).at(iBit) = prescaleFactorsAlgoTrig.at(iBit);
888  temp_algPrescaledOr = true;
889  } else {
890  // change bit to false in prescaled word and final decision word
891  m_uGtAlgBlk.setAlgoDecisionInterm(iBit, false);
892 
893  } //if Prescale counter reached zero
894  } //if prescale factor is not 1 (ie. no prescale)
895  else {
896  temp_algPrescaledOr = true;
897  }
898  } // require bit in range
899  else if (!alreadyReported) {
900  alreadyReported = true;
901  edm::LogWarning("L1TGlobal") << "\nWarning: algoBit >= prescaleFactorsAlgoTrig.size() in bx " << iBxInEvent
902  << std::endl;
903  }
904  } //if algo bit is set true
905  } //loop over alg bits
906 
907  m_algPrescaledOr = temp_algPrescaledOr; //temp
908 
909  } else {
910  // Since not Prescaling just take OR of Initial Work
911  m_algPrescaledOr = m_algInitialOr;
912 
913  } //if we are going to apply prescales.
914 
915  // Copy Algorithm bits fron Prescaled word to Final Word
916  // Masking done below if requested.
917  m_uGtAlgBlk.copyIntermToFinal();
918 
919  if (!algorithmTriggersUnmasked) {
920  bool temp_algFinalOr = false;
921  bool alreadyReported = false;
922  for (unsigned int iBit = 0; iBit < numberPhysTriggers; ++iBit) {
923  bool bitValue = m_uGtAlgBlk.getAlgoDecisionInterm(iBit);
924 
925  if (bitValue) {
926  //bool isMasked = ( triggerMaskAlgoTrig.at(iBit) == 0 );
927  bool isMasked = false;
928  if (iBit < triggerMaskAlgoTrig.size())
929  isMasked = (triggerMaskAlgoTrig.at(iBit) == 0);
930  else if (!alreadyReported) {
931  alreadyReported = true;
932  edm::LogWarning("L1TGlobal") << "\nWarning: algoBit >= triggerMaskAlgoTrig.size() in bx " << iBxInEvent
933  << std::endl;
934  }
935 
936  bool passMask = (bitValue && !isMasked);
937 
938  if (passMask)
939  temp_algFinalOr = true;
940  else
941  m_uGtAlgBlk.setAlgoDecisionFinal(iBit, false);
942 
943  // Check if veto mask is true, if it is, set the event veto flag.
944  if (triggerMaskVetoAlgoTrig.at(iBit) == 1)
945  m_algFinalOrVeto = true;
946  }
947  }
948 
949  m_algIntermOr = temp_algFinalOr;
950 
951  } else {
952  m_algIntermOr = m_algPrescaledOr;
953 
954  }
955 
956  // Set FinalOR for this board
957  m_algFinalOr = (m_algIntermOr & !m_algFinalOrVeto);
958 }
959 
960 // Fill DAQ Record
962  std::unique_ptr<GlobalAlgBlkBxCollection>& uGtAlgRecord,
963  int prescaleSet,
964  int menuUUID,
965  int firmwareUUID) {
966  if (m_verbosity) {
967  LogDebug("L1TGlobal") << "\n**** GlobalBoard fill DAQ Records for bx= " << iBxInEvent << std::endl;
968  }
969 
970  // Set header information
971  m_uGtAlgBlk.setbxInEventNr((iBxInEvent & 0xF));
972  m_uGtAlgBlk.setPreScColumn(prescaleSet);
973  m_uGtAlgBlk.setL1MenuUUID(menuUUID);
974  m_uGtAlgBlk.setL1FirmwareUUID(firmwareUUID);
975 
976  m_uGtAlgBlk.setFinalORVeto(m_algFinalOrVeto);
977  m_uGtAlgBlk.setFinalORPreVeto(m_algIntermOr);
978  m_uGtAlgBlk.setFinalOR(m_algFinalOr);
979 
980  uGtAlgRecord->push_back(iBxInEvent, m_uGtAlgBlk);
981 }
982 
983 // clear GTL
985  resetMu();
986  resetCalo();
987  resetExternal();
988 
989  m_uGtAlgBlk.reset();
990 
991  m_gtlDecisionWord.reset();
992  m_gtlAlgorithmOR.reset();
993 }
994 
995 // clear muon
997  m_candL1Mu->clear();
998  m_candL1Mu->setBXRange(m_bxFirst_, m_bxLast_);
999 }
1000 
1001 // clear calo
1003  m_candL1EG->clear();
1004  m_candL1Tau->clear();
1005  m_candL1Jet->clear();
1006  m_candL1EtSum->clear();
1007 
1008  m_candL1EG->setBXRange(m_bxFirst_, m_bxLast_);
1009  m_candL1Tau->setBXRange(m_bxFirst_, m_bxLast_);
1010  m_candL1Jet->setBXRange(m_bxFirst_, m_bxLast_);
1011  m_candL1EtSum->setBXRange(m_bxFirst_, m_bxLast_);
1012 }
1013 
1015  m_candL1External->clear();
1016  m_candL1External->setBXRange(m_bxFirst_, m_bxLast_);
1017 }
1018 
1019 // print Global Muon Trigger data received
1020 void l1t::GlobalBoard::printGmtData(const int iBxInEvent) const {
1021  LogTrace("L1TGlobal") << "\nl1t::L1GlobalTrigger: uGMT data received for BxInEvent = " << iBxInEvent << std::endl;
1022 
1023  int nrL1Mu = m_candL1Mu->size(iBxInEvent);
1024  LogTrace("L1TGlobal") << "Number of GMT muons = " << nrL1Mu << "\n" << std::endl;
1025 
1026  LogTrace("L1TGlobal") << std::endl;
1027 }
l1t::AlgorithmEvaluation::ConditionEvaluationMap
__gnu_cxx ::hash_map< std::string, ConditionEvaluation * > ConditionEvaluationMap
copy constructor
Definition: AlgorithmEvaluation.h:87
ext
Definition: memstream.h:15
TriggerMenu::gtScales
const l1t::GlobalScales & gtScales() const
get the scales
Definition: TriggerMenu.h:172
l1t::AlgorithmEvaluation::ItEvalMap
ConditionEvaluationMap::iterator ItEvalMap
Definition: AlgorithmEvaluation.h:89
l1t::GlobalBoard::reset
void reset()
clear uGT
Definition: GlobalBoard.cc:984
mps_fire.i
i
Definition: mps_fire.py:428
GlobalBoard.h
MessageLogger.h
l1t::AlgorithmEvaluation::operandTokenVector
std::vector< GlobalLogicParser::OperandToken > & operandTokenVector()
Definition: AlgorithmEvaluation.h:104
CorrelationWithOverlapRemovalTemplate.h
GlobalObjectMap
Definition: GlobalObjectMap.h:32
ESHandle.h
metsig::tau
Definition: SignAlgoResolutions.h:49
l1t::GlobalBoard::m_uGtFinalBoard
bool m_uGtFinalBoard
Definition: GlobalBoard.h:252
l1t::GlobalBoard::receiveExternalData
void receiveExternalData(edm::Event &, const edm::EDGetTokenT< BXVector< GlobalExtBlk >> &, const bool receiveExt)
Definition: GlobalBoard.cc:386
amptDefaultParameters_cff.mu
mu
Definition: amptDefaultParameters_cff.py:16
l1t::GlobalBoard::setBxFirst
void setBxFirst(int bx)
Definition: GlobalBoard.cc:102
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
l1t::ConditionEvaluation::setVerbosity
void setVerbosity(const int verbosity)
Definition: ConditionEvaluation.h:80
TriggerMenu::corCaloTemplate
const std::vector< std::vector< CaloTemplate > > & corCaloTemplate() const
Definition: TriggerMenu.h:149
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
l1t::CondCorrelationWithOverlapRemoval
Definition: GlobalDefinitions.h:99
TriggerMenu::gtAlgorithmMap
const l1t::AlgorithmMap & gtAlgorithmMap() const
get / set the algorithm map (by name)
Definition: TriggerMenu.h:162
l1t::GlobalBoard::runFDL
void runFDL(edm::Event &iEvent, const int iBxInEvent, const int totalBxInEvent, const unsigned int numberPhysTriggers, const std::vector< int > &prescaleFactorsAlgoTrig, const std::vector< unsigned int > &triggerMaskAlgoTrig, const std::vector< int > &triggerMaskVetoAlgoTrig, const bool algorithmTriggersUnprescaled, const bool algorithmTriggersUnmasked)
run the uGT FDL (Apply Prescales and Veto)
Definition: GlobalBoard.cc:829
GlobalCondition.h
GlobalObjectMap::swapCombinationVector
void swapCombinationVector(std::vector< CombinationsInCond > &combinationVectorValue)
Definition: GlobalObjectMap.h:64
watchdog.const
const
Definition: watchdog.py:83
CorrelationWithOverlapRemovalTemplate::cond0Category
const l1t::GtConditionCategory cond0Category() const
get / set the category of the thre sub-conditions
Definition: CorrelationWithOverlapRemovalTemplate.h:108
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle
Definition: AssociativeIterator.h:50
l1t::CaloCondition
Definition: CaloCondition.h:38
jetData
Definition: GctErrorAnalyzerDefinitions.h:19
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
l1t::CorrCondition::print
void print(std::ostream &myCout) const override
print condition
Definition: CorrCondition.cc:1291
Muon
Definition: Muon.py:1
l1t::CorrWithOverlapRemovalCondition
Definition: CorrWithOverlapRemovalCondition.h:39
CorrelationTemplate::cond0Category
const l1t::GtConditionCategory cond0Category() const
get / set the category of the two sub-conditions
Definition: CorrelationTemplate.h:90
BXVector
Definition: BXVector.h:15
GlobalAlgorithm.h
l1t::CondCalo
Definition: GlobalDefinitions.h:95
l1t::ExternalCondition::print
void print(std::ostream &myCout) const override
print condition
Definition: ExternalCondition.cc:152
l1t::CondNull
Definition: GlobalDefinitions.h:93
MuonTemplate.h
l1t::CorrCondition::setScales
void setScales(const GlobalScales *)
Definition: CorrCondition.cc:92
l1t::L1Candidate
Definition: L1Candidate.h:15
ExternalTemplate.h
TriggerMenu::corMuonTemplate
const std::vector< std::vector< MuonTemplate > > & corMuonTemplate() const
Definition: TriggerMenu.h:144
CorrelationTemplate::cond1Index
const int cond1Index() const
Definition: CorrelationTemplate.h:100
CorrelationWithOverlapRemovalTemplate::cond0Index
const int cond0Index() const
get / set the index of the two sub-conditions in the cor* vector from menu
Definition: CorrelationWithOverlapRemovalTemplate.h:119
CorrelationWithOverlapRemovalTemplate::cond1Category
const l1t::GtConditionCategory cond1Category() const
Definition: CorrelationWithOverlapRemovalTemplate.h:110
l1t::GlobalBoard::~GlobalBoard
virtual ~GlobalBoard()
Definition: GlobalBoard.cc:89
l1t::CorrWithOverlapRemovalCondition::print
void print(std::ostream &myCout) const override
print condition
Definition: CorrWithOverlapRemovalCondition.cc:2199
GlobalObjectMap::setAlgoBitNumber
void setAlgoBitNumber(int algoBitNumberValue)
Definition: GlobalObjectMap.h:49
l1t::AlgorithmEvaluation::gtAlgoResult
bool gtAlgoResult() const
get / set the result of the algorithm
Definition: AlgorithmEvaluation.h:93
CaloCondition.h
l1t::CaloCondition::print
void print(std::ostream &myCout) const override
print condition
Definition: CaloCondition.cc:540
l1t::GlobalScales
Definition: GlobalScales.h:25
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
GlobalObjectMap::setAlgoGtlResult
void setAlgoGtlResult(bool algoGtlResultValue)
Definition: GlobalObjectMap.h:55
funct::true
true
Definition: Factorize.h:173
CorrelationTemplate::cond0Index
const int cond0Index() const
get / set the index of the two sub-conditions in the cor* vector from menu
Definition: CorrelationTemplate.h:98
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
MessageDrop.h
l1t::GlobalScales::getScalesName
virtual std::string getScalesName() const
Definition: GlobalScales.cc:27
print
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:46
l1t
delete x;
Definition: CaloConfig.h:22
GlobalObjectMap.h
l1t::MuCondition::print
void print(std::ostream &myCout) const override
print condition
Definition: MuCondition.cc:484
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
l1t::AlgorithmEvaluation
Definition: AlgorithmEvaluation.h:68
CorrWithOverlapRemovalCondition.h
l1t::EtSum
Definition: EtSum.h:20
TriggerMenu.h
l1t::EnergySumCondition::print
void print(std::ostream &myCout) const override
print condition
Definition: EnergySumCondition.cc:303
l1t::MuCondition
Definition: MuCondition.h:37
iEvent
int iEvent
Definition: GenABIO.cc:224
l1t::AlgorithmMap
std::map< std::string, GlobalAlgorithm > AlgorithmMap
map containing the algorithms
Definition: TriggerMenuFwd.h:32
l1t::GlobalBoard::receiveMuonObjectData
void receiveMuonObjectData(edm::Event &, const edm::EDGetTokenT< BXVector< l1t::Muon >> &, const bool receiveMu, const int nrL1Mu)
Definition: GlobalBoard.cc:332
l1t::GlobalBoard::m_l1MuTriggerScalesCacheID
unsigned long long m_l1MuTriggerScalesCacheID
Definition: GlobalBoard.h:199
ConditionEvaluation.h
TriggerMenu::corEnergySumTemplate
const std::vector< std::vector< EnergySumTemplate > > & corEnergySumTemplate() const
Definition: TriggerMenu.h:155
l1t::GlobalBoard::m_uGtBoardNumber
int m_uGtBoardNumber
Definition: GlobalBoard.h:251
MuCondition.h
GlobalExtBlk
Definition: GlobalExtBlk.h:34
GlobalObjectMap::swapObjectTypeVector
void swapObjectTypeVector(std::vector< L1TObjectTypeInCond > &objectTypeVectorValue)
Definition: GlobalObjectMap.h:85
l1t::GlobalBoard::m_gtlAlgorithmOR
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlAlgorithmOR
Definition: GlobalBoard.h:220
edm::EventSetup
Definition: EventSetup.h:57
l1t::ConditionEvaluation::evaluateConditionStoreResult
void evaluateConditionStoreResult(const int bxEval)
call evaluateCondition and save last result
Definition: ConditionEvaluation.h:60
CorrelationTemplate
Definition: CorrelationTemplate.h:34
l1t::CondEnergySum
Definition: GlobalDefinitions.h:96
l1t::GlobalBoard::runGTL
void runGTL(edm::Event &iEvent, const edm::EventSetup &evSetup, const TriggerMenu *m_l1GtMenu, const bool produceL1GtObjectMapRecord, const int iBxInEvent, std::unique_ptr< GlobalObjectMapRecord > &gtObjectMapRecord, const unsigned int numberPhysTriggers, const int nrL1Mu, const int nrL1EG, const int nrL1Tau, const int nrL1Jet)
run the uGT GTL (Conditions and Algorithms)
Definition: GlobalBoard.cc:428
l1t::AlgorithmEvaluation::evaluateAlgorithm
void evaluateAlgorithm(const int chipNumber, const std::vector< ConditionEvaluationMap > &)
evaluate an algorithm
Definition: AlgorithmEvaluation.cc:50
l1t::CItCond
ConditionMap::const_iterator CItCond
iterators through map containing the conditions
Definition: TriggerMenuFwd.h:35
l1t::GlobalBoard::resetCalo
void resetCalo()
Definition: GlobalBoard.cc:1002
TriggerMenu::gtConditionMap
const std::vector< l1t::ConditionMap > & gtConditionMap() const
get / set / build the condition maps
Definition: TriggerMenu.h:74
simCaloStage2Layer1Digis_cfi.bxFirst
bxFirst
Definition: simCaloStage2Layer1Digis_cfi.py:7
CaloTemplate.h
l1t::CItAlgo
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
Definition: TriggerMenuFwd.h:39
l1t::GlobalBoard::resetExternal
void resetExternal()
Definition: GlobalBoard.cc:1014
l1t::GlobalBoard::m_l1CaloGeometryCacheID
unsigned long long m_l1CaloGeometryCacheID
Definition: GlobalBoard.h:196
CorrelationTemplate.h
l1t::GlobalBoard::fillAlgRecord
void fillAlgRecord(int iBxInEvent, std::unique_ptr< GlobalAlgBlkBxCollection > &uGtAlgRecord, int prescaleSet, int menuUUID, int firmwareUUID)
Fill the Daq Records.
Definition: GlobalBoard.cc:961
CalibrationSummaryClient_cfi.otype
otype
Definition: CalibrationSummaryClient_cfi.py:38
simCaloStage2Layer1Digis_cfi.bxLast
bxLast
Definition: simCaloStage2Layer1Digis_cfi.py:8
TriggerMenu
Definition: TriggerMenu.h:46
metsig::jet
Definition: SignAlgoResolutions.h:47
l1t::GlobalBoard::GlobalBoard
GlobalBoard()
Definition: GlobalBoard.cc:59
EnergySumCondition.h
l1t::CondCorrelation
Definition: GlobalDefinitions.h:97
l1t::GlobalBoard::m_gtlDecisionWord
std::bitset< GlobalAlgBlk::maxPhysicsTriggers > m_gtlDecisionWord
Definition: GlobalBoard.h:221
l1t::AlgorithmEvaluation::gtAlgoCombinationVector
std::vector< CombinationsInCond > & gtAlgoCombinationVector()
Definition: AlgorithmEvaluation.h:102
CorrelationWithOverlapRemovalTemplate::cond2Category
const l1t::GtConditionCategory cond2Category() const
Definition: CorrelationWithOverlapRemovalTemplate.h:112
ExternalCondition.h
EnergySumTemplate.h
GlobalObjectMap::print
void print(std::ostream &myCout) const
print the full object map
Definition: GlobalObjectMap.cc:98
l1t::ExternalCondition
Definition: ExternalCondition.h:37
l1t::CondExternal
Definition: GlobalDefinitions.h:98
Exception.h
GlobalObjectMap::swapOperandTokenVector
void swapOperandTokenVector(std::vector< GlobalLogicParser::OperandToken > &operandTokenVectorValue)
Definition: GlobalObjectMap.h:75
l1t::CondMuon
Definition: GlobalDefinitions.h:94
AlgorithmEvaluation.h
l1t::GlobalBoard::m_l1GtMenuCacheID
unsigned long long m_l1GtMenuCacheID
Definition: GlobalBoard.h:192
edm::isDebugEnabled
bool isDebugEnabled()
Definition: MessageLogger.cc:12
CorrelationWithOverlapRemovalTemplate::cond2Index
const int cond2Index() const
Definition: CorrelationWithOverlapRemovalTemplate.h:123
l1t::GlobalBoard::printGmtData
void printGmtData(const int iBxInEvent) const
print received Muon dataWord
Definition: GlobalBoard.cc:1020
l1t::GtConditionCategory
GtConditionCategory
condition categories
Definition: GlobalDefinitions.h:92
l1t::GlobalBoard::receiveCaloObjectData
void receiveCaloObjectData(edm::Event &, const edm::EDGetTokenT< BXVector< l1t::EGamma >> &, const edm::EDGetTokenT< BXVector< l1t::Tau >> &, const edm::EDGetTokenT< BXVector< l1t::Jet >> &, const edm::EDGetTokenT< BXVector< l1t::EtSum >> &, const bool receiveEG, const int nrL1EG, const bool receiveTau, const int nrL1Tau, const bool receiveJet, const int nrL1Jet, const bool receiveEtSums)
receive data from Global Muon Trigger
Definition: GlobalBoard.cc:130
CorrelationWithOverlapRemovalTemplate::cond1Index
const int cond1Index() const
Definition: CorrelationWithOverlapRemovalTemplate.h:121
l1t::GlobalBoard::setBxLast
void setBxLast(int bx)
Definition: GlobalBoard.cc:104
l1t::GlobalBoard::m_uGtAlgBlk
GlobalAlgBlk m_uGtAlgBlk
Definition: GlobalBoard.h:223
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:224
GlobalCondition
Definition: GlobalCondition.h:33
l1t::CorrWithOverlapRemovalCondition::setScales
void setScales(const GlobalScales *)
Definition: CorrWithOverlapRemovalCondition.cc:131
CorrelationWithOverlapRemovalTemplate
Definition: CorrelationWithOverlapRemovalTemplate.h:34
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
l1t::GlobalBoard::resetMu
void resetMu()
Definition: GlobalBoard.cc:996
edm::Event
Definition: Event.h:73
l1t::GlobalBoard::m_boardEventCount
unsigned int m_boardEventCount
Definition: GlobalBoard.h:248
GlobalAlgBlk::reset
void reset()
reset the content of a GlobalAlgBlk
Definition: GlobalAlgBlk.cc:124
l1t::AlgorithmEvaluation::print
void print(std::ostream &myCout) const
Definition: AlgorithmEvaluation.cc:164
CorrCondition.h
l1t::EnergySumCondition
Definition: EnergySumCondition.h:37
l1t::CorrCondition
Definition: CorrCondition.h:38
l1t::GlobalBoard::init
void init(const int numberPhysTriggers, const int nrL1Mu, const int nrL1EG, const int nrL1Tau, const int nrL1Jet, int bxFirst, int bxLast)
initialize the class (mainly reserve)
Definition: GlobalBoard.cc:106
L1TObjectTypeInCond
std::vector< l1t::GlobalObject > L1TObjectTypeInCond
Definition: GlobalObjectMapFwd.h:34
GlobalObjectMap::setAlgoName
void setAlgoName(const std::string &algoNameValue)
Definition: GlobalObjectMap.h:44
CorrelationTemplate::cond1Category
const l1t::GtConditionCategory cond1Category() const
Definition: CorrelationTemplate.h:92