#include <TriggerExpressionL1Reader.h>
Public Member Functions | |
void | dump (std::ostream &out) const |
void | init (const Data &data) |
L1Reader (const std::string &pattern) | |
bool | operator() (const Data &data) const |
Private Attributes | |
std::string | m_pattern |
std::vector< std::pair < std::string, unsigned int > > | m_triggers |
Definition at line 11 of file TriggerExpressionL1Reader.h.
triggerExpression::L1Reader::L1Reader | ( | const std::string & | pattern | ) | [inline] |
Definition at line 13 of file TriggerExpressionL1Reader.h.
: m_pattern(pattern), m_triggers() { }
void triggerExpression::L1Reader::dump | ( | std::ostream & | out | ) | const [virtual] |
Implements triggerExpression::Evaluator.
Definition at line 33 of file TriggerExpressionL1Reader.cc.
References first, i, and m_triggers.
{ if (m_triggers.size() == 0) { out << "FALSE"; } else if (m_triggers.size() == 1) { out << m_triggers[0].first; } else { out << "(" << m_triggers[0].first; for (unsigned int i = 1; i < m_triggers.size(); ++i) out << " OR " << m_triggers[i].first; out << ")"; } }
void triggerExpression::L1Reader::init | ( | const Data & | data | ) | [virtual] |
Reimplemented from triggerExpression::Evaluator.
Definition at line 46 of file TriggerExpressionL1Reader.cc.
References triggerExpression::Data::daqPartitions(), edm::glob2reg(), L1GtTriggerMenu::gtAlgorithmAliasMap(), L1GtTriggerMask::gtTriggerMask(), triggerExpression::Data::ignoreL1Mask(), edm::is_glob(), triggerExpression::Data::l1tAlgoMask(), triggerExpression::Data::l1tMenu(), m_pattern, m_triggers, match(), relval_steps::menu, and triggerExpression::Data::shouldThrow().
{ const L1GtTriggerMenu & menu = data.l1tMenu(); const L1GtTriggerMask & mask = data.l1tAlgoMask(); // clear the previous configuration m_triggers.clear(); // check if the pattern has is a glob expression, or a single trigger name if (not edm::is_glob(m_pattern)) { // no wildcard expression const AlgorithmMap & triggerMap = menu.gtAlgorithmAliasMap(); AlgorithmMap::const_iterator entry = triggerMap.find(m_pattern); if (entry != triggerMap.end()) { // single L1 bit m_triggers.push_back( std::make_pair(m_pattern, entry->second.algoBitNumber()) ); } else // trigger not found in the current menu if (data.shouldThrow()) throw cms::Exception("Configuration") << "requested L1 trigger \"" << m_pattern << "\" does not exist in the current L1 menu"; else edm::LogWarning("Configuration") << "requested L1 trigger \"" << m_pattern << "\" does not exist in the current L1 menu"; } else { // expand wildcards in the pattern bool match = false; boost::regex re(edm::glob2reg(m_pattern)); const AlgorithmMap & triggerMap = menu.gtAlgorithmAliasMap(); BOOST_FOREACH(const AlgorithmMap::value_type & entry, triggerMap) if (boost::regex_match(entry.first, re)) { match = true; if (data.ignoreL1Mask() or (mask.gtTriggerMask()[entry.second.algoBitNumber()] & data.daqPartitions()) != data.daqPartitions()) // unmasked in one or more partitions m_triggers.push_back( std::make_pair(entry.first, entry.second.algoBitNumber()) ); } if (not match) { // m_pattern does not match any L1 bits if (data.shouldThrow()) throw cms::Exception("Configuration") << "requested pattern \"" << m_pattern << "\" does not match any L1 trigger in the current menu"; else edm::LogWarning("Configuration") << "requested pattern \"" << m_pattern << "\" does not match any L1 trigger in the current menu"; } } }
bool triggerExpression::L1Reader::operator() | ( | const Data & | data | ) | const [virtual] |
Implements triggerExpression::Evaluator.
Definition at line 17 of file TriggerExpressionL1Reader.cc.
References L1GlobalTriggerReadoutRecord::decisionWord(), triggerExpression::Data::hasL1T(), triggerExpression::Data::l1tResults(), and m_triggers.
{ if (not data.hasL1T()) return false; const std::vector<bool> & word = data.l1tResults().decisionWord(); if (word.empty()) return false; typedef std::pair<std::string, unsigned int> value_type; BOOST_FOREACH(const value_type & trigger, m_triggers) if (trigger.second < word.size() and word[trigger.second]) return true; return false; }
std::string triggerExpression::L1Reader::m_pattern [private] |
Definition at line 25 of file TriggerExpressionL1Reader.h.
Referenced by init().
std::vector<std::pair<std::string, unsigned int> > triggerExpression::L1Reader::m_triggers [private] |
Definition at line 26 of file TriggerExpressionL1Reader.h.
Referenced by dump(), init(), and operator()().