Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
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
first
auto first
Definition:
CAHitNtupletGeneratorKernelsImpl.h:125
mps_fire.i
i
Definition:
mps_fire.py:428
MessageLogger.h
triggerExpression::Data::l1tMenu
const L1TUtmTriggerMenu & l1tMenu() const
Definition:
TriggerExpressionData.h:153
triggerExpression::L1uGTReader::operator()
bool operator()(const Data &data) const override
Definition:
TriggerExpressionL1uGTReader.cc:15
edm::is_glob
bool is_glob(std::string const &pattern)
Definition:
RegexMatch.cc:17
L1GtTriggerMask.h
edm::glob2reg
std::string glob2reg(std::string const &pattern)
Definition:
RegexMatch.cc:19
triggerExpression::Data::hasL1T
bool hasL1T() const
Definition:
TriggerExpressionData.h:143
TriggerExpressionL1uGTReader.h
triggerExpression::L1uGTReader::dump
void dump(std::ostream &out) const override
Definition:
TriggerExpressionL1uGTReader.cc:30
RegexMatch.h
TriggerExpressionData.h
word
uint64_t word
Definition:
CTPPSTotemDataFormatter.cc:29
L1GlobalTriggerReadoutRecord.h
triggerExpression::L1uGTReader::m_triggers
std::vector< std::pair< std::string, unsigned int > > m_triggers
Definition:
TriggerExpressionL1uGTReader.h:23
triggerExpression::L1uGTReader::init
void init(const Data &data) override
Definition:
TriggerExpressionL1uGTReader.cc:43
triggerExpression::Data::l1tResults
const std::vector< bool > & l1tResults() const
Definition:
TriggerExpressionData.h:151
triggerExpression::Data::shouldThrow
bool shouldThrow() const
Definition:
TriggerExpressionData.h:163
L1TUtmTriggerMenu.h
cms::Exception
Definition:
Exception.h:70
triggerExpression::Data
Definition:
TriggerExpressionData.h:23
L1TUtmTriggerMenu::getAlgorithmMap
const std::map< std::string, L1TUtmAlgorithm > & getAlgorithmMap() const
Definition:
L1TUtmTriggerMenu.h:48
triggerExpression::L1uGTReader::m_pattern
std::string m_pattern
Definition:
TriggerExpressionL1uGTReader.h:22
data
char data[epos_bytes_allocation]
Definition:
EPOS_Wrapper.h:79
L1TUtmTriggerMenu
Definition:
L1TUtmTriggerMenu.h:25
relval_steps.menu
list menu
Definition:
relval_steps.py:1867
mps_splice.entry
list entry
Definition:
mps_splice.py:68
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
submitPVResolutionJobs.out
string out
Definition:
submitPVResolutionJobs.py:118
Generated for CMSSW Reference Manual by
1.8.5