ATLAS Offline Software
ReadThinnedData.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2023 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  std::vector<std::string> testNames; testNames.reserve(3);
59  testNames.push_back("test1");
60  testNames.push_back("test2");
61  testNames.push_back("test3");
62  declareProperty( "TestNames",
63  m_testNames = testNames,
64  "List of tests to proceed with" );
65 
66 }
67 
68 // Destructor
71 {
72 }
73 
74 // Athena Algorithm's Hooks
77 {
78  ATH_MSG_INFO("Initializing " << name() << "...");
79  return StatusCode::SUCCESS;
80 }
81 
83 {
84  ATH_MSG_INFO("Finalizing " << name() << "...");
85  return StatusCode::SUCCESS;
86 }
87 
89 {
90  ATH_MSG_DEBUG("Executing " << name() << "...");
91 
92  for ( std::vector<std::string>::const_iterator
93  itr = m_testNames.begin(),
94  iEnd = m_testNames.end();
95  itr != iEnd;
96  ++itr ) {
97  ATH_MSG_INFO("Reading data for [" << *itr << "]...");
98  if ( !checkTest(*itr).isSuccess() ) {
99  ATH_MSG_ERROR("Could not read data for [" << *itr << "] !!");
100  return StatusCode::FAILURE;
101  }
102  }
103 
104  return StatusCode::SUCCESS;
105 }
106 
107 StatusCode ReadThinnedData::checkTest( const std::string& testName )
108 {
109  const std::string& test = testName;
110 
111  // fetch Particles
112  const std::string particlesName = m_particlesName.value()+"_"+test;
113  const AthExParticles * particles = 0;
114  if ( !evtStore()->retrieve(particles, particlesName).isSuccess() ||
115  0 == particles ) {
116  ATH_MSG_WARNING("Could not fetch particles at ["
117  << particlesName << "] !!");
118  return StatusCode::RECOVERABLE;
119  }
120 
121  // fetch IParticles
122  const std::string iparticlesName = m_particlesName.value()+"_"+test;
123  const AthExParticles * iparticles = 0;
124  if ( !evtStore()->retrieve(iparticles, iparticlesName).isSuccess() ||
125  0 == iparticles ) {
127  ("Could not fetch iparticles at [" << iparticlesName << "] !!");
128  return StatusCode::RECOVERABLE;
129  }
130 
131  // fetch Decay
132  const std::string decayName = m_decayName.value()+"_"+test;
133  const AthExDecay * decay = 0;
134  if ( !evtStore()->retrieve(decay, decayName).isSuccess() ||
135  0 == decay ) {
137  ("Could not fetch Decay at [" << decayName << "] !!");
138  return StatusCode::RECOVERABLE;
139  }
140 
141  // fetch Elephantino
142  const std::string elephantinoName = m_elephantinoName.value()+"_"+test;
143  const AthExElephantino * elephantino = 0;
144  if ( !evtStore()->retrieve(elephantino, elephantinoName).isSuccess() ||
145  0 == elephantino ) {
147  ("Could not fetch Elephantino at [" << elephantinoName << "] !!");
148  return StatusCode::RECOVERABLE;
149  }
150 
151  const double igev = 1. / Gaudi::Units::GeV;
153  ("IN particles: " << particles->size() << endmsg
154  << "IN iparticles: " << iparticles->size() << endmsg
155  << "IN decay: " << endmsg
156  << " p1: px= " << decay->p1()->px() * igev << endmsg
157  << " p2: px= " << decay->p2()->px() * igev);
158 
159  msg(MSG::INFO) << " l1: px= ";
160  if ( decay->l1() ) { msg(MSG::INFO) << decay->l1()->px() * igev << endmsg;
161  } else { msg(MSG::INFO) << "[thinned!]" << endmsg;
162  }
163  msg(MSG::INFO) << " l2: px= ";
164  if ( decay->l2() ) { msg(MSG::INFO) << decay->l2()->px() * igev << endmsg;
165  } else { msg(MSG::INFO) << "[thinned!]" << endmsg;
166  }
167 
168  msg(MSG::INFO)
169  << "IN elephantino: " << endmsg
170  << " leg1: px= " << elephantino->leg1()->px() * igev << endmsg
171  << " leg2: px= " << elephantino->leg2()->px() * igev << endmsg
172  << " leg3: px= " << elephantino->leg3()->px() * igev << endmsg
173  << " leg4: px= " << elephantino->leg4()->px() * igev << endmsg;
174 
175  msg(MSG::INFO) << " ear1: px= ";
176  if ( elephantino->ear1() ) {
177  msg(MSG::INFO) << elephantino->ear1()->px() * igev << endmsg;
178  } else {
179  msg(MSG::INFO) << "[thinned!]" << endmsg;
180  }
181  msg(MSG::INFO) << " ear2: px= ";
182  if ( elephantino->ear2() ) {
183  msg(MSG::INFO) << elephantino->ear2()->px() * igev << endmsg;
184  } else {
185  msg(MSG::INFO) << "[thinned!]" << endmsg;
186  }
187 
188  msg(MSG::INFO) << "Particles | IParticles : " << endmsg;
189  for ( unsigned int i = 0; i != particles->size(); ++i ) {
190  msg(MSG::INFO)
191  << std::setw(9) << (* particles)[i]->px() * igev
192  << " | "
193  << std::setw(9) << (*iparticles)[i]->px() * igev
194  << endmsg;
195  }
196  msg(MSG::INFO) << "======================" << endmsg;
197 
198  return StatusCode::SUCCESS;
199 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
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
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
AthExThinning::ReadThinnedData::execute
virtual StatusCode execute()
Definition: ReadThinnedData.cxx:88
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:147
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
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:82
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:228
AthExThinning::ReadThinnedData::initialize
virtual StatusCode initialize()
Definition: ReadThinnedData.cxx:76
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
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:70
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:107
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