ATLAS Offline Software
Loading...
Searching...
No Matches
ReadThinnedData.cxx
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2026 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
84StatusCode 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
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 [{}] !!", particlesName);
113 return StatusCode::RECOVERABLE;
114 }
115
116 // fetch IParticles
117 const std::string iparticlesName = m_particlesName.value()+"_"+test;
118 const AthExParticles * iparticles = 0;
119 if ( !evtStore()->retrieve(iparticles, iparticlesName).isSuccess() ||
120 0 == iparticles ) {
122 ("Could not fetch iparticles at [{}] !!", iparticlesName);
123 return StatusCode::RECOVERABLE;
124 }
125
126 // fetch Decay
127 const std::string decayName = m_decayName.value()+"_"+test;
128 const AthExDecay * decay = 0;
129 if ( !evtStore()->retrieve(decay, decayName).isSuccess() ||
130 0 == decay ) {
132 ("Could not fetch Decay at [{}] !!", decayName);
133 return StatusCode::RECOVERABLE;
134 }
135
136 // fetch Elephantino
137 const std::string elephantinoName = m_elephantinoName.value()+"_"+test;
138 const AthExElephantino * elephantino = 0;
139 if ( !evtStore()->retrieve(elephantino, elephantinoName).isSuccess() ||
140 0 == elephantino ) {
142 ("Could not fetch Elephantino at [{}] !!", elephantinoName);
143 return StatusCode::RECOVERABLE;
144 }
145
146 const double igev = 1. / Gaudi::Units::GeV;
147 ATH_MSG_INFO("IN particles: {}", particles->size());
148 ATH_MSG_INFO("IN iparticles: {}", iparticles->size());
149 ATH_MSG_INFO("IN decay: ");
150 ATH_MSG_INFO(" p1: px= {}", decay->p1()->px() * igev);
151 ATH_MSG_INFO(" p2: px= {}", decay->p2()->px() * igev);
152
153 ATH_MSG_INFO(" l1: px= {}",
154 decay->l1() ?
155 std::to_string(decay->l1()->px() * igev) : "[thinned!]");
156 ATH_MSG_INFO(" l2: px= {}",
157 decay->l2() ?
158 std::to_string(decay->l2()->px() * igev) : "[thinned!]");
159
160 ATH_MSG_INFO("IN elephantino: ");
161 ATH_MSG_INFO(" leg1: px= {}", elephantino->leg1()->px() * igev);
162 ATH_MSG_INFO(" leg2: px= {}", elephantino->leg2()->px() * igev);
163 ATH_MSG_INFO(" leg3: px= {}", elephantino->leg3()->px() * igev);
164 ATH_MSG_INFO(" leg4: px= {}", elephantino->leg4()->px() * igev);
165
166 ATH_MSG_INFO(" ear1: px= {}",
167 elephantino->ear1() ?
168 std::to_string(elephantino->ear1()->px() * igev) : "[thinned!]");
169 ATH_MSG_INFO(" ear2: px= {}",
170 elephantino->ear2() ?
171 std::to_string(elephantino->ear2()->px() * igev) : "[thinned!]");
172
173 ATH_MSG_INFO("Particles | IParticles : ");
174 for ( unsigned int i = 0; i != particles->size(); ++i ) {
175 ATH_MSG_INFO("{:9} | {:9}",
176 (* particles)[i]->px() * igev,
177 (*iparticles)[i]->px() * igev);
178 }
179 ATH_MSG_INFO("======================");
180
181 return StatusCode::SUCCESS;
182}
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_INFO(x,...)
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
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.
virtual StatusCode execute(const EventContext &ctx)
Execute method.
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.