ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaExamples
AthExThinning
src_lib
ReadThinnedData.cxx
Go to the documentation of this file.
1
2
3
/*
4
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// ReadThinnedData.cxx
8
// Implementation file for class ReadThinnedData
9
// Author: S.Binet<binet@cern.ch>
11
12
13
// STL includes
14
15
// FrameWork includes
16
#include "GaudiKernel/MsgStream.h"
17
#include "Gaudi/Property.h"
18
#include "GaudiKernel/SystemOfUnits.h"
19
20
// StoreGate
21
#include "
StoreGate/StoreGateSvc.h
"
22
23
// AthExThinning includes
24
#include "
AthExThinning/AthExParticles.h
"
25
#include "
AthExThinning/AthExDecay.h
"
26
#include "
AthExThinning/AthExElephantino.h
"
27
#include "
AthExThinning/ReadThinnedData.h
"
28
30
// Public methods:
32
33
using namespace
AthExThinning
;
34
35
// Constructors
37
ReadThinnedData::ReadThinnedData
(
const
std::string& name,
38
ISvcLocator* pSvcLocator ) :
39
AthAlgorithm
( name, pSvcLocator )
40
{
41
//
42
// Property declaration
43
//
44
//declareProperty( "Property", m_nProperty );
45
46
declareProperty
(
"Particles"
,
47
m_particlesName
=
"Particles"
,
48
"Input location of particles"
);
49
50
declareProperty
(
"Decay"
,
51
m_decayName
=
"TwoBodyDecay"
,
52
"Input location of Decay"
);
53
54
declareProperty
(
"Elephantino"
,
55
m_elephantinoName
=
"PinkElephantino"
,
56
"Input location of Elephantino"
);
57
58
declareProperty
(
"TestNames"
,
59
m_testNames
= {
"test1"
,
"test2"
,
"test3"
},
60
"List of tests to proceed with"
);
61
62
}
63
64
// Destructor
66
ReadThinnedData::~ReadThinnedData
()
67
{
68
}
69
70
// Athena Algorithm's Hooks
72
StatusCode
ReadThinnedData::initialize
()
73
{
74
ATH_MSG_INFO
(
"Initializing "
<< name() <<
"..."
);
75
return
StatusCode::SUCCESS;
76
}
77
78
StatusCode
ReadThinnedData::finalize
()
79
{
80
ATH_MSG_INFO
(
"Finalizing "
<< name() <<
"..."
);
81
return
StatusCode::SUCCESS;
82
}
83
84
StatusCode
ReadThinnedData::execute
(
const
EventContext&
/*ctx*/
)
85
{
86
ATH_MSG_DEBUG
(
"Executing "
<< name() <<
"..."
);
87
88
for
( std::vector<std::string>::const_iterator
89
itr =
m_testNames
.begin(),
90
iEnd =
m_testNames
.end();
91
itr != iEnd;
92
++itr ) {
93
ATH_MSG_INFO
(
"Reading data for ["
<< *itr <<
"]..."
);
94
if
( !
checkTest
(*itr).isSuccess() ) {
95
ATH_MSG_ERROR
(
"Could not read data for ["
<< *itr <<
"] !!"
);
96
return
StatusCode::FAILURE;
97
}
98
}
99
100
return
StatusCode::SUCCESS;
101
}
102
103
StatusCode
ReadThinnedData::checkTest
(
const
std::string& testName )
104
{
105
const
std::string& test = testName;
106
107
// fetch Particles
108
const
std::string particlesName =
m_particlesName
.value()+
"_"
+test;
109
const
AthExParticles
* particles = 0;
110
if
( !
evtStore
()->retrieve(particles, particlesName).isSuccess() ||
111
0 == particles ) {
112
ATH_MSG_WARNING
(
"Could not fetch particles at ["
113
<< particlesName <<
"] !!"
);
114
return
StatusCode::RECOVERABLE;
115
}
116
117
// fetch IParticles
118
const
std::string iparticlesName =
m_particlesName
.value()+
"_"
+test;
119
const
AthExParticles
* iparticles = 0;
120
if
( !
evtStore
()->retrieve(iparticles, iparticlesName).isSuccess() ||
121
0 == iparticles ) {
122
ATH_MSG_WARNING
123
(
"Could not fetch iparticles at ["
<< iparticlesName <<
"] !!"
);
124
return
StatusCode::RECOVERABLE;
125
}
126
127
// fetch Decay
128
const
std::string decayName =
m_decayName
.value()+
"_"
+test;
129
const
AthExDecay
* decay = 0;
130
if
( !
evtStore
()->retrieve(decay, decayName).isSuccess() ||
131
0 == decay ) {
132
ATH_MSG_WARNING
133
(
"Could not fetch Decay at ["
<< decayName <<
"] !!"
);
134
return
StatusCode::RECOVERABLE;
135
}
136
137
// fetch Elephantino
138
const
std::string elephantinoName =
m_elephantinoName
.value()+
"_"
+test;
139
const
AthExElephantino
* elephantino = 0;
140
if
( !
evtStore
()->retrieve(elephantino, elephantinoName).isSuccess() ||
141
0 == elephantino ) {
142
ATH_MSG_WARNING
143
(
"Could not fetch Elephantino at ["
<< elephantinoName <<
"] !!"
);
144
return
StatusCode::RECOVERABLE;
145
}
146
147
const
double
igev = 1. / Gaudi::Units::GeV;
148
ATH_MSG_INFO
149
(
"IN particles: "
<< particles->size() <<
endmsg
150
<<
"IN iparticles: "
<< iparticles->
size
() <<
endmsg
151
<<
"IN decay: "
<<
endmsg
152
<<
" p1: px= "
<< decay->
p1
()->
px
() * igev <<
endmsg
153
<<
" p2: px= "
<< decay->
p2
()->
px
() * igev);
154
155
msg
(MSG::INFO) <<
" l1: px= "
;
156
if
( decay->
l1
() ) {
msg
(MSG::INFO) << decay->
l1
()->
px
() * igev <<
endmsg
;
157
}
else
{
msg
(MSG::INFO) <<
"[thinned!]"
<<
endmsg
;
158
}
159
msg
(MSG::INFO) <<
" l2: px= "
;
160
if
( decay->
l2
() ) {
msg
(MSG::INFO) << decay->
l2
()->
px
() * igev <<
endmsg
;
161
}
else
{
msg
(MSG::INFO) <<
"[thinned!]"
<<
endmsg
;
162
}
163
164
msg
(MSG::INFO)
165
<<
"IN elephantino: "
<<
endmsg
166
<<
" leg1: px= "
<< elephantino->
leg1
()->
px
() * igev <<
endmsg
167
<<
" leg2: px= "
<< elephantino->
leg2
()->
px
() * igev <<
endmsg
168
<<
" leg3: px= "
<< elephantino->
leg3
()->
px
() * igev <<
endmsg
169
<<
" leg4: px= "
<< elephantino->
leg4
()->
px
() * igev <<
endmsg
;
170
171
msg
(MSG::INFO) <<
" ear1: px= "
;
172
if
( elephantino->
ear1
() ) {
173
msg
(MSG::INFO) << elephantino->
ear1
()->
px
() * igev <<
endmsg
;
174
}
else
{
175
msg
(MSG::INFO) <<
"[thinned!]"
<<
endmsg
;
176
}
177
msg
(MSG::INFO) <<
" ear2: px= "
;
178
if
( elephantino->
ear2
() ) {
179
msg
(MSG::INFO) << elephantino->
ear2
()->
px
() * igev <<
endmsg
;
180
}
else
{
181
msg
(MSG::INFO) <<
"[thinned!]"
<<
endmsg
;
182
}
183
184
msg
(MSG::INFO) <<
"Particles | IParticles : "
<<
endmsg
;
185
for
(
unsigned
int
i = 0; i != particles->size(); ++i ) {
186
msg
(MSG::INFO)
187
<< std::setw(9) << (* particles)[i]->px() * igev
188
<<
" | "
189
<< std::setw(9) << (*iparticles)[i]->px() * igev
190
<<
endmsg
;
191
}
192
msg
(MSG::INFO) <<
"======================"
<<
endmsg
;
193
194
return
StatusCode::SUCCESS;
195
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
AthExDecay.h
AthExElephantino.h
AthExParticles.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
ReadThinnedData.h
StoreGateSvc.h
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
Definition
AthCommonDataStore.h:85
AthCommonAlgorithm< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition
AthCommonMsg.h:24
AthExDecay
Definition
AthExDecay.h:28
AthExDecay::l1
const AthExParticle * l1() const
Definition
AthExDecay.cxx:73
AthExDecay::l2
const AthExParticle * l2() const
Definition
AthExDecay.cxx:80
AthExDecay::p1
const AthExParticle * p1() const
Definition
AthExDecay.cxx:59
AthExDecay::p2
const AthExParticle * p2() const
Definition
AthExDecay.cxx:66
AthExElephantino
object with 4 legs, so it is best modeled with a vector of ElementLink.
Definition
AthExElephantino.h:33
AthExElephantino::ear1
const AthExIParticle * ear1() const
Definition
AthExElephantino.cxx:85
AthExElephantino::leg4
const AthExIParticle * leg4() const
Definition
AthExElephantino.cxx:77
AthExElephantino::leg3
const AthExIParticle * leg3() const
Definition
AthExElephantino.cxx:69
AthExElephantino::leg1
const AthExIParticle * leg1() const
Definition
AthExElephantino.cxx:53
AthExElephantino::leg2
const AthExIParticle * leg2() const
Definition
AthExElephantino.cxx:61
AthExElephantino::ear2
const AthExIParticle * ear2() const
Definition
AthExElephantino.cxx:93
AthExIParticle::px
virtual double px() const =0
AthExIParticle interface.
AthExParticle::px
virtual double px() const
Implementation of the AthExIParticle interface.
Definition
AthExParticle.h:78
AthExParticles
Definition
AthExParticles.h:37
AthExThinning::ReadThinnedData::execute
virtual StatusCode execute(const EventContext &ctx)
Execute method.
Definition
ReadThinnedData.cxx:84
AthExThinning::ReadThinnedData::ReadThinnedData
ReadThinnedData()
Default constructor:
AthExThinning::ReadThinnedData::checkTest
StatusCode checkTest(const std::string &testName)
read the output of a given test (test1, test2, test3)
Definition
ReadThinnedData.cxx:103
AthExThinning::ReadThinnedData::m_decayName
StringProperty m_decayName
Decay input location.
Definition
ReadThinnedData.h:79
AthExThinning::ReadThinnedData::m_testNames
std::vector< std::string > m_testNames
list of test names
Definition
ReadThinnedData.h:85
AthExThinning::ReadThinnedData::initialize
virtual StatusCode initialize()
Definition
ReadThinnedData.cxx:72
AthExThinning::ReadThinnedData::m_particlesName
StringProperty m_particlesName
Containers.
Definition
ReadThinnedData.h:76
AthExThinning::ReadThinnedData::m_elephantinoName
StringProperty m_elephantinoName
Elephantino input location.
Definition
ReadThinnedData.h:82
AthExThinning::ReadThinnedData::finalize
virtual StatusCode finalize()
Definition
ReadThinnedData.cxx:78
AthExThinning::ReadThinnedData::~ReadThinnedData
virtual ~ReadThinnedData()
Destructor:
Definition
ReadThinnedData.cxx:66
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthExThinning
Definition
CreateData.h:30
Generated on
for ATLAS Offline Software by
1.17.0