Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
HLTrigger
HLTcore
src
TriggerExpressionPathReader.cc
Go to the documentation of this file.
1
#include <cassert>
2
#include <sstream>
3
4
#include "
FWCore/Utilities/interface/RegexMatch.h
"
5
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
6
#include "
DataFormats/Common/interface/TriggerResults.h
"
7
#include "
HLTrigger/HLTcore/interface/TriggerExpressionPathReader.h
"
8
#include "
HLTrigger/HLTcore/interface/TriggerExpressionData.h
"
9
10
namespace
triggerExpression {
11
12
// define the result of the module from the HLT reults
13
bool
PathReader::operator()
(
const
Data
&
data
)
const
{
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
}
23
24
void
PathReader::dump
(std::ostream&
out
)
const
{
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
}
36
37
// (re)initialize the module
38
void
PathReader::init
(
const
Data
&
data
) {
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
}
88
89
}
// namespace triggerExpression
first
auto first
Definition:
CAHitNtupletGeneratorKernelsImpl.h:127
mps_fire.i
i
Definition:
mps_fire.py:428
triggerExpression::Data::triggerIndex
int triggerIndex(std::string const &p) const
Definition:
TriggerExpressionData.h:179
MessageLogger.h
triggerExpression::Data::usePathStatus
bool usePathStatus() const
Definition:
TriggerExpressionData.h:141
triggerExpression::Data::passHLT
bool passHLT(unsigned int const &index) const
Definition:
TriggerExpressionData.h:173
TriggerResults.h
triggerExpression::Data::triggerNames
const std::vector< std::string > & triggerNames() const
Definition:
TriggerExpressionData.h:167
triggerExpression::PathReader::m_pattern
std::string m_pattern
Definition:
TriggerExpressionPathReader.h:24
edm::is_glob
bool is_glob(std::string const &pattern)
Definition:
RegexMatch.cc:17
cms::cuda::assert
assert(be >=bs)
RegexMatch.h
triggerExpression::PathReader::operator()
bool operator()(const Data &data) const override
Definition:
TriggerExpressionPathReader.cc:13
TriggerExpressionData.h
triggerExpression::PathReader::init
void init(const Data &data) override
Definition:
TriggerExpressionPathReader.cc:38
AlignmentPI::index
index
Definition:
AlignmentPayloadInspectorHelper.h:46
triggerExpression::PathReader::dump
void dump(std::ostream &out) const override
Definition:
TriggerExpressionPathReader.cc:24
TriggerExpressionPathReader.h
triggerExpression::Data::hasHLT
bool hasHLT() const
Definition:
TriggerExpressionData.h:145
triggerExpression::Data::shouldThrow
bool shouldThrow() const
Definition:
TriggerExpressionData.h:163
cms::Exception
Definition:
Exception.h:70
mps_check.msg
tuple msg
Definition:
mps_check.py:285
triggerExpression::Data
Definition:
TriggerExpressionData.h:23
edm::regexMatch
std::vector< std::vector< std::string >::const_iterator > regexMatch(std::vector< std::string > const &strings, std::regex const ®exp)
Definition:
RegexMatch.cc:26
AlCaHLTBitMon_ParallelJobs.p
tuple p
Definition:
AlCaHLTBitMon_ParallelJobs.py:153
data
char data[epos_bytes_allocation]
Definition:
EPOS_Wrapper.h:79
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition:
Utils.h:10
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:25
submitPVResolutionJobs.out
string out
Definition:
submitPVResolutionJobs.py:118
Generated for CMSSW Reference Manual by
1.8.5