ATLAS Offline Software
ReadThinnedData.cxx
Go to the documentation of this file.
1 
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
28 
30 // Public methods:
32 
33 using namespace AthExThinning;
34 
35 // Constructors
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
67 {
68 }
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 
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 ) {
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 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:18
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthExThinning::ReadThinnedData::m_testNames
std::vector< std::string > m_testNames
list of test names
Definition: ReadThinnedData.h:85
AthExThinning::ReadThinnedData::execute
virtual StatusCode execute()
Definition: ReadThinnedData.cxx:84
AthExParticle::px
virtual double px() const
Implementation of the AthExIParticle interface.
Definition: AthExParticle.h:78
AthExThinning
Definition: CreateData.h:30
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:142
AthExElephantino::leg4
const AthExIParticle * leg4() const
Definition: AthExElephantino.cxx:77
AthExElephantino::ear2
const AthExIParticle * ear2() const
Definition: AthExElephantino.cxx:93
AthExDecay.h
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
AthExElephantino::ear1
const AthExIParticle * ear1() const
Definition: AthExElephantino.cxx:85
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthExElephantino::leg2
const AthExIParticle * leg2() const
Definition: AthExElephantino.cxx:61
lumiFormat.i
int i
Definition: lumiFormat.py:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
AthExParticles.h
AthExThinning::ReadThinnedData::m_decayName
StringProperty m_decayName
Decay input location.
Definition: ReadThinnedData.h:79
AthExElephantino
Definition: AthExElephantino.h:33
AthExThinning::ReadThinnedData::finalize
virtual StatusCode finalize()
Definition: ReadThinnedData.cxx:78
AthExDecay::l1
const AthExParticle * l1() const
Definition: AthExDecay.cxx:73
AthAlgorithm
Definition: AthAlgorithm.h:47
AthExDecay
Definition: AthExDecay.h:28
ReadThinnedData.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
AthExThinning::ReadThinnedData::initialize
virtual StatusCode initialize()
Definition: ReadThinnedData.cxx:72
AthExThinning::ReadThinnedData::m_elephantinoName
StringProperty m_elephantinoName
Elephantino input location.
Definition: ReadThinnedData.h:82
AthExThinning::ReadThinnedData::ReadThinnedData
ReadThinnedData()
Default constructor:
AthExIParticle::px
virtual double px() const =0
AthExIParticle interface.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
AthExElephantino.h
AthExDecay::p2
const AthExParticle * p2() const
Definition: AthExDecay.cxx:66
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
AthExThinning::ReadThinnedData::~ReadThinnedData
virtual ~ReadThinnedData()
Destructor:
Definition: ReadThinnedData.cxx:66
AthExElephantino::leg1
const AthExIParticle * leg1() const
Definition: AthExElephantino.cxx:53
AthExThinning::ReadThinnedData::checkTest
StatusCode checkTest(const std::string &testName)
read the output of a given test (test1, test2, test3)
Definition: ReadThinnedData.cxx:103
AthExDecay::p1
const AthExParticle * p1() const
Definition: AthExDecay.cxx:59
AthExElephantino::leg3
const AthExIParticle * leg3() const
Definition: AthExElephantino.cxx:69
AthExThinning::ReadThinnedData::m_particlesName
StringProperty m_particlesName
Containers.
Definition: ReadThinnedData.h:76
StoreGateSvc.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthExParticles
Definition: AthExParticles.h:37
AthExDecay::l2
const AthExParticle * l2() const
Definition: AthExDecay.cxx:80