CMS 3D CMS Logo

TriggerExpressionPrescaler.cc
Go to the documentation of this file.
2 
3 namespace triggerExpression {
4 
5 bool Prescaler::operator()(const Data & data) const {
6  // if the prescale factor is 0, we never need to run any dependent module,
7  // so we can safely skip the rest of the processing
8  if (m_prescale == 0)
9  return false;
10 
11  bool result = ((*m_arg)(data));
12  if (not result)
13  return false;
14 
15  // if the prescale factor is 1, we do not need to keep track of the event counter
16  if (m_prescale == 1)
17  return true;
18 
19  return (++m_counter % m_prescale) == 0;
20 }
21 
22 void Prescaler::init(const Data & data) {
23  // initialize the depending modules
24  UnaryOperator::init(data);
25 
26  // initialize the counter to the first event number seen,
27  // in order to avoid all prescalers on different FUs to be syncronous
28  m_counter = data.eventNumber();
29 }
30 
31 } // namespace triggerExpression
bool operator()(const Data &data) const
edm::EventNumber_t eventNumber() const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82