ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigEvent
TrigMonitoringEvent
src
TrigMonTE.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
6
7
#include "
TrigMonitoringEvent/TrigMonTE.h
"
8
#include "
AthenaKernel/errorcheck.h
"
9
10
// C/C++
11
#include <cassert>
12
#include <iostream>
13
#include <sstream>
14
#include <set>
15
#include <array>
16
17
namespace
SeqBits
18
{
19
const
uint32_t
maskLow16
= 0x0000ffff;
// mask 2 type bits
20
const
uint32_t
maskType
= 0x00c00000;
// mask 2 type bits
21
22
const
uint32_t
shiftType
= 22;
// shift 2 type bits
23
}
24
25
26
//--------------------------------------------------------------------------------------
27
TrigMonTE::TrigMonTE
(uint32_t
id
, uint16_t
index
)
28
:
m_id
(id),
29
m_encoded
(
index
)
30
{
31
}
32
33
//--------------------------------------------------------------------------------------
34
void
TrigMonTE::addVar
(
const
TrigMonVar
&var)
35
{
36
//
37
// Store variable as int and float, reserve 0-9 keys
38
//
39
if
(var.getKey() > 9) {
40
m_var_key
.push_back(var.getKey());
41
m_var_val
.push_back(var.getData());
42
}
43
}
44
45
//--------------------------------------------------------------------------------------
46
void
TrigMonTE::setType
(
Type
type
)
47
{
48
//
49
// Set trigger element type: use 2 bits
50
//
51
m_encoded
|= (
type
<<
SeqBits::shiftType
);
52
}
53
54
//--------------------------------------------------------------------------------------
55
void
TrigMonTE::addState
(
State
state)
56
{
57
//
58
// Set state bits directly
59
//
60
m_encoded
|= state;
61
}
62
63
//--------------------------------------------------------------------------------------
64
TrigMonTE::Type
TrigMonTE::getType
()
const
65
{
66
//
67
// Return trigger element type
68
//
69
const
unsigned
int
val = (
m_encoded
&
SeqBits::maskType
) >>
SeqBits::shiftType
;
70
static
constexpr
std::array<Type,4>
types
{
kELEM
,
kINIT
,
kROI
,
kL1TH
};
71
return
types
.at(val);
72
}
73
74
//--------------------------------------------------------------------------------------
75
uint16_t
TrigMonTE::getIndex
()
const
76
{
77
//
78
// Return index - mask low 16 bits
79
//
80
return
(
m_encoded
&
SeqBits::maskLow16
);
81
}
82
83
//--------------------------------------------------------------------------------------
84
const
std::vector<TrigMonVar>
TrigMonTE::getVar
()
const
85
{
86
//
87
// Build variables on a fly and return vector by value
88
//
89
std::vector<TrigMonVar> var;
90
91
if
(
m_var_key
.size() ==
m_var_val
.size()) {
92
//
93
// Iterate over keys abd values
94
//
95
var.reserve(
m_var_key
.size());
96
97
for
(
unsigned
int
i = 0; i <
m_var_key
.size(); ++i) {
98
var.push_back(
TrigMonVar
(
m_var_key
[i],
m_var_val
[i]));
99
}
100
}
101
102
return
var;
103
}
104
105
//--------------------------------------------------------------------------------------
106
void
TrigMonTE::print
(std::ostream &os)
107
{
108
os <<
str
(*
this
) << std::endl;
109
}
110
111
void
TrigMonTE::print
()
112
{
113
std::cout <<
str
(*
this
) << std::endl;
114
}
115
116
117
//--------------------------------------------------------------------------------------
118
std::string
str
(
const
TrigMonTE
&o)
119
{
120
std::stringstream s;
121
122
s <<
"TrigMonTE id="
<< o.
getId
() <<
" status="
;
123
if
(o.
getType
() ==
TrigMonTE::kINIT
) s <<
"init"
;
124
else
if
(o.
getType
() ==
TrigMonTE::kROI
) s <<
"roi "
;
125
else
if
(o.
getType
() ==
TrigMonTE::kL1TH
) s <<
"L1th"
;
126
else
if
(o.
getType
() ==
TrigMonTE::kELEM
) s <<
"elem"
;
127
else
s <<
"bad "
;
128
s <<
" index="
<< o.
getIndex
();
129
130
s << std::endl <<
" children "
<< o.
getChildIndex
().size() <<
": "
;
131
for
(
unsigned
int
i = 0; i < o.
getChildIndex
().
size
(); ++i) s << o.
getChildIndex
()[i] <<
" "
;
132
s << std::endl;
133
134
s << std::endl <<
" parents "
<< o.
getParentIndex
().size() <<
": "
;
135
for
(
unsigned
int
i = 0; i < o.
getParentIndex
().
size
(); ++i) s << o.
getParentIndex
()[i] <<
" "
;
136
s << std::endl;
137
138
s << std::endl <<
" features "
<< o.
getClid
().size() <<
": "
;
139
for
(
unsigned
int
i = 0; i < o.
getClid
().
size
(); ++i) s << o.
getClid
()[i] <<
" "
;
140
s << std::endl;
141
142
return
s.str();
143
}
144
145
//--------------------------------------------------------------------------------------
146
bool
Equal
(
const
TrigMonTE
&lhs,
const
TrigMonTE
&rhs)
147
{
148
//
149
// Compare TriggerElements by id and roi parents
150
//
151
152
// 1st: compare types
153
if
(lhs.
getType
() != rhs.
getType
())
return
false
;
154
155
// 2nd: initial node?
156
if
(lhs.
getType
() ==
TrigMonTE::kINIT
)
return
true
;
157
158
// 3rd: RoI or ELEM node?
159
if
(lhs.
getId
() != rhs.
getId
())
return
false
;
160
161
const
std::set<uint8_t> lhs_set(lhs.
getRoiId
().begin(), lhs.
getRoiId
().end());
162
const
std::set<uint8_t> rhs_set(rhs.
getRoiId
().begin(), rhs.
getRoiId
().end());
163
164
return
lhs_set == rhs_set;
165
}
errorcheck.h
Helpers for checking error return status codes and reporting errors.
types
static const std::vector< std::string > types
Definition
MuonTriggerSFFilesTest.cxx:20
size
size_t size() const
Number of registered mappings.
Equal
bool Equal(const TrigMonTE &lhs, const TrigMonTE &rhs)
Definition
TrigMonTE.cxx:146
TrigMonTE.h
TrigMonTE
Summary of one trigger element from navigation tree.
Definition
TrigMonTE.h:28
TrigMonTE::setType
void setType(Type type)
Definition
TrigMonTE.cxx:46
TrigMonTE::State
State
Definition
TrigMonTE.h:37
TrigMonTE::Type
Type
Definition
TrigMonTE.h:31
TrigMonTE::kINIT
@ kINIT
Definition
TrigMonTE.h:33
TrigMonTE::kL1TH
@ kL1TH
Definition
TrigMonTE.h:35
TrigMonTE::kELEM
@ kELEM
Definition
TrigMonTE.h:32
TrigMonTE::kROI
@ kROI
Definition
TrigMonTE.h:34
TrigMonTE::addVar
void addVar(const TrigMonVar &var)
Definition
TrigMonTE.cxx:34
TrigMonTE::getRoiId
const std::vector< uint8_t > & getRoiId() const
Definition
TrigMonTE.h:77
TrigMonTE::getVar
const std::vector< TrigMonVar > getVar() const
Definition
TrigMonTE.cxx:84
TrigMonTE::getParentIndex
const std::vector< uint16_t > & getParentIndex() const
Definition
TrigMonTE.h:75
TrigMonTE::m_id
uint32_t m_id
Definition
TrigMonTE.h:89
TrigMonTE::addState
void addState(State state)
Definition
TrigMonTE.cxx:55
TrigMonTE::getIndex
uint16_t getIndex() const
Definition
TrigMonTE.cxx:75
TrigMonTE::TrigMonTE
TrigMonTE()=default
TrigMonTE::getClid
const std::vector< uint32_t > & getClid() const
Definition
TrigMonTE.h:78
TrigMonTE::m_encoded
uint32_t m_encoded
Definition
TrigMonTE.h:90
TrigMonTE::getId
uint32_t getId() const
Definition
TrigMonTE.h:63
TrigMonTE::getChildIndex
const std::vector< uint16_t > & getChildIndex() const
Definition
TrigMonTE.h:74
TrigMonTE::m_var_val
std::vector< float > m_var_val
Definition
TrigMonTE.h:98
TrigMonTE::getType
Type getType() const
Definition
TrigMonTE.cxx:64
TrigMonTE::m_var_key
std::vector< uint16_t > m_var_key
Definition
TrigMonTE.h:97
TrigMonTE::print
void print()
Definition
TrigMonTE.cxx:111
TrigMonVar
Definition
TrigMonVar.h:59
SeqBits
Definition
TrigMonSeq.cxx:14
SeqBits::maskLow16
const uint32_t maskLow16
Definition
TrigMonSeq.cxx:15
SeqBits::maskType
const uint32_t maskType
Definition
TrigMonTE.cxx:20
SeqBits::shiftType
const uint32_t shiftType
Definition
TrigMonTE.cxx:22
index
Definition
index.py:1
str
Definition
BTagTrackIpAccessor.cxx:11
xAOD::uint32_t
setEventNumber uint32_t
Definition
EventInfo_v1.cxx:127
type
Generated on
for ATLAS Offline Software by
1.17.0