CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TriggerExpressionData.h
Go to the documentation of this file.
1 #ifndef HLTrigger_HLTfilters_TriggerExpressionData_h
2 #define HLTrigger_HLTfilters_TriggerExpressionData_h
3 
14 
15 namespace edm {
16  class Event;
17  class EventSetup;
18  class TriggerNames;
19 } // namespace edm
20 
21 namespace triggerExpression {
22 
23  class Data {
24  public:
25  // default c'tor
26  Data()
27  : // configuration
30  m_hltResultsTag(""),
32  m_l1tResultsTag(""),
36  m_throw(true),
37  // l1 values and status
38  m_l1tResults(nullptr),
39  m_l1tMenu(nullptr),
40  m_l1tCacheID(),
42  // hlt values and status
43  m_pathStatus(),
45  m_hltResults(nullptr),
46  m_hltMenu(nullptr),
47  m_hltCacheID(),
49  // event values
50  m_eventNumber() {}
51 
52  // explicit c'tor from a ParameterSet
54  : // configuration
55  m_usePathStatus(config.getParameter<bool>("usePathStatus")),
57  m_hltResultsTag(config.getParameter<edm::InputTag>("hltResults")),
59  m_l1tResultsTag(config.getParameter<edm::InputTag>("l1tResults")),
62  m_l1tIgnoreMaskAndPrescale(config.getParameter<bool>("l1tIgnoreMaskAndPrescale")),
63  m_throw(config.getParameter<bool>("throw")),
64  // l1 values and status
65  m_l1tResults(nullptr),
66  m_l1tMenu(nullptr),
67  m_l1tCacheID(),
69  // hlt values and status
70  m_pathStatus(),
72  m_hltResults(nullptr),
73  m_hltMenu(nullptr),
74  m_hltCacheID(),
76  // event values
77  m_eventNumber() {
78  if (not m_hltResultsTag.label().empty() and not m_usePathStatus)
80  if (not m_l1tResultsTag.label().empty())
82  }
83 
84  // explicit c'tor from single arguments
85  Data(bool const& usePathStatus,
86  edm::InputTag const& hltResultsTag,
87  edm::InputTag const& l1tResultsTag,
88  bool l1tIgnoreMaskAndPrescale,
89  bool doThrow,
91  : // configuration
92  m_usePathStatus(usePathStatus),
94  m_hltResultsTag(hltResultsTag),
96  m_l1tResultsTag(l1tResultsTag),
99  m_l1tIgnoreMaskAndPrescale(l1tIgnoreMaskAndPrescale),
100  m_throw(doThrow),
101  // l1 values and status
102  m_l1tResults(nullptr),
103  m_l1tMenu(nullptr),
104  m_l1tCacheID(),
106  // hlt values and status
107  m_pathStatus(),
108  m_triggerNames(),
109  m_hltResults(nullptr),
110  m_hltMenu(nullptr),
111  m_hltCacheID(),
113  // event values
114  m_eventNumber() {
115  if (not m_hltResultsTag.label().empty() and not m_usePathStatus)
117  if (not m_l1tResultsTag.label().empty())
119  }
120 
121  // set path status token
123 
124  // set the new event
125  bool setEvent(const edm::Event& event, const edm::EventSetup& setup);
126 
127  // re-configuration accessors
128 
130 
132 
133  void setL1tIgnoreMaskAndPrescale(bool l1tIgnoreMaskAndPrescale) {
134  m_l1tIgnoreMaskAndPrescale = l1tIgnoreMaskAndPrescale;
135  }
136 
137  void setThrow(bool doThrow) { m_throw = doThrow; }
138 
139  // read-only accessors
140 
141  bool usePathStatus() const { return m_usePathStatus; }
142 
143  bool hasL1T() const { return not m_l1tResultsTag.label().empty(); }
144 
145  bool hasHLT() const { return not m_hltResultsTag.label().empty(); }
146 
147  const edm::TriggerResults& hltResults() const { return *m_hltResults; }
148 
149  const edm::TriggerNames& hltMenu() const { return *m_hltMenu; }
150 
151  const std::vector<bool>& l1tResults() const { return *m_l1tResults; }
152 
153  const L1TUtmTriggerMenu& l1tMenu() const { return *m_l1tMenu; }
154 
155  bool hltConfigurationUpdated() const { return m_hltUpdated; }
156 
157  bool l1tConfigurationUpdated() const { return m_l1tUpdated; }
158 
160 
162 
163  bool shouldThrow() const { return m_throw; }
164 
166 
167  const std::vector<std::string>& triggerNames() const {
168  if (m_hltMenu)
169  return m_hltMenu->triggerNames();
170  return m_triggerNames;
171  }
172 
173  bool passHLT(unsigned int const& index) const {
174  if (usePathStatus())
175  return m_pathStatus[index];
176  return m_hltResults && m_hltResults->accept(index);
177  }
178 
179  int triggerIndex(std::string const& p) const {
180  if (usePathStatus()) {
181  auto it = std::find(m_triggerNames.begin(), m_triggerNames.end(), p);
182  if (it != m_triggerNames.end())
183  return it - m_triggerNames.begin();
184  } else if (m_hltMenu) {
185  auto index = m_hltMenu->triggerIndex(p);
186  if (index < m_hltMenu->size())
187  return index;
188  }
189  return -1;
190  }
191 
192  // configuration
194  std::map<std::string, edm::EDGetTokenT<edm::HLTPathStatus> > m_pathStatusTokens;
201  bool m_throw;
202 
203  // l1 values and status
204  const std::vector<bool>* m_l1tResults;
206  unsigned long long m_l1tCacheID;
208 
209  // hlt values and status
210  std::vector<bool> m_pathStatus;
211  std::vector<std::string> m_triggerNames;
216 
217  // event values
219  };
220 
221 } // namespace triggerExpression
222 
223 #endif // HLTrigger_HLTfilters_TriggerExpressionData_h
int triggerIndex(std::string const &p) const
std::vector< std::string > m_triggerNames
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
bool passHLT(unsigned int const &index) const
void setL1tResultsTag(edm::InputTag const &tag)
Data(const edm::ParameterSet &config, edm::ConsumesCollector &&iC)
const std::vector< std::string > & triggerNames() const
const L1TUtmTriggerMenu & l1tMenu() const
edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd > const m_l1tUtmTriggerMenuToken
bool accept() const
Has at least one path accepted the event?
const edm::TriggerNames & hltMenu() const
edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1tResultsToken
unsigned long long EventNumber_t
unsigned int triggerIndex(std::string_view name) const
Definition: TriggerNames.cc:52
void setL1tIgnoreMaskAndPrescale(bool l1tIgnoreMaskAndPrescale)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
Strings const & triggerNames() const
Definition: TriggerNames.cc:48
void setPathStatusToken(edm::BranchDescription const &branch, edm::ConsumesCollector &&iC)
edm::EventNumber_t eventNumber() const
Data(bool const &usePathStatus, edm::InputTag const &hltResultsTag, edm::InputTag const &l1tResultsTag, bool l1tIgnoreMaskAndPrescale, bool doThrow, edm::ConsumesCollector &&iC)
const edm::TriggerResults * m_hltResults
void setHltResultsTag(edm::InputTag const &tag)
edm::EDGetTokenT< edm::TriggerResults > m_hltResultsToken
const edm::TriggerResults & hltResults() const
const edm::TriggerNames * m_hltMenu
bool setEvent(const edm::Event &event, const edm::EventSetup &setup)
const std::vector< bool > & l1tResults() const
const L1TUtmTriggerMenu * m_l1tMenu
const std::vector< bool > * m_l1tResults
std::map< std::string, edm::EDGetTokenT< edm::HLTPathStatus > > m_pathStatusTokens
std::string const & label() const
Definition: InputTag.h:36
edm::ParameterSetID m_hltCacheID
tuple config
parse the configuration file
std::vector< bool > m_pathStatus
edm::EventNumber_t m_eventNumber
unsigned long long m_l1tCacheID
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
tuple size
Write out results.