ATLAS Offline Software
Loading...
Searching...
No Matches
UnitTestAlgXAOD.cxx File Reference
#include <EventLoopTest/UnitTestAlgXAOD.h>
#include <EventLoop/Job.h>
#include <EventLoop/OutputStream.h>
#include <EventLoop/Worker.h>
#include <RootCoreUtils/Assert.h>
#include <AsgMessaging/MessageCheck.h>
#include <TFile.h>
#include <TH1.h>
#include <TTree.h>
#include <AsgMessaging/MsgStream.h>
#include <AsgMessaging/MsgStreamMacros.h>
#include <xAODEventInfo/EventInfo.h>
#include <stdexcept>

Go to the source code of this file.

Functions

 ClassImp (EL::UnitTestAlgXAOD) namespace EL

Function Documentation

◆ ClassImp()

ClassImp ( EL::UnitTestAlgXAOD )
Author
Nils Krumnack

Definition at line 33 of file UnitTestAlgXAOD.cxx.

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 {
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 {
69
70 job.useXAOD ();
71
72 return StatusCode::SUCCESS;
73 }
74
75
76
77 StatusCode UnitTestAlgXAOD ::
78 changeInput (bool /*firstFile*/)
79 {
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 {
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 {
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 {
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 {
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 {
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 {
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}
#define RCU_DESTROY_INVARIANT(x)
Definition Assert.h:223
#define RCU_CHANGE_INVARIANT(x)
Definition Assert.h:219
#define RCU_NEW_INVARIANT(x)
Definition Assert.h:221
#define ANA_MSG_ERROR(xmsg,...)
Macro printing error messages.
#define ANA_MSG_DEBUG(xmsg,...)
Macro printing debug messages.
#define ANA_MSG_INFO(xmsg,...)
Macro printing info messages.
#define ANA_CHECK(EXP)
check whether the given expression was successful
#define ANA_MSG_FATAL(xmsg,...)
Macro printing fatal messages.
#define ANA_CHECK_SET_TYPE(TYPE)
set the type for ANA_CHECK to report failures
TGraphErrors * GetEntries(TH2F *histo)
::StatusCode StatusCode
StatusCode definition for legacy code.
EventInfo_v1 EventInfo
Definition of the latest event info version.
TChain * tree