ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
D3PDTools
EventLoopTest
Root
UnitTestAlgXAOD.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
//
9
// includes
10
//
11
12
#include <
EventLoopTest/UnitTestAlgXAOD.h
>
13
14
#include <
EventLoop/Job.h
>
15
#include <
EventLoop/OutputStream.h
>
16
#include <
EventLoop/Worker.h
>
17
#include <
RootCoreUtils/Assert.h
>
18
#include <
AsgMessaging/MessageCheck.h
>
19
#include <TFile.h>
20
#include <TH1.h>
21
#include <TTree.h>
22
23
#include <
AsgMessaging/MsgStream.h
>
24
#include <
AsgMessaging/MsgStreamMacros.h
>
25
#include <
xAODEventInfo/EventInfo.h
>
26
27
#include <stdexcept>
28
29
//
30
// method implementations
31
//
32
33
ClassImp
(
EL::UnitTestAlgXAOD
)
34
35
namespace
EL
36
{
37
void
UnitTestAlgXAOD ::
38
testInvariant ()
const
39
{}
40
41
42
43
UnitTestAlgXAOD ::
44
UnitTestAlgXAOD ()
45
{
46
RCU_NEW_INVARIANT
(
this
);
47
}
48
49
50
51
UnitTestAlgXAOD ::
52
~UnitTestAlgXAOD ()
53
{
54
RCU_DESTROY_INVARIANT
(
this
);
55
56
if
(m_state != State::START && m_state != State::HIST_FINALIZED)
57
{
58
ANA_MSG_FATAL
(
"never got completely finalized"
);
59
std::abort ();
60
}
61
}
62
63
64
65
StatusCode
UnitTestAlgXAOD ::
66
setupJob (Job& job)
67
{
68
RCU_CHANGE_INVARIANT
(
this
);
69
70
job.useXAOD ();
71
72
return
StatusCode::SUCCESS;
73
}
74
75
76
77
StatusCode
UnitTestAlgXAOD ::
78
changeInput (
bool
/*firstFile*/
)
79
{
80
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
81
RCU_CHANGE_INVARIANT
(
this
);
82
ANA_MSG_INFO
(
"changeInput"
);
83
ANA_CHECK
(testWorkerState (
true
, {State::HIST_INITIALIZED, State::INITIALIZED, State::INPUT_CHANGED}));
84
if
(m_state == State::HIST_INITIALIZED)
85
m_state = State::INPUT_CHANGED;
86
return
StatusCode::SUCCESS;
87
}
88
89
90
91
StatusCode
UnitTestAlgXAOD ::
92
histInitialize ()
93
{
94
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
95
RCU_CHANGE_INVARIANT
(
this
);
96
ANA_MSG_INFO
(
"histInitialize"
);
97
ANA_CHECK
(testWorkerState (
false
, {State::START}));
98
m_state = State::HIST_INITIALIZED;
99
return
StatusCode::SUCCESS;
100
}
101
102
103
104
StatusCode
UnitTestAlgXAOD ::
105
initialize ()
106
{
107
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
108
RCU_CHANGE_INVARIANT
(
this
);
109
ANA_MSG_INFO
(
"initialize"
);
110
ANA_CHECK
(testWorkerState (
true
, {State::INPUT_CHANGED}));
111
m_state = State::INITIALIZED;
112
return
StatusCode::SUCCESS;
113
}
114
115
116
117
StatusCode
UnitTestAlgXAOD ::
118
fileExecute ()
119
{
120
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
121
RCU_CHANGE_INVARIANT
(
this
);
122
ANA_MSG_INFO
(
"fileExecute"
);
123
ANA_CHECK
(testWorkerState (
false
, {State::HIST_INITIALIZED, State::INPUT_CHANGED, State::INITIALIZED}));
124
125
// in principle I should check here that TEvent is connected to a
126
// good file, but I'm not sure how, just checking that I can
127
// retrieve EventInfo, which is not guaranteed, as the input file
128
// may be empty, but none of the test files is
129
130
if
(wk()->inputFile() ==
nullptr
)
131
{
132
ANA_MSG_ERROR
(
"didn't find input file"
);
133
return
StatusCode::FAILURE;
134
}
135
136
const
xAOD::EventInfo
*info {
nullptr
};
137
ANA_CHECK
(evtStore()->retrieve (info,
"EventInfo"
));
138
139
return
StatusCode::SUCCESS;
140
}
141
142
143
144
StatusCode
UnitTestAlgXAOD ::
145
execute ()
146
{
147
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
148
RCU_CHANGE_INVARIANT
(
this
);
149
ANA_MSG_DEBUG
(
"execute"
);
150
ANA_CHECK
(testWorkerState (
true
, {State::INITIALIZED}));
151
return
StatusCode::SUCCESS;
152
}
153
154
155
156
StatusCode
UnitTestAlgXAOD ::
157
finalize ()
158
{
159
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
160
RCU_CHANGE_INVARIANT
(
this
);
161
ANA_MSG_INFO
(
"finalize"
);
162
ANA_CHECK
(testWorkerState (
false
, {State::INITIALIZED}));
163
m_state = State::FINALIZED;
164
return
StatusCode::SUCCESS;
165
}
166
167
168
169
StatusCode
UnitTestAlgXAOD ::
170
histFinalize ()
171
{
172
ANA_CHECK_SET_TYPE
(
EL::StatusCode
);
173
RCU_CHANGE_INVARIANT
(
this
);
174
ANA_MSG_INFO
(
"histFinalize"
);
175
ANA_CHECK
(testWorkerState (
false
, {State::FINALIZED, State::HIST_FINALIZED}));
176
m_state = State::HIST_FINALIZED;
177
return
StatusCode::SUCCESS;
178
}
179
180
181
182
StatusCode
UnitTestAlgXAOD ::
183
testWorkerState (
bool
validEvent, std::set<State> validStates)
const
184
{
185
if
(validStates.find (m_state) == validStates.end())
186
{
187
ANA_MSG_ERROR
(
"invalid state: "
<<
unsigned
(m_state));
188
return
StatusCode::FAILURE;
189
}
190
191
if
(wk()->xaodEvent() ==
nullptr
)
192
{
193
ANA_MSG_ERROR
(
"didn't find TEvent"
);
194
return
StatusCode::FAILURE;
195
}
196
197
if
(wk()->xaodStore() ==
nullptr
)
198
{
199
ANA_MSG_ERROR
(
"didn't find TStore"
);
200
return
StatusCode::FAILURE;
201
}
202
203
if
(validEvent)
204
{
205
if
(wk()->
tree
() ==
nullptr
)
206
{
207
ANA_MSG_ERROR
(
"didn't find tree"
);
208
return
StatusCode::FAILURE;
209
}
210
211
if
(wk()->treeEntry() < 0 ||
212
wk()->treeEntry() >= wk()->
tree
()->
GetEntries
())
213
{
214
ANA_MSG_ERROR
(
"invalid tree entry"
);
215
return
StatusCode::FAILURE;
216
}
217
218
const
xAOD::EventInfo
*info {
nullptr
};
219
ANA_CHECK
(evtStore()->retrieve (info,
"EventInfo"
));
220
}
221
return
StatusCode::SUCCESS;
222
}
223
}
Assert.h
RCU_DESTROY_INVARIANT
#define RCU_DESTROY_INVARIANT(x)
Definition
Assert.h:223
RCU_CHANGE_INVARIANT
#define RCU_CHANGE_INVARIANT(x)
Definition
Assert.h:219
RCU_NEW_INVARIANT
#define RCU_NEW_INVARIANT(x)
Definition
Assert.h:221
MessageCheck.h
macros for messaging and checking status codes
ANA_MSG_ERROR
#define ANA_MSG_ERROR(xmsg,...)
Macro printing error messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:295
ANA_MSG_DEBUG
#define ANA_MSG_DEBUG(xmsg,...)
Macro printing debug messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:289
ANA_MSG_INFO
#define ANA_MSG_INFO(xmsg,...)
Macro printing info messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:291
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:325
ANA_MSG_FATAL
#define ANA_MSG_FATAL(xmsg,...)
Macro printing fatal messages.
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:297
ANA_CHECK_SET_TYPE
#define ANA_CHECK_SET_TYPE(TYPE)
set the type for ANA_CHECK to report failures
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:315
MsgStreamMacros.h
MsgStream.h
Job.h
OutputStream.h
GetEntries
TGraphErrors * GetEntries(TH2F *histo)
Definition
TRTCalib_makeplots.cxx:4025
ClassImp
ClassImp(EL::UnitTestAlgXAOD) namespace EL
Definition
UnitTestAlgXAOD.cxx:33
UnitTestAlgXAOD.h
Worker.h
EL::UnitTestAlgXAOD
Definition
UnitTestAlgXAOD.h:23
EL
This module defines the arguments passed from the BATCH driver to the BATCH worker.
Definition
AsgComponentFactories.h:16
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition
PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::EventInfo
EventInfo_v1 EventInfo
Definition of the latest event info version.
Definition
IEventInfoCnvTool.h:16
tree
TChain * tree
Definition
tile_monitor.h:30
EventInfo.h
Generated on
for ATLAS Offline Software by
1.17.0