CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1TGlobalUtil.h
Go to the documentation of this file.
1 // L1TGlobalUtil: Utility class for parsing the L1 Trigger Menu
2 
3 #ifndef L1TGlobalUtil_h
4 #define L1TGlobalUtil_h
5 
6 // system include files
7 #include <vector>
8 
10 
11 // Objects to produce for the output record.
15 
18 
20 
21 // forward declarations
22 //class TriggerMenu;
23 
24 
25 // class declaration
26 
27 namespace l1t {
28 
30 
31  public:
32  L1TGlobalUtil();
33  ~L1TGlobalUtil();
34 
35 
36  // OverridePrescalesAndMasks
37  // The ability to override the prescale/mask file will not be part of the permanent interface of this class.
38  // It is provided only until prescales and masks are available as CondFormats...
39  // Most users should simply ignore this method and use the default ctor only!
40  // Will look for prescale csv file in L1Trigger/L1TGlobal/data/Luminosity/startup/<filename>
41  void OverridePrescalesAndMasks(std::string filename, unsigned int psColumn=1);
42 
44  void retrieveL1(const edm::Event& iEvent, const edm::EventSetup& evSetup,
45  edm::EDGetToken gtAlgToken);
46  void retrieveL1Run(const edm::EventSetup& evSetup);
47  void retrieveL1LumiBlock(const edm::EventSetup& evSetup);
48  void retrieveL1Event(const edm::Event& iEvent, const edm::EventSetup& evSetup,
49  edm::EDGetToken gtAlgToken);
50 
51  inline void setVerbosity(const int verbosity) {
53  }
54 
55  inline bool getFinalOR() {return m_finalOR;}
56 
57  // get the trigger bit from the name
58  const bool getAlgBitFromName(const std::string& AlgName, int& bit) const;
59 
60  // get the name from the trigger bit
61  const bool getAlgNameFromBit(int& bit, std::string& AlgName) const;
62 
63  // Access results for particular trigger bit
64  const bool getInitialDecisionByBit(int& bit, bool& decision) const;
65  const bool getPrescaledDecisionByBit(int& bit, bool& decision) const;
66  const bool getFinalDecisionByBit(int& bit, bool& decision) const;
67 
68  // Access Prescale
69  const bool getPrescaleByBit(int& bit, int& prescale) const;
70 
71  // Access Masks:
72  // follows logic of uGT board:
73  // finalDecision[AlgBit] = ( prescaledDecision[AlgBit] & mask[AlgBit] ) implying:
74  // If mask = true, algorithm bit (true/false) keeps its value
75  // If mask = false, algorithm bit is forced to false for the finalDecision
76  //
77  // If vetoMask = true and Algorithm is true, the FINOR (final global decision) is forced to false (ie. event is vetoed)
78  // If vetoMask = false, algorithm cannot veto FINOR (final global decision)
79  const bool getMaskByBit(int& bit, bool& mask) const;
80  const bool getVetoMaskByBit(int& bit, bool& veto) const;
81 
82  // Access results for particular trigger name
83  const bool getInitialDecisionByName(const std::string& algName, bool& decision) const;
84  const bool getPrescaledDecisionByName(const std::string& algName, bool& decision) const;
85  const bool getFinalDecisionByName(const std::string& algName, bool& decision) const;
86 
87  // Access Prescales
88  const bool getPrescaleByName(const std::string& algName, int& prescale) const;
89 
90  // Access Masks (see note) above
91  const bool getMaskByName(const std::string& algName, bool& mask) const;
92  const bool getVetoMaskByName(const std::string& algName, bool& veto) const;
93 
94  // Some inline commands to return the full vectors
95  inline const std::vector<std::pair<std::string, bool> >& decisionsInitial() { return m_decisionsInitial; }
96  inline const std::vector<std::pair<std::string, bool> >& decisionsPrescaled() { return m_decisionsPrescaled; }
97  inline const std::vector<std::pair<std::string, bool> >& decisionsFinal() { return m_decisionsFinal; }
98 
99  // Access all prescales
100  inline const std::vector<std::pair<std::string, int> >& prescales() { return m_prescales; }
101 
102  // Access Masks (see note) above
103  inline const std::vector<std::pair<std::string, bool> >& masks() { return m_masks; }
104  inline const std::vector<std::pair<std::string, bool> >& vetoMasks() { return m_vetoMasks; }
105 
106  // Menu names
107  inline const std::string& gtTriggerMenuName() const {return m_l1GtMenu->getName();}
108  inline const std::string& gtTriggerMenuVersion() const {return m_l1GtMenu->getVersion();}
109  inline const std::string& gtTriggerMenuComment() const {return m_l1GtMenu->getComment();}
110 
111 private:
112 
114  void resetDecisionVectors();
115  void resetPrescaleVectors();
116  void resetMaskVectors();
117  void loadPrescalesAndMasks();
118 
119  // trigger menu
121  unsigned long long m_l1GtMenuCacheID;
122 
123  // prescales and masks
125 
126  // algorithm maps
127  //const AlgorithmMap* m_algorithmMap;
128  const std::map<std::string, L1TUtmAlgorithm>* m_algorithmMap;
129 
130  // Number of physics triggers
131  unsigned int m_numberPhysTriggers;
132 
133  //file and container for prescale factors
135  unsigned int m_PreScaleColumn;
136 
137  std::vector<std::vector<int> > m_initialPrescaleFactorsAlgoTrig;
138  const std::vector<std::vector<int> >* m_prescaleFactorsAlgoTrig;
139  std::vector<unsigned int> m_initialTriggerMaskAlgoTrig;
140  const std::vector<unsigned int>* m_triggerMaskAlgoTrig;
141  std::vector<unsigned int> m_initialTriggerMaskVetoAlgoTrig;
142  const std::vector<unsigned int>* m_triggerMaskVetoAlgoTrig;
143 
144  // access to the results block from uGT
146 
147  // final OR
148  bool m_finalOR;
149 
150  // Vectors containing the trigger name and information about that trigger
151  std::vector<std::pair<std::string, bool> > m_decisionsInitial;
152  std::vector<std::pair<std::string, bool> > m_decisionsPrescaled;
153  std::vector<std::pair<std::string, bool> > m_decisionsFinal;
154  std::vector<std::pair<std::string, int> > m_prescales;
155  std::vector<std::pair<std::string, bool> > m_masks;
156  std::vector<std::pair<std::string, bool> > m_vetoMasks;
157 
160 
161 };
162 
163 }
164 #endif
void setVerbosity(const int verbosity)
Definition: L1TGlobalUtil.h:51
const bool getInitialDecisionByBit(int &bit, bool &decision) const
const L1TUtmTriggerMenu * m_l1GtMenu
std::string m_preScaleFileName
const bool getAlgBitFromName(const std::string &AlgName, int &bit) const
void retrieveL1Event(const edm::Event &iEvent, const edm::EventSetup &evSetup, edm::EDGetToken gtAlgToken)
const std::string & gtTriggerMenuComment() const
const std::vector< std::pair< std::string, int > > & prescales()
const std::string & getVersion() const
const bool getPrescaleByBit(int &bit, int &prescale) const
unsigned int m_PreScaleColumn
void retrieveL1LumiBlock(const edm::EventSetup &evSetup)
const std::vector< std::pair< std::string, bool > > & masks()
std::vector< std::vector< int > > m_initialPrescaleFactorsAlgoTrig
const bool getInitialDecisionByName(const std::string &algName, bool &decision) const
const std::string & gtTriggerMenuVersion() const
std::vector< std::pair< std::string, bool > > m_decisionsInitial
void retrieveL1(const edm::Event &iEvent, const edm::EventSetup &evSetup, edm::EDGetToken gtAlgToken)
initialize the class (mainly reserve)
void resetDecisionVectors()
clear decision vectors on a menu change
std::vector< std::pair< std::string, bool > > m_masks
std::vector< unsigned int > m_initialTriggerMaskAlgoTrig
const bool getMaskByName(const std::string &algName, bool &mask) const
const std::map< std::string, L1TUtmAlgorithm > * m_algorithmMap
int iEvent
Definition: GenABIO.cc:230
const std::vector< std::pair< std::string, bool > > & vetoMasks()
const std::vector< std::vector< int > > * m_prescaleFactorsAlgoTrig
const std::string & gtTriggerMenuName() const
const std::vector< std::pair< std::string, bool > > & decisionsInitial()
Definition: L1TGlobalUtil.h:95
const std::vector< unsigned int > * m_triggerMaskVetoAlgoTrig
std::vector< std::pair< std::string, bool > > m_decisionsPrescaled
const bool getFinalDecisionByName(const std::string &algName, bool &decision) const
void OverridePrescalesAndMasks(std::string filename, unsigned int psColumn=1)
std::vector< std::pair< std::string, bool > > m_vetoMasks
const bool getAlgNameFromBit(int &bit, std::string &AlgName) const
const bool getVetoMaskByBit(int &bit, bool &veto) const
int m_verbosity
verbosity level
unsigned long long m_l1GtMenuCacheID
const bool getMaskByBit(int &bit, bool &mask) const
const bool getVetoMaskByName(const std::string &algName, bool &veto) const
const bool getFinalDecisionByBit(int &bit, bool &decision) const
std::vector< std::pair< std::string, bool > > m_decisionsFinal
const std::string & getComment() const
tuple filename
Definition: lut2db_cfg.py:20
const bool getPrescaleByName(const std::string &algName, int &prescale) const
std::vector< unsigned int > m_initialTriggerMaskVetoAlgoTrig
const std::vector< std::pair< std::string, bool > > & decisionsPrescaled()
Definition: L1TGlobalUtil.h:96
const std::vector< std::pair< std::string, bool > > & decisionsFinal()
Definition: L1TGlobalUtil.h:97
const bool getPrescaledDecisionByName(const std::string &algName, bool &decision) const
const std::vector< unsigned int > * m_triggerMaskAlgoTrig
edm::Handle< BXVector< GlobalAlgBlk > > m_uGtAlgBlk
std::vector< std::pair< std::string, int > > m_prescales
void retrieveL1Run(const edm::EventSetup &evSetup)
const bool getPrescaledDecisionByBit(int &bit, bool &decision) const
unsigned int m_numberPhysTriggers
const std::string & getName() const