CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
triggerExpression::PathReader Class Reference

#include <TriggerExpressionPathReader.h>

Inheritance diagram for triggerExpression::PathReader:
triggerExpression::Evaluator

Public Member Functions

void dump (std::ostream &out) const override
 
void init (const Data &data) override
 
bool operator() (const Data &data) const override
 
 PathReader (const std::string &pattern)
 
std::vector< std::string > patterns () const override
 
- Public Member Functions inherited from triggerExpression::Evaluator
 Evaluator ()=default
 
virtual ~Evaluator ()=default
 

Private Attributes

std::string m_pattern
 
std::vector< std::pair< std::string, unsigned int > > m_triggers
 

Detailed Description

Definition at line 11 of file TriggerExpressionPathReader.h.

Constructor & Destructor Documentation

◆ PathReader()

triggerExpression::PathReader::PathReader ( const std::string &  pattern)
inline

Member Function Documentation

◆ dump()

void triggerExpression::PathReader::dump ( std::ostream &  out) const
overridevirtual

Implements triggerExpression::Evaluator.

Definition at line 24 of file TriggerExpressionPathReader.cc.

References first, mps_fire::i, m_triggers, and MillePedeFileConverter_cfg::out.

24  {
25  if (m_triggers.empty()) {
26  out << "FALSE";
27  } else if (m_triggers.size() == 1) {
28  out << m_triggers[0].first;
29  } else {
30  out << "(" << m_triggers[0].first;
31  for (unsigned int i = 1; i < m_triggers.size(); ++i)
32  out << " OR " << m_triggers[i].first;
33  out << ")";
34  }
35  }
std::vector< std::pair< std::string, unsigned int > > m_triggers

◆ init()

void triggerExpression::PathReader::init ( const Data data)
overridevirtual

Reimplemented from triggerExpression::Evaluator.

Definition at line 38 of file TriggerExpressionPathReader.cc.

References cms::cuda::assert(), data, edm::is_glob(), m_pattern, m_triggers, match(), oniaPATMuonsWithTrigger_cff::matches, mps_check::msg, AlCaHLTBitMon_ParallelJobs::p, and edm::regexMatch().

38  {
39  // clear the previous configuration
40  m_triggers.clear();
41 
42  // check if the pattern has is a glob expression, or a single trigger name
43  if (not edm::is_glob(m_pattern)) {
44  // no wildcard expression
45  auto index = data.triggerIndex(m_pattern);
46  if (index >= 0)
47  m_triggers.push_back(std::make_pair(m_pattern, index));
48  else {
49  std::stringstream msg;
50  msg << "requested HLT path \"" << m_pattern << "\" does not exist - known paths are:";
51  if (data.triggerNames().empty())
52  msg << " (none)";
53  else
54  for (auto const& p : data.triggerNames())
55  msg << "\n\t" << p;
56  if (data.shouldThrow())
57  throw cms::Exception("Configuration") << msg.str();
58  else
59  edm::LogWarning("Configuration") << msg.str();
60  }
61  } else {
62  // expand wildcards in the pattern
63  const std::vector<std::vector<std::string>::const_iterator>& matches =
64  edm::regexMatch(data.triggerNames(), m_pattern);
65  if (matches.empty()) {
66  // m_pattern does not match any trigger paths
67  std::stringstream msg;
68  msg << "requested pattern \"" << m_pattern << "\" does not match any HLT paths - known paths are:";
69  if (data.triggerNames().empty())
70  msg << " (none)";
71  else
72  for (auto const& p : data.triggerNames())
73  msg << "\n\t" << p;
74  if (data.shouldThrow())
75  throw cms::Exception("Configuration") << msg.str();
76  else
77  edm::LogWarning("Configuration") << msg.str();
78  } else {
79  // store indices corresponding to the matching triggers
80  for (auto const& match : matches) {
81  auto index = data.triggerIndex(*match);
82  assert(index >= 0);
83  m_triggers.push_back(std::make_pair(*match, index));
84  }
85  }
86  }
87  }
bool is_glob(std::string const &pattern)
Definition: RegexMatch.cc:17
assert(be >=bs)
tuple msg
Definition: mps_check.py:285
std::vector< std::vector< std::string >::const_iterator > regexMatch(std::vector< std::string > const &strings, std::regex const &regexp)
Definition: RegexMatch.cc:26
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
Log< level::Warning, false > LogWarning
std::vector< std::pair< std::string, unsigned int > > m_triggers

◆ operator()()

bool triggerExpression::PathReader::operator() ( const Data data) const
overridevirtual

Implements triggerExpression::Evaluator.

Definition at line 13 of file TriggerExpressionPathReader.cc.

References data, and m_triggers.

13  {
14  if (not data.hasHLT() && not data.usePathStatus())
15  return false;
16 
17  for (auto const& trigger : m_triggers)
18  if (data.passHLT(trigger.second))
19  return true;
20 
21  return false;
22  }
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
std::vector< std::pair< std::string, unsigned int > > m_triggers

◆ patterns()

std::vector<std::string> triggerExpression::PathReader::patterns ( ) const
inlineoverridevirtual

Reimplemented from triggerExpression::Evaluator.

Definition at line 19 of file TriggerExpressionPathReader.h.

References m_pattern.

19 { return std::vector<std::string>{m_pattern}; }

Member Data Documentation

◆ m_pattern

std::string triggerExpression::PathReader::m_pattern
private

Definition at line 24 of file TriggerExpressionPathReader.h.

Referenced by init(), and patterns().

◆ m_triggers

std::vector<std::pair<std::string, unsigned int> > triggerExpression::PathReader::m_triggers
private

Definition at line 25 of file TriggerExpressionPathReader.h.

Referenced by dump(), init(), and operator()().