HLTrigger
HLTcore
src
TriggerExpressionL1uGTReader.cc
Go to the documentation of this file.
1
#include <iostream>
2
#include <regex>
3
4
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
5
#include "
FWCore/Utilities/interface/RegexMatch.h
"
6
#include "
CondFormats/L1TObjects/interface/L1GtTriggerMask.h
"
7
#include "
CondFormats/L1TObjects/interface/L1TUtmTriggerMenu.h
"
8
#include "
DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h
"
9
#include "
HLTrigger/HLTcore/interface/TriggerExpressionData.h
"
10
#include "
HLTrigger/HLTcore/interface/TriggerExpressionL1uGTReader.h
"
11
12
namespace
triggerExpression
{
13
14
// define the result of the module from the L1 reults
15
bool
L1uGTReader::operator()
(
const
Data
&
data
)
const
{
16
if
(not
data
.hasL1T())
17
return
false
;
18
19
std::vector<bool>
const
&
word
=
data
.l1tResults();
20
if
(
word
.empty())
21
return
false
;
22
23
for
(
auto
const
&
trigger
:
m_triggers
)
24
if
(
trigger
.second <
word
.size() and
word
[
trigger
.second])
25
return
true
;
26
27
return
false
;
28
}
29
30
void
L1uGTReader::dump
(std::ostream&
out
)
const
{
31
if
(
m_triggers
.empty()) {
32
out
<<
"FALSE"
;
33
}
else
if
(
m_triggers
.size() == 1) {
34
out
<<
m_triggers
[0].first;
35
}
else
{
36
out
<<
"("
<<
m_triggers
[0].first;
37
for
(
unsigned
int
i
= 1;
i
<
m_triggers
.size(); ++
i
)
38
out
<<
" OR "
<<
m_triggers
[
i
].
first
;
39
out
<<
")"
;
40
}
41
}
42
43
void
L1uGTReader::init
(
const
Data
&
data
) {
44
if
(not
data
.hasL1T())
45
return
;
46
47
const
L1TUtmTriggerMenu
&
menu
=
data
.l1tMenu();
48
49
// clear the previous configuration
50
m_triggers
.clear();
51
52
// check if the pattern has is a glob expression, or a single trigger name
53
auto
const
& triggerMap =
menu
.getAlgorithmMap();
54
if
(not
edm::is_glob
(
m_pattern
)) {
55
// no wildcard expression
56
auto
entry
= triggerMap.find(
m_pattern
);
57
if
(
entry
!= triggerMap.end()) {
58
// single L1 bit
59
m_triggers
.push_back(std::make_pair(
m_pattern
,
entry
->second.getIndex()));
60
}
else
61
// trigger not found in the current menu
62
if
(
data
.shouldThrow())
63
throw
cms::Exception
(
"Configuration"
)
64
<<
"requested L1 trigger \""
<<
m_pattern
<<
"\" does not exist in the current L1 menu"
;
65
else
66
edm::LogWarning
(
"Configuration"
) <<
"requested L1 trigger \""
<<
m_pattern
67
<<
"\" does not exist in the current L1 menu"
;
68
}
else
{
69
// expand wildcards in the pattern
70
bool
match
=
false
;
71
std::regex re(
edm::glob2reg
(
m_pattern
));
72
for
(
auto
const
&
entry
: triggerMap)
73
if
(std::regex_match(
entry
.first, re)) {
74
match
=
true
;
75
m_triggers
.push_back(std::make_pair(
entry
.first,
entry
.second.getIndex()));
76
}
77
78
if
(not
match
) {
79
// m_pattern does not match any L1 bits
80
if
(
data
.shouldThrow())
81
throw
cms::Exception
(
"Configuration"
)
82
<<
"requested pattern \""
<<
m_pattern
<<
"\" does not match any L1 trigger in the current menu"
;
83
else
84
edm::LogWarning
(
"Configuration"
)
85
<<
"requested pattern \""
<<
m_pattern
<<
"\" does not match any L1 trigger in the current menu"
;
86
}
87
}
88
}
89
90
}
// namespace triggerExpression
mps_fire.i
i
Definition:
mps_fire.py:428
MessageLogger.h
L1GtTriggerMask.h
mps_splice.entry
entry
Definition:
mps_splice.py:68
triggerExpression::L1uGTReader::m_triggers
std::vector< std::pair< std::string, unsigned int > > m_triggers
Definition:
TriggerExpressionL1uGTReader.h:23
edm::is_glob
bool is_glob(std::string const &pattern)
Definition:
RegexMatch.cc:17
dqmdumpme.first
first
Definition:
dqmdumpme.py:55
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition:
MessageLogger.h:122
word
uint64_t word
Definition:
CTPPSTotemDataFormatter.cc:29
L1TUtmTriggerMenu
Definition:
L1TUtmTriggerMenu.h:25
triggerExpression::L1uGTReader::init
void init(const Data &data) override
Definition:
TriggerExpressionL1uGTReader.cc:43
edm::glob2reg
std::string glob2reg(std::string const &pattern)
Definition:
RegexMatch.cc:19
L1TUtmTriggerMenu.h
optionsL1T.menu
menu
Definition:
optionsL1T.py:29
TriggerExpressionL1uGTReader.h
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition:
Utils.h:10
triggerExpression::L1uGTReader::operator()
bool operator()(const Data &data) const override
Definition:
TriggerExpressionL1uGTReader.cc:15
triggerExpression::Data
Definition:
TriggerExpressionData.h:22
triggerExpression::L1uGTReader::dump
void dump(std::ostream &out) const override
Definition:
TriggerExpressionL1uGTReader.cc:30
triggerExpression
Definition:
TriggerExpressionConstant.h:6
data
char data[epos_bytes_allocation]
Definition:
EPOS_Wrapper.h:79
trigger
Definition:
HLTPrescaleTableCond.h:8
TriggerExpressionData.h
MillePedeFileConverter_cfg.out
out
Definition:
MillePedeFileConverter_cfg.py:31
cms::Exception
Definition:
Exception.h:70
L1GlobalTriggerReadoutRecord.h
triggerExpression::L1uGTReader::m_pattern
std::string m_pattern
Definition:
TriggerExpressionL1uGTReader.h:22
RegexMatch.h
Generated for CMSSW Reference Manual by
1.8.16