CMS 3D CMS Logo

TriggerExpressionPathReader.cc
Go to the documentation of this file.
1 #include <cassert>
2 #include <sstream>
3 
10 
11 namespace triggerExpression {
12 
13  // define the result of the module from the HLT reults
14  bool PathReader::operator()(const Data& data) const {
15  if (not data.hasHLT())
16  return false;
17 
18  for (auto const& trigger : m_triggers)
19  if (data.hltResults().accept(trigger.second))
20  return true;
21 
22  return false;
23  }
24 
25  void PathReader::dump(std::ostream& out) const {
26  if (m_triggers.empty()) {
27  out << "FALSE";
28  } else if (m_triggers.size() == 1) {
29  out << m_triggers[0].first;
30  } else {
31  out << "(" << m_triggers[0].first;
32  for (unsigned int i = 1; i < m_triggers.size(); ++i)
33  out << " OR " << m_triggers[i].first;
34  out << ")";
35  }
36  }
37 
38  // (re)initialize the module
39  void PathReader::init(const Data& data) {
40  // clear the previous configuration
41  m_triggers.clear();
42 
43  // check if the pattern has is a glob expression, or a single trigger name
44  const edm::TriggerNames& hltMenu = data.hltMenu();
45  if (not edm::is_glob(m_pattern)) {
46  // no wildcard expression
47  unsigned int index = hltMenu.triggerIndex(m_pattern);
48  if (index < hltMenu.size())
49  m_triggers.push_back(std::make_pair(m_pattern, index));
50  else {
51  std::stringstream msg;
52  msg << "requested HLT path \"" << m_pattern << "\" does not exist - known paths are:";
53  if (hltMenu.triggerNames().empty())
54  msg << " (none)";
55  else
56  for (auto const& p : hltMenu.triggerNames())
57  msg << "\n\t" << p;
58  if (data.shouldThrow())
59  throw cms::Exception("Configuration") << msg.str();
60  else
61  edm::LogWarning("Configuration") << msg.str();
62  }
63  } else {
64  // expand wildcards in the pattern
65  const std::vector<std::vector<std::string>::const_iterator>& matches =
67  if (matches.empty()) {
68  // m_pattern does not match any trigger paths
69  std::stringstream msg;
70  msg << "requested pattern \"" << m_pattern << "\" does not match any HLT paths - known paths are:";
71  if (hltMenu.triggerNames().empty())
72  msg << " (none)";
73  else
74  for (auto const& p : hltMenu.triggerNames())
75  msg << "\n\t" << p;
76  if (data.shouldThrow())
77  throw cms::Exception("Configuration") << msg.str();
78  else
79  edm::LogWarning("Configuration") << msg.str();
80  } else {
81  // store indices corresponding to the matching triggers
82  for (auto const& match : matches) {
83  unsigned int index = hltMenu.triggerIndex(*match);
84  assert(index < hltMenu.size());
85  m_triggers.push_back(std::make_pair(*match, index));
86  }
87  }
88  }
89  }
90 
91 } // namespace triggerExpression
mps_fire.i
i
Definition: mps_fire.py:428
triggerExpression::PathReader::init
void init(const Data &data) override
Definition: TriggerExpressionPathReader.cc:39
MessageLogger.h
TriggerResults.h
edm::regexMatch
std::vector< std::vector< std::string >::const_iterator > regexMatch(std::vector< std::string > const &strings, std::regex const &regexp)
Definition: RegexMatch.cc:26
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
oniaPATMuonsWithTrigger_cff.matches
matches
Definition: oniaPATMuonsWithTrigger_cff.py:77
cms::cuda::assert
assert(be >=bs)
mps_check.msg
tuple msg
Definition: mps_check.py:285
edm::is_glob
bool is_glob(std::string const &pattern)
Definition: RegexMatch.cc:17
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
triggerExpression::PathReader::m_triggers
std::vector< std::pair< std::string, unsigned int > > m_triggers
Definition: TriggerExpressionPathReader.h:23
TriggerExpressionPathReader.h
edm::TriggerNames::triggerNames
Strings const & triggerNames() const
Definition: TriggerNames.cc:48
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
triggerExpression::PathReader::m_pattern
std::string m_pattern
Definition: TriggerExpressionPathReader.h:22
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
TriggerNames.h
triggerExpression::Data
Definition: TriggerExpressionData.h:22
edm::TriggerNames::triggerIndex
unsigned int triggerIndex(std::string_view name) const
Definition: TriggerNames.cc:52
triggerExpression::PathReader::operator()
bool operator()(const Data &data) const override
Definition: TriggerExpressionPathReader.cc:14
edm::TriggerNames::size
std::size_t size() const
Definition: TriggerNames.cc:59
edm::TriggerNames
Definition: TriggerNames.h:55
triggerExpression
Definition: TriggerExpressionConstant.h:6
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
trigger
Definition: HLTPrescaleTableCond.h:8
TriggerExpressionData.h
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
cms::Exception
Definition: Exception.h:70
RegexMatch.h
triggerExpression::PathReader::dump
void dump(std::ostream &out) const override
Definition: TriggerExpressionPathReader.cc:25