ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Event
EventInfo
src
EventInfo.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
13
14
15
16
#include "EventInfo/EventInfo.h"
17
#include "
EventInfo/EventID.h
"
18
#include "
EventInfo/EventType.h
"
19
#include "
EventInfo/TriggerInfo.h
"
20
21
#include <memory>
22
23
EventInfo::EventInfo
()
24
:
m_event_ID
(
std
::make_unique<
EventID
>(0, 0)),
25
m_event_type
(
std
::make_unique<
EventType
>()),
26
m_trigger_info
(
std
::make_unique<
TriggerInfo
>()) {}
27
28
EventInfo::EventInfo
(
owner<EventID*>
id
,
owner<EventType*>
type
)
29
:
EventInfo
(
std
::
unique_ptr
<
EventID
>(id),
30
std
::
unique_ptr
<
EventType
>(
type
)) {}
31
32
EventInfo::EventInfo
(std::unique_ptr<EventID>
id
,
33
std::unique_ptr<EventType>
type
)
34
:
m_event_ID
(
std
::move(id)),
35
m_event_type
(
std
::move(
type
)),
36
m_trigger_info
(
std
::make_unique<
TriggerInfo
>()) {}
37
38
EventInfo::EventInfo
(
owner<EventID*>
id
,
owner<EventType*>
type
,
39
owner<TriggerInfo*>
trig_info)
40
:
EventInfo
(
std
::
unique_ptr
<
EventID
>(id),
std
::
unique_ptr
<
EventType
>(
type
),
41
std
::
unique_ptr
<
TriggerInfo
>(trig_info)) {}
42
43
EventInfo::EventInfo
(std::unique_ptr<EventID>
id
,
44
std::unique_ptr<EventType>
type
,
45
std::unique_ptr<TriggerInfo> trig_info)
46
:
m_event_ID
(
std
::move(id)),
47
m_event_type
(
std
::move(
type
)),
48
m_trigger_info
(
std
::move(trig_info)) {}
49
50
EventInfo::EventInfo
(
const
EventInfo
& e)
51
:
m_event_ID
(e.
m_event_ID
?
std
::make_unique<
EventID
>(*(e.
m_event_ID
))
52
:
std
::make_unique<
EventID
>(0, 0)),
53
m_event_type
(e.
m_event_type
54
?
std
::make_unique<
EventType
>(*(e.
m_event_type
))
55
:
std
::make_unique<
EventType
>()),
56
m_trigger_info
(e.
m_trigger_info
57
?
std
::make_unique<
TriggerInfo
>(*(e.
m_trigger_info
))
58
:
std
::make_unique<
TriggerInfo
>()),
59
m_event_flags
(e.
m_event_flags
) {}
60
61
EventInfo
& EventInfo::operator = (
const
EventInfo
& e) {
62
if
(
this
!= &e) {
63
setEventID
(e.m_event_ID ? std::make_unique<EventID>(*(e.m_event_ID))
64
: std::make_unique<EventID>(0, 0));
65
66
setEventType
(e.m_event_type ? std::make_unique<EventType>(*(e.m_event_type))
67
: std::make_unique<EventType>());
68
69
setTriggerInfo
(e.m_trigger_info
70
? std::make_unique<TriggerInfo>(*(e.m_trigger_info))
71
: std::make_unique<TriggerInfo>());
72
73
m_event_flags
= e.m_event_flags;
74
}
75
return
*
this
;
76
}
77
78
// Needs to be defined here as unique_ptr's deleter needs the pointee's type to
79
// be a complete type when called
80
EventInfo::~EventInfo() =
default
;
81
EventInfo::EventInfo(
EventInfo
&& e)
noexcept
=
default
;
82
EventInfo
& EventInfo::operator=(
EventInfo
&& e)
noexcept
=
default
;
83
84
void
EventInfo::setEventID
(
owner<EventID*>
pid) {
85
m_event_ID
.reset(pid);
86
}
87
88
void
EventInfo::setEventID
(std::unique_ptr<EventID> pid) {
89
m_event_ID
= std::move(pid);
90
}
91
92
void
EventInfo::setEventType
(
owner<EventType*>
pType) {
93
m_event_type
.reset(pType);
94
}
95
96
void
EventInfo::setEventType
(std::unique_ptr<EventType> pType) {
97
m_event_type
= std::move(pType);
98
}
99
100
void
EventInfo::setTriggerInfo
(
owner<TriggerInfo*>
pTrig) {
101
m_trigger_info
.reset(pTrig);
102
}
103
104
void
EventInfo::setTriggerInfo
(std::unique_ptr<TriggerInfo> pTrig) {
105
m_trigger_info
= std::move(pTrig);
106
}
107
108
bool
109
EventInfo::setEventFlags
(
EventFlagSubDet
subDet,
unsigned
int
flags) {
110
// If event_flags has been cleared on input, reset size to just
111
// before lumi
112
if
(
m_event_flags
.size() < (
unsigned
int
)
Lumi
)
m_event_flags
.resize(
Lumi
, 0);
113
if
((
unsigned
) subDet <
m_event_flags
.size()) {
114
// Combine potentially-existing error states with new flags
115
m_event_flags
[subDet] = (
EF_ERROR_BITS
&
m_event_flags
[subDet]) | (
EF_BITS
& flags);
116
return
(
true
);
117
}
118
return
(
false
);
119
}
120
121
bool
122
EventInfo::setEventFlagBit
(
EventFlagSubDet
subDet,
unsigned
char
bit,
bool
set
) {
123
// If event_flags has been cleared on input, reset size to just
124
// before lumi
125
if
(
m_event_flags
.size() < (
unsigned
int
)
Lumi
)
m_event_flags
.resize(
Lumi
, 0);
126
if
((
unsigned
) subDet <
m_event_flags
.size() && bit <
EF_ERROR_SHIFT
) {
127
if
(
set
) {
128
m_event_flags
[subDet] = (
EF_ERROR_BITS
&
m_event_flags
[subDet]) |
129
((1u << bit) |
m_event_flags
[subDet]);
130
}
else
{
131
unsigned
int
mask =
EF_BITS
^ (1u << bit);
132
m_event_flags
[subDet] = (
EF_ERROR_BITS
&
m_event_flags
[subDet]) |
133
(mask &
m_event_flags
[subDet]);
134
}
135
return
(
true
);
136
}
137
return
(
false
);
138
}
139
140
bool
141
EventInfo::setErrorState
(
EventFlagSubDet
subDet,
EventFlagErrorState
errorState
) {
142
// If event_flags has been cleared on input, reset size to just
143
// before lumi
144
if
(
m_event_flags
.size() < (
unsigned
int
)
Lumi
)
m_event_flags
.resize(
Lumi
, 0);
145
// check that subdet index is in range and that we have a valid error state
146
if
((
unsigned
) subDet <
m_event_flags
.size() &&
147
(
errorState
==
NotSet
||
errorState
==
Warning
||
errorState
==
Error
)) {
148
// Combine potentially-existing flags with new error states
149
m_event_flags
[subDet] =
150
(
unsigned
int) ((
EF_BITS
&
m_event_flags
[subDet]) | ((
unsigned
int
)
errorState
<<
EF_ERROR_SHIFT
));
151
return
(
true
);
152
}
153
return
(
false
);
154
}
155
157
void
158
EventInfo::setActualInteractionsPerCrossing
(
float
interactions) {
159
// pack interaction into 16 bits saving the precision to the 0.01
160
// level
161
unsigned
int
ivalue = (
unsigned
int) (interactions * 100.f);
162
163
if
(ivalue >
ACTUAL_INTERACTS_BITS
) {
164
std::cout <<
165
"EventInfo::setActualInteractionsPerCrossing *** ERROR ***: trying to store too large of value: interactions/ivalue/max value: "
166
<< interactions <<
" "
<< ivalue <<
" "
<<
ACTUAL_INTERACTS_BITS
<< std::endl;
167
}
168
ivalue &=
ACTUAL_INTERACTS_BITS
;
169
// If event_flags has been cleared on input, reset size AND INCLUDE lumi
170
if
(
m_event_flags
.size() <
nDets
)
m_event_flags
.resize(
nDets
, 0);
171
m_event_flags
[
Lumi
] |= ivalue;
// store lower 16 bits
172
}
173
174
void
175
EventInfo::setAverageInteractionsPerCrossing
(
float
interactions) {
176
// pack interaction into 16 bits saving the precision to the 0.01
177
// level
178
unsigned
int
ivalue = (
unsigned
int) (interactions * 100.f);
179
180
if
(ivalue >
ACTUAL_INTERACTS_BITS
) {
181
std::cout <<
182
"EventInfo::setAverageInteractionsPerCrossing *** ERROR ***: trying to store too large of value: interactions/ivalue/max value: "
183
<< interactions <<
" "
<< ivalue <<
" "
<<
ACTUAL_INTERACTS_BITS
<< std::endl;
184
}
185
ivalue = (ivalue <<
AVE_INTERACTS_SHIFT
) &
AVE_INTERACTS_BITS
;
186
// If event_flags has been cleared on input, reset size AND INCLUDE lumi
187
if
(
m_event_flags
.size() <
nDets
)
m_event_flags
.resize(
nDets
, 0);
188
m_event_flags
[
Lumi
] |= ivalue;
// store upper 16 bits
189
}
EventID.h
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
EventType.h
This class provides general information about an event.
TriggerInfo.h
This class contains trigger related information.
EventID
This class provides a unique identification for each event, in terms of run/event number and/or a tim...
Definition
EventID.h:35
EventInfo::setEventID
void setEventID(owner< EventID * > pid)
Definition
EventInfo.cxx:84
EventInfo::setEventFlagBit
bool setEventFlagBit(EventFlagSubDet subDet, unsigned char bit, bool set=true)
Set a bit for an event flag of a particular sub detector.
Definition
EventInfo.cxx:122
EventInfo::setEventType
void setEventType(owner< EventType * >)
Definition
EventInfo.cxx:92
EventInfo::AVE_INTERACTS_SHIFT
@ AVE_INTERACTS_SHIFT
Definition
EventInfo/EventInfo/EventInfo.h:213
EventInfo::EF_BITS
@ EF_BITS
Definition
EventInfo/EventInfo/EventInfo.h:208
EventInfo::ACTUAL_INTERACTS_BITS
@ ACTUAL_INTERACTS_BITS
Definition
EventInfo/EventInfo/EventInfo.h:211
EventInfo::AVE_INTERACTS_BITS
@ AVE_INTERACTS_BITS
Definition
EventInfo/EventInfo/EventInfo.h:212
EventInfo::EF_ERROR_SHIFT
@ EF_ERROR_SHIFT
Definition
EventInfo/EventInfo/EventInfo.h:210
EventInfo::EF_ERROR_BITS
@ EF_ERROR_BITS
Definition
EventInfo/EventInfo/EventInfo.h:209
EventInfo::EventFlagSubDet
EventFlagSubDet
Definition
EventInfo/EventInfo/EventInfo.h:60
EventInfo::Lumi
@ Lumi
Definition
EventInfo/EventInfo/EventInfo.h:61
EventInfo::nDets
@ nDets
Definition
EventInfo/EventInfo/EventInfo.h:61
EventInfo::m_trigger_info
std::unique_ptr< TriggerInfo > m_trigger_info
Definition
EventInfo/EventInfo/EventInfo.h:217
EventInfo::setTriggerInfo
void setTriggerInfo(owner< TriggerInfo * > pTrig)
Add TriggerInfo to existing object.
Definition
EventInfo.cxx:100
EventInfo::errorState
EventFlagErrorState errorState(EventFlagSubDet subDet) const
return error state for a particular sub-detector
Definition
EventInfo/EventInfo/EventInfo.h:274
EventInfo::setEventFlags
bool setEventFlags(EventFlagSubDet subDet, unsigned int flags)
Set event flag for a particular sub detector - maximun size is 28 bits.
Definition
EventInfo.cxx:109
EventInfo::setErrorState
bool setErrorState(EventFlagSubDet subDet, EventFlagErrorState errorState)
Set error state flag for a particular sub detector.
Definition
EventInfo.cxx:141
EventInfo::EventFlagErrorState
EventFlagErrorState
Definition
EventInfo/EventInfo/EventInfo.h:66
EventInfo::NotSet
@ NotSet
Definition
EventInfo/EventInfo/EventInfo.h:67
EventInfo::Error
@ Error
Definition
EventInfo/EventInfo/EventInfo.h:67
EventInfo::Warning
@ Warning
Definition
EventInfo/EventInfo/EventInfo.h:67
EventInfo::setActualInteractionsPerCrossing
void setActualInteractionsPerCrossing(float interactions)
Setting the number of interactions per crossing:
Definition
EventInfo.cxx:158
EventInfo::m_event_type
std::unique_ptr< EventType > m_event_type
Definition
EventInfo/EventInfo/EventInfo.h:216
EventInfo::m_event_ID
std::unique_ptr< EventID > m_event_ID
Definition
EventInfo/EventInfo/EventInfo.h:215
EventInfo::owner
T owner
Definition
EventInfo/EventInfo/EventInfo.h:54
EventInfo::m_event_flags
std::vector< unsigned int > m_event_flags
Definition
EventInfo/EventInfo/EventInfo.h:218
EventInfo::setAverageInteractionsPerCrossing
void setAverageInteractionsPerCrossing(float interactions)
average interactions per crossing for all BCIDs - for out-of-time pile-up
Definition
EventInfo.cxx:175
EventInfo::EventInfo
EventInfo()
Definition
EventInfo.cxx:23
EventType
This class represents the "type of event" where the type is given by one or more "characteristics".
Definition
EventType.h:92
TriggerInfo
This class contains trigger related information.
Definition
TriggerInfo.h:77
set
STL class.
unique_ptr
STL class.
EventInfo
Definition
EventInfo.py:1
std
STL namespace.
type
Generated on
for ATLAS Offline Software by
1.17.0