CMS 3D CMS Logo

TriggerMenu.cc
Go to the documentation of this file.
1 
17 // this class header
19 
20 // system include files
21 #include <iostream>
22 #include <iomanip>
23 
24 // user include files
26 
27 
28 // forward declarations
29 
30 // constructor
32  : m_triggerMenuInterface( "NULL" ),
33  m_triggerMenuName( "NULL" ),
34  m_triggerMenuImplementation( 0x0 ),
35  m_scaleDbKey( "NULL" )
36 {
37  // empty
38 }
39 
41  const std::string& triggerMenuNameVal,
42  const unsigned int numberConditionChips,
43  const std::vector<std::vector<MuonTemplate> >& vecMuonTemplateVal,
44  const std::vector<std::vector<CaloTemplate> >& vecCaloTemplateVal,
45  const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTemplateVal,
46  const std::vector<std::vector<ExternalTemplate> >& vecExternalTemplateVal,
47  const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTemplateVal,
48  const std::vector<std::vector<MuonTemplate> >& corMuonTemplateVal,
49  const std::vector<std::vector<CaloTemplate> >& corCaloTemplateVal,
50  const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTemplateVal
51 
52 ) :
53  m_triggerMenuInterface( "NULL" ),
54  m_triggerMenuName(triggerMenuNameVal),
56  m_scaleDbKey( "NULL" ),
57  m_vecMuonTemplate(vecMuonTemplateVal),
58  m_vecCaloTemplate(vecCaloTemplateVal),
59  m_vecEnergySumTemplate(vecEnergySumTemplateVal),
60  m_vecExternalTemplate(vecExternalTemplateVal),
61  m_vecCorrelationTemplate(vecCorrelationTemplateVal),
62  m_corMuonTemplate(corMuonTemplateVal),
63  m_corCaloTemplate(corCaloTemplateVal),
64  m_corEnergySumTemplate(corEnergySumTemplateVal)
65 {
66 
67  m_conditionMap.resize(numberConditionChips);
70 
71 }
72 
73 // copy constructor
75 {
76 
82 
83  // copy physics conditions
88 
93 
94  // rebuild condition map to update the pointers
95  // (only physics conditions are included in it)
96  m_conditionMap.resize(rhs.m_conditionMap.size());
97  (*this).buildGtConditionMap();
98 
99  // copy algorithm map
102 
103  // copy technical triggers
104  // (separate map for technical triggers and physics triggers)
105  //m_technicalTriggerMap = rhs.m_technicalTriggerMap;
106 
107 }
108 
109 // destructor
111 {
112 
113  // loop over condition maps (one map per condition chip)
114  for (std::vector<l1t::ConditionMap>::iterator
115  itCondOnChip = m_conditionMap.begin(); itCondOnChip != m_conditionMap.end(); itCondOnChip++) {
116 
117  itCondOnChip->clear();
118 
119  }
120 
121  m_algorithmMap.clear();
122  m_algorithmAliasMap.clear();
123 }
124 
125 // assignment operator
127 
128  if ( this != &rhs ) {
129 
134 
139 
144 
147 
148 // m_technicalTriggerMap = rhs.m_technicalTriggerMap;
149 
150  }
151 
152  // rebuild condition map to update the pointers
153  // (only physics conditions are included in it)
154  m_conditionMap.resize(rhs.m_conditionMap.size());
155  (*this).buildGtConditionMap();
156 
157  // return the object
158  return *this;
159 
160 }
161 
162 // set the condition maps
163 void TriggerMenu::setGtConditionMap(const std::vector<l1t::ConditionMap>& condMap) {
164  m_conditionMap = condMap;
165 }
166 
167 // build the condition maps
169 
170  // clear the conditions from the maps, if any
171  for (std::vector<l1t::ConditionMap>::iterator itCondOnChip =
172  m_conditionMap.begin(); itCondOnChip != m_conditionMap.end(); itCondOnChip++) {
173 
174  itCondOnChip->clear();
175 
176  }
177 
178  // always check that the size of the condition map is greater than the size
179  // of the specific condition vector
180  size_t condMapSize = m_conditionMap.size();
181 
182  //
183  size_t vecMuonSize = m_vecMuonTemplate.size();
184  if (condMapSize < vecMuonSize) {
185  m_conditionMap.resize(vecMuonSize);
186  condMapSize = m_conditionMap.size();
187  }
188 
189  int chipNr = -1;
190 
191  for (std::vector<std::vector<MuonTemplate> >::iterator
192  itCondOnChip = m_vecMuonTemplate.begin();
193  itCondOnChip != m_vecMuonTemplate.end();
194  itCondOnChip++) {
195 
196  chipNr++;
197 
198  for (std::vector<MuonTemplate>::iterator
199  itCond = itCondOnChip->begin(); itCond != itCondOnChip->end();
200  itCond++) {
201 
202  (m_conditionMap.at(chipNr))[itCond->condName()] = &(*itCond);
203  }
204  }
205 
206  //
207  size_t vecCaloSize = m_vecCaloTemplate.size();
208  if (condMapSize < vecCaloSize) {
209  m_conditionMap.resize(vecCaloSize);
210  condMapSize = m_conditionMap.size();
211  }
212 
213  chipNr = -1;
214  for (std::vector<std::vector<CaloTemplate> >::iterator
215  itCondOnChip = m_vecCaloTemplate.begin();
216  itCondOnChip != m_vecCaloTemplate.end();
217  itCondOnChip++) {
218 
219  chipNr++;
220 
221  for (std::vector<CaloTemplate>::iterator
222  itCond = itCondOnChip->begin(); itCond != itCondOnChip->end();
223  itCond++) {
224 
225  (m_conditionMap.at(chipNr))[itCond->condName()] = &(*itCond);
226  }
227  }
228 
229 
230  //
231  size_t vecEnergySumSize = m_vecEnergySumTemplate.size();
232  if (condMapSize < vecEnergySumSize) {
233  m_conditionMap.resize(vecEnergySumSize);
234  condMapSize = m_conditionMap.size();
235  }
236 
237  chipNr = -1;
238  for (std::vector<std::vector<EnergySumTemplate> >::iterator
239  itCondOnChip = m_vecEnergySumTemplate.begin();
240  itCondOnChip != m_vecEnergySumTemplate.end();
241  itCondOnChip++) {
242 
243  chipNr++;
244 
245  for (std::vector<EnergySumTemplate>::iterator
246  itCond = itCondOnChip->begin(); itCond != itCondOnChip->end();
247  itCond++) {
248 
249  (m_conditionMap.at(chipNr))[itCond->condName()] = &(*itCond);
250  }
251  }
252 
254  //
255  //
256  size_t vecExternalSize = m_vecExternalTemplate.size();
257  if (condMapSize < vecExternalSize) {
258  m_conditionMap.resize(vecExternalSize);
259  condMapSize = m_conditionMap.size();
260  }
261 
262  chipNr = -1;
263  for (std::vector<std::vector<ExternalTemplate> >::iterator
264  itCondOnChip = m_vecExternalTemplate.begin();
265  itCondOnChip != m_vecExternalTemplate.end();
266  itCondOnChip++) {
267 
268  chipNr++;
269 
270  for (std::vector<ExternalTemplate>::iterator
271  itCond = itCondOnChip->begin(); itCond != itCondOnChip->end();
272  itCond++) {
273 
274  (m_conditionMap.at(chipNr))[itCond->condName()] = &(*itCond);
275  }
276  }
277 
278 
279  //
280  size_t vecCorrelationSize = m_vecCorrelationTemplate.size();
281  if (condMapSize < vecCorrelationSize) {
282  m_conditionMap.resize(vecCorrelationSize);
283  condMapSize = m_conditionMap.size();
284  }
285 
286  chipNr = -1;
287  for (std::vector<std::vector<CorrelationTemplate> >::iterator
288  itCondOnChip = m_vecCorrelationTemplate.begin();
289  itCondOnChip != m_vecCorrelationTemplate.end();
290  itCondOnChip++) {
291 
292  chipNr++;
293 
294  for (std::vector<CorrelationTemplate>::iterator
295  itCond = itCondOnChip->begin(); itCond != itCondOnChip->end();
296  itCond++) {
297 
298  (m_conditionMap.at(chipNr))[itCond->condName()] = &(*itCond);
299  }
300  }
301 
302 
303 
304 
305 }
306 
307 // set the trigger menu name
309  m_triggerMenuInterface = menuInterface;
310 }
311 
313  m_triggerMenuName = menuName;
314 }
315 
316 void TriggerMenu::setGtTriggerMenuImplementation(const unsigned long menuImplementation) {
317  m_triggerMenuImplementation = menuImplementation;
318 }
319 
320 void TriggerMenu::setGtTriggerMenuUUID(const unsigned long uuid) {
322 }
323 
324 
325 // set menu associated scale key
327  m_scaleDbKey = scaleKey;
328 }
329 
330 // set menu associated scale key
332  m_gtScales = scales;
333 }
334 
335 // get / set the vectors containing the conditions
337  const std::vector<std::vector<MuonTemplate> >& vecMuonTempl) {
338 
339  m_vecMuonTemplate = vecMuonTempl;
340 }
341 
343  const std::vector<std::vector<CaloTemplate> >& vecCaloTempl) {
344 
345  m_vecCaloTemplate = vecCaloTempl;
346 }
347 
349  const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTempl) {
350 
351  m_vecEnergySumTemplate = vecEnergySumTempl;
352 }
353 
354 
356  const std::vector<std::vector<ExternalTemplate> >& vecExternalTempl) {
357 
358  m_vecExternalTemplate = vecExternalTempl;
359 }
360 
361 
363  const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTempl) {
364 
365  m_vecCorrelationTemplate = vecCorrelationTempl;
366 }
367 
368 // set the vectors containing the conditions for correlation templates
370  const std::vector<std::vector<MuonTemplate> >& corMuonTempl) {
371 
372  m_corMuonTemplate = corMuonTempl;
373 }
374 
376  const std::vector<std::vector<CaloTemplate> >& corCaloTempl) {
377 
378  m_corCaloTemplate = corCaloTempl;
379 }
380 
382  const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTempl) {
383 
384  m_corEnergySumTemplate = corEnergySumTempl;
385 }
386 
387 
388 
389 // set the algorithm map (by algorithm names)
391  m_algorithmMap = algoMap;
392 }
393 
394 // set the algorithm map (by algorithm aliases)
396  m_algorithmAliasMap = algoMap;
397 }
398 
399 /*
400 // set the technical trigger map
401 void TriggerMenu::setGtTechnicalTriggerMap(const l1t::AlgorithmMap& ttMap) {
402  m_technicalTriggerMap = ttMap;
403 }
404 */
405 
406 // print the trigger menu (bit number, algorithm name, logical expression)
407 void TriggerMenu::print(std::ostream& myCout, int& printVerbosity) const {
408 
409  // use another map <int, GlobalAlgorithm> to get the menu sorted after bit number
410  // both algorithm and bit numbers are unique
411  std::map<int, const GlobalAlgorithm*> algoBitToAlgo;
412  typedef std::map<int, const GlobalAlgorithm*>::const_iterator CItBit;
413 
414  for (l1t::CItAlgo itAlgo = m_algorithmMap.begin(); itAlgo != m_algorithmMap.end(); itAlgo++) {
415 
416  int bitNumber = (itAlgo->second).algoBitNumber();
417  algoBitToAlgo[bitNumber] = &(itAlgo->second);
418  }
419 
420  size_t nrDefinedAlgo = algoBitToAlgo.size();
421 
422 /*
423  // idem for technical trigger map - only name and bit number are relevant for them
424  std::map<int, const GlobalAlgorithm*> ttBitToTt;
425 
426  for (l1t::CItAlgo itAlgo = m_technicalTriggerMap.begin(); itAlgo
427  != m_technicalTriggerMap.end(); itAlgo++) {
428 
429  int bitNumber = (itAlgo->second).algoBitNumber();
430  ttBitToTt[bitNumber] = &(itAlgo->second);
431  }
432 
433  size_t nrDefinedTechTrig = ttBitToTt.size();
434 */
435  //
436 
437  switch (printVerbosity) {
438 
439  case 0: {
440 
441  // header for printing algorithms
442 
443  myCout << "\n ********** L1 Trigger Menu - printing ********** \n"
444  << "\nL1 Trigger Menu Interface: " << m_triggerMenuInterface
445  << "\nL1 Trigger Menu Name: " << m_triggerMenuName
446  << "\nL1 Trigger Menu UUID (hash): 0x" << std::hex << m_triggerMenuUUID << std::dec
447  << "\nL1 Trigger Menu Firmware (hash): 0x" << std::hex << m_triggerMenuImplementation << std::dec
448  << "\nAssociated Scale DB Key: " << m_scaleDbKey << "\n\n"
449  << "\nL1 Physics Algorithms: " << nrDefinedAlgo << " algorithms defined." << "\n\n"
450  << "Bit Number "
451  << std::right << std::setw(35) << "Algorithm Name" << " "
452  << std::right << std::setw(35) << "Algorithm Alias"
453  << std::endl;
454 
455  for (CItBit itBit = algoBitToAlgo.begin(); itBit != algoBitToAlgo.end(); itBit++) {
456 
457  int bitNumber = itBit->first;
458  std::string aName = (itBit->second)->algoName();
459  std::string aAlias = (itBit->second)->algoAlias();
460 
461  myCout << std::setw(6) << bitNumber << " "
462  << std::right << std::setw(35) << aName << " "
463  << std::right << std::setw(35) << aAlias
464  << std::endl;
465  }
466 /*
467  myCout
468  << "\nL1 Technical Triggers: " << nrDefinedTechTrig
469  << " technical triggers defined." << "\n\n" << std::endl;
470  if (nrDefinedTechTrig) {
471  myCout << "Bit Number " << " Technical trigger name " << std::endl;
472  }
473 
474  for (CItBit itBit = ttBitToTt.begin(); itBit != ttBitToTt.end(); itBit++) {
475 
476  int bitNumber = itBit->first;
477  std::string aName = (itBit->second)->algoName();
478  std::string aAlias = (itBit->second)->algoAlias();
479 
480  myCout << std::setw(6) << bitNumber << " "
481  << std::right << std::setw(35) << aName << " "
482  << std::right << std::setw(35) << aAlias
483  << std::endl;
484  }
485 */
486  }
487  break;
488 
489  case 1: {
490 
491  // header for printing algorithms
492 
493  myCout << "\n ********** L1 Trigger Menu - printing ********** \n"
494  << "\nL1 Trigger Menu Interface: " << m_triggerMenuInterface
495  << "\nL1 Trigger Menu Name: " << m_triggerMenuName
496  << "\nL1 Trigger Menu UUID (hash): 0x" << std::hex << m_triggerMenuUUID << std::dec
497  << "\nL1 Trigger Menu Firmware (hash): 0x" << std::hex << m_triggerMenuImplementation << std::dec
498  << "\nAssociated Scale DB Key: " << m_scaleDbKey << "\n\n"
499  << "\nL1 Physics Algorithms: " << nrDefinedAlgo << " algorithms defined." << "\n\n"
500  << "Bit Number "
501  << std::right << std::setw(35) << "Algorithm Name" << " "
502  << std::right << std::setw(35) << "Algorithm Alias"
503  << "\n Logical Expression \n"
504  << std::endl;
505 
506  for (CItBit itBit = algoBitToAlgo.begin(); itBit != algoBitToAlgo.end(); itBit++) {
507 
508  int bitNumber = itBit->first;
509  std::string aName = (itBit->second)->algoName();
510  std::string aAlias = (itBit->second)->algoAlias();
511  std::string aLogicalExpression = (itBit->second)->algoLogicalExpression();
512 
513  myCout << std::setw(6) << bitNumber << " "
514  << std::right << std::setw(35) << aName << " "
515  << std::right << std::setw(35) << aAlias
516  << "\n Logical expression: " << aLogicalExpression << "\n"
517  << std::endl;
518  }
519 /*
520  myCout
521  << "\nL1 Technical Triggers: " << nrDefinedTechTrig
522  << " technical triggers defined." << "\n\n" << std::endl;
523  if (nrDefinedTechTrig) {
524  myCout << "Bit Number " << " Technical trigger name " << std::endl;
525  }
526 
527  for (CItBit itBit = ttBitToTt.begin(); itBit != ttBitToTt.end(); itBit++) {
528 
529  int bitNumber = itBit->first;
530  std::string aName = (itBit->second)->algoName();
531 
532  myCout << std::setw(6) << bitNumber << " " << aName << std::endl;
533  }
534 */
535  }
536  break;
537 
538  case 2: {
539 
540  // header for printing algorithms
541 
542  myCout << "\n ********** L1 Trigger Menu - printing ********** \n"
543  << "\nL1 Trigger Menu Interface: " << m_triggerMenuInterface
544  << "\nL1 Trigger Menu Name: " << m_triggerMenuName
545  << "\nL1 Trigger Menu UUID (hash): 0x" << std::hex << m_triggerMenuUUID << std::dec
546  << "\nL1 Trigger Menu Firmware (hash): 0x" << std::hex << m_triggerMenuImplementation << std::dec
547  << "\nAssociated Scale DB Key: " << m_scaleDbKey << "\n\n"
548  << "\nL1 Physics Algorithms: " << nrDefinedAlgo << " algorithms defined." << "\n\n"
549  << std::endl;
550 
551  for (CItBit itBit = algoBitToAlgo.begin(); itBit != algoBitToAlgo.end(); itBit++) {
552  (itBit->second)->print(myCout);
553  }
554 
555 
556  myCout << "\nNumber of condition chips: " << m_conditionMap.size() << "\n"
557  << std::endl;
558 
559  int chipNr = -1;
560  int totalNrConditions = 0;
561 
562  for (std::vector<l1t::ConditionMap>::const_iterator
563  itCondOnChip = m_conditionMap.begin();
564  itCondOnChip != m_conditionMap.end(); itCondOnChip++) {
565 
566  chipNr++;
567 
568  int condMapSize = itCondOnChip->size();
569  totalNrConditions += condMapSize;
570 
571  myCout << "\nTotal number of conditions on condition chip " << chipNr
572  << ": " << condMapSize
573  << " conditions.\n" << std::endl;
574 
575  for (l1t::CItCond itCond = itCondOnChip->begin(); itCond != itCondOnChip->end();
576  itCond++) {
577 
578  (itCond->second)->print(myCout);
579 
580  }
581 
582  }
583 
584  myCout << "\nTotal number of conditions on all condition chips: "
585  << totalNrConditions << "\n"
586  << std::endl;
587 /*
588  myCout
589  << "\nL1 Technical Triggers: " << nrDefinedTechTrig
590  << " technical triggers defined." << "\n\n" << std::endl;
591  if (nrDefinedTechTrig) {
592  myCout << "Bit Number " << " Technical trigger name " << std::endl;
593  }
594 
595  for (CItBit itBit = ttBitToTt.begin(); itBit != ttBitToTt.end(); itBit++) {
596 
597  int bitNumber = itBit->first;
598  std::string aName = (itBit->second)->algoName();
599 
600  myCout << std::setw(6) << bitNumber << " " << aName << std::endl;
601  }
602 */
603 
604  }
605  break;
606 
607  default: {
608  myCout << "\n ********** L1 Trigger Menu - printing ********** \n\n"
609  << "Verbosity level: " << printVerbosity << " not implemented.\n\n"
610  << std::endl;
611  }
612  break;
613  }
614 
615 }
616 
617 // get the result for algorithm with name algName
618 // use directly the format of decisionWord (no typedef)
619 const bool TriggerMenu::gtAlgorithmResult(const std::string& algName,
620  const std::vector<bool>& decWord) const {
621 
622  bool algResult = false;
623 
624  l1t::CItAlgo itAlgo = m_algorithmMap.find(algName);
625  if (itAlgo != m_algorithmMap.end()) {
626  int bitNumber = (itAlgo->second).algoBitNumber();
627  algResult = decWord.at(bitNumber);
628  return algResult;
629  }
630 
631  // return false if the algorithm name is not found in the menu
632  // TODO throw exception or LogInfo would be better - but the class is used in
633  // XDAQ Trigger Supervisor (outside CMSSW) hence no CMSSW dependence
634  // is allowed here...
635 
636  return false;
637 
638 }
639 
640 
std::string m_triggerMenuName
Definition: TriggerMenu.h:239
void setCorCaloTemplate(const std::vector< std::vector< CaloTemplate > > &)
Definition: TriggerMenu.cc:375
void setVecExternalTemplate(const std::vector< std::vector< ExternalTemplate > > &)
Definition: TriggerMenu.cc:355
void setCorMuonTemplate(const std::vector< std::vector< MuonTemplate > > &)
Definition: TriggerMenu.cc:369
void setGtAlgorithmMap(const l1t::AlgorithmMap &)
Definition: TriggerMenu.cc:390
std::string m_scaleDbKey
menu associated scale key
Definition: TriggerMenu.h:245
std::vector< std::vector< MuonTemplate > > m_vecMuonTemplate
Definition: TriggerMenu.h:249
std::vector< std::vector< ExternalTemplate > > m_vecExternalTemplate
Definition: TriggerMenu.h:253
std::vector< std::vector< MuonTemplate > > m_corMuonTemplate
Definition: TriggerMenu.h:256
std::vector< std::vector< CaloTemplate > > m_corCaloTemplate
Definition: TriggerMenu.h:257
virtual ~TriggerMenu()
Definition: TriggerMenu.cc:110
void setGtScaleDbKey(const std::string &)
Definition: TriggerMenu.cc:326
void setGtScales(const l1t::GlobalScales &)
Definition: TriggerMenu.cc:331
ConditionMap::const_iterator CItCond
iterators through map containing the conditions
void buildGtConditionMap()
Definition: TriggerMenu.cc:168
std::vector< std::vector< EnergySumTemplate > > m_vecEnergySumTemplate
Definition: TriggerMenu.h:251
l1t::GlobalScales m_gtScales
map containing the technical triggers
Definition: TriggerMenu.h:270
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
void setVecEnergySumTemplate(const std::vector< std::vector< EnergySumTemplate > > &)
Definition: TriggerMenu.cc:348
l1t::AlgorithmMap m_algorithmMap
map containing the physics algorithms (by name)
Definition: TriggerMenu.h:261
void setGtTriggerMenuUUID(const unsigned long uuid)
Definition: TriggerMenu.cc:320
void setVecMuonTemplate(const std::vector< std::vector< MuonTemplate > > &)
Definition: TriggerMenu.cc:336
void setCorEnergySumTemplate(const std::vector< std::vector< EnergySumTemplate > > &)
Definition: TriggerMenu.cc:381
void print(std::ostream &, int &) const
Definition: TriggerMenu.cc:407
void setGtConditionMap(const std::vector< l1t::ConditionMap > &)
Definition: TriggerMenu.cc:163
void setGtTriggerMenuName(const std::string &)
Definition: TriggerMenu.cc:312
void setGtTriggerMenuImplementation(const unsigned long)
Definition: TriggerMenu.cc:316
unsigned long m_triggerMenuUUID
Definition: TriggerMenu.h:242
TriggerMenu & operator=(const TriggerMenu &)
Definition: TriggerMenu.cc:126
void setVecCorrelationTemplate(const std::vector< std::vector< CorrelationTemplate > > &)
Definition: TriggerMenu.cc:362
std::vector< l1t::ConditionMap > m_conditionMap
map containing the conditions (per condition chip) - transient
Definition: TriggerMenu.h:233
void setGtAlgorithmAliasMap(const l1t::AlgorithmMap &)
Definition: TriggerMenu.cc:395
l1t::AlgorithmMap m_algorithmAliasMap
map containing the physics algorithms (by alias)
Definition: TriggerMenu.h:264
unsigned long m_triggerMenuImplementation
Definition: TriggerMenu.h:240
void setVecCaloTemplate(const std::vector< std::vector< CaloTemplate > > &)
Definition: TriggerMenu.cc:342
const bool gtAlgorithmResult(const std::string &algName, const std::vector< bool > &decWord) const
Definition: TriggerMenu.cc:619
void setGtTriggerMenuInterface(const std::string &)
Definition: TriggerMenu.cc:308
std::string m_triggerMenuInterface
menu names
Definition: TriggerMenu.h:238
std::vector< std::vector< EnergySumTemplate > > m_corEnergySumTemplate
Definition: TriggerMenu.h:258
std::map< std::string, GlobalAlgorithm > AlgorithmMap
map containing the algorithms
std::vector< std::vector< CorrelationTemplate > > m_vecCorrelationTemplate
Definition: TriggerMenu.h:255
std::vector< std::vector< CaloTemplate > > m_vecCaloTemplate
Definition: TriggerMenu.h:250