ATLAS Offline Software
TruthParticlePrinterAlg.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 // Local include(s).
5 
6 // Framework include(s).
9 
10 // EDM include(s).
11 #include "xAODTruth/TruthVertex.h"
12 
13 // System include(s).
14 #include <iomanip>
15 #include <sstream>
16 
17 namespace xAODReader {
18 
20 
21  // Initialize the handle.
23 
24  // Return gracefully.
25  return StatusCode::SUCCESS;
26 }
27 
28 StatusCode TruthParticlePrinterAlg::execute(const EventContext& ctx) const {
29 
30  // Print a header.
32  "------------------------------------------------------------------------"
33  "-----------------------");
34  ANA_MSG_INFO(" \"" << m_key.key() << "\"");
36  "------------------------------------------------------------------------"
37  "-----------------------");
39  " uniqueID | pdgId | pt | eta | phi | e "
40  "| status | decayVtxID");
42  "------------------------------------------------------------------------"
43  "-----------------------");
44 
45  // Access the input container.
46  auto container = SG::makeHandle(m_key, ctx);
47 
48  // Print the particles one by one.
49  for (const xAOD::TruthParticle* particle : *container) {
50 
51  // Construct a string with code copied from xAODTruthReader.
52  std::ostringstream ss;
53  ss.width(9);
54  ss << HepMC::uniqueID(particle) << " | ";
55  ss.width(9);
56  ss << particle->pdgId() << " | ";
57  ss.width(9);
58  ss.precision(2);
59  ss.setf(std::ios::scientific, std::ios::floatfield);
60  ss.setf(std::ios_base::showpos);
61  ss << particle->pt() << " | ";
62  ss.width(9);
63  ss.precision(2);
64  ss << particle->eta() << " | ";
65  ss.width(9);
66  ss.precision(2);
67  ss << particle->phi() << " | ";
68  ss.width(9);
69  ss.precision(2);
70  ss << particle->e() << " | ";
71  ss.setf(std::ios::fmtflags(0), std::ios::floatfield);
72  ss.unsetf(std::ios_base::showpos);
73  ss.width(3);
74  ss << particle->status() << " | ";
75  if (particle->hasDecayVtx() &&
76  (HepMC::uniqueID(particle->decayVtx()) != HepMC::UNDEFINED_ID)) {
77  ss.width(9);
78  ss << HepMC::uniqueID(particle->decayVtx());
79  } else {
80  ss << " n/a";
81  }
82 
83  // Properly print the constructed string.
84  ANA_MSG_INFO(" " << ss.str());
85  }
86 
87  // Print a footer.
89  "------------------------------------------------------------------------"
90  "-----------------------");
91 
92  // Return gracefully.
93  return StatusCode::SUCCESS;
94 }
95 
96 } // namespace xAODReader
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
xAODReader::TruthParticlePrinterAlg::m_key
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_key
The key of the truth particle container to print.
Definition: TruthParticlePrinterAlg.h:32
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:274
xAODReader::TruthParticlePrinterAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Function executing the algorithm.
Definition: TruthParticlePrinterAlg.cxx:28
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
ANA_MSG_INFO
#define ANA_MSG_INFO(xmsg)
Macro printing info messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:290
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:116
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
HepMC::UNDEFINED_ID
constexpr int UNDEFINED_ID
Definition: MagicNumbers.h:56
TruthVertex.h
MagicNumbers.h
ReadHandle.h
Handle class for reading from StoreGate.
xAODReader::TruthParticlePrinterAlg::initialize
virtual StatusCode initialize() override
Function initialising the algorithm.
Definition: TruthParticlePrinterAlg.cxx:19
TruthParticlePrinterAlg.h
xAODReader
Definition: BTaggingReader.cxx:21