ATLAS Offline Software
Loading...
Searching...
No Matches
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
22
23// AthExThinning includes
28
30// Public methods:
32
33using namespace AthExThinning;
34
35// Constructors
37ReadThinnedData::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
69
70// Athena Algorithm's Hooks
73{
74 ATH_MSG_INFO("Initializing " << name() << "...");
75 return StatusCode::SUCCESS;
76}
77
79{
80 ATH_MSG_INFO("Finalizing " << name() << "...");
81 return StatusCode::SUCCESS;
82}
83
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
103StatusCode 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 ) {
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 ) {
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 ) {
143 ("Could not fetch Elephantino at [" << elephantinoName << "] !!");
144 return StatusCode::RECOVERABLE;
145 }
146
147 const double igev = 1. / Gaudi::Units::GeV;
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}
#define endmsg
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
MsgStream & msg() const
const AthExParticle * l1() const
const AthExParticle * l2() const
const AthExParticle * p1() const
const AthExParticle * p2() const
object with 4 legs, so it is best modeled with a vector of ElementLink.
const AthExIParticle * ear1() const
const AthExIParticle * leg4() const
const AthExIParticle * leg3() const
const AthExIParticle * leg1() const
const AthExIParticle * leg2() const
const AthExIParticle * ear2() const
virtual double px() const =0
AthExIParticle interface.
virtual double px() const
Implementation of the AthExIParticle interface.
ReadThinnedData()
Default constructor:
StatusCode checkTest(const std::string &testName)
read the output of a given test (test1, test2, test3)
StringProperty m_decayName
Decay input location.
std::vector< std::string > m_testNames
list of test names
StringProperty m_particlesName
Containers.
StringProperty m_elephantinoName
Elephantino input location.
virtual ~ReadThinnedData()
Destructor:
size_type size() const noexcept
Returns the number of elements in the collection.