ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
DerivationFramework::TruthDecayCollectionMaker Class Reference

#include <TruthDecayCollectionMaker.h>

Inheritance diagram for DerivationFramework::TruthDecayCollectionMaker:
Collaboration diagram for DerivationFramework::TruthDecayCollectionMaker:

Public Member Functions

 TruthDecayCollectionMaker (const std::string &t, const std::string &n, const IInterface *p)
 
 ~TruthDecayCollectionMaker ()
 
StatusCode initialize ()
 
virtual StatusCode addBranches () const
 

Private Member Functions

int addTruthParticle (const EventContext &ctx, const xAOD::TruthParticle &old_part, xAOD::TruthParticleContainer *part_cont, xAOD::TruthVertexContainer *vert_cont, std::vector< int > &seen_particles, const int generations=-1) const
 
int addTruthVertex (const EventContext &, const xAOD::TruthVertex &old_vert, xAOD::TruthParticleContainer *part_cont, xAOD::TruthVertexContainer *vert_cont, std::vector< int > &seen_particles, const int generations=-1) const
 
bool id_ok (const xAOD::TruthParticle &part) const
 

Private Attributes

Gaudi::Property< std::vector< int > > m_pdgIdsToKeep {this, "PDGIDsToKeep", {}, "PDG IDs of particles to build the collection from"}
 < List of PDG IDs to build this collection from More...
 
Gaudi::Property< bool > m_keepBHadrons {this, "KeepBHadrons", false, "Keep b-hadrons (easier than by PDG ID)"}
 < Option to keep all b-hadrons (better than giving PDG IDs) More...
 
Gaudi::Property< bool > m_keepCHadrons {this, "KeepCHadrons", false, "Keep c-hadrons (easier than by PDG ID)"}
 < Option to keep all c-hadrons (better than giving PDG IDs) More...
 
Gaudi::Property< bool > m_keepBSM {this, "KeepBSM", false, "Keep BSM particles (easier than by PDG ID)"}
 < Option to keep all BSM particles (better than giving PDG IDs) More...
 
Gaudi::Property< bool > m_rejectHadronChildren {this, "RejectHadronChildren", false, "Drop hadron descendants"}
 < Option to reject hadron descendants More...
 
SG::ReadHandleKey< xAOD::TruthParticleContainerm_particlesKey {this, "ParticlesKey", "TruthParticles", "ReadHandleKey for input TruthParticleContainer"}
 
SG::WriteHandleKey< xAOD::TruthParticleContainerm_outputParticlesKey {this, "NewParticleKey", "", "WriteHandleKey for new TruthParticleContainer"}
 
SG::WriteHandleKey< xAOD::TruthVertexContainerm_outputVerticesKey {this, "NewVertexKey", "", "WriteHandleKey for new TruthVertexContainer"}
 
SG::WriteDecorHandleKey< xAOD::TruthParticleContainerm_originDecoratorKey {this, "classifierParticleOrigin", "TruthParticles.classifierParticleOrigin","Name of the decoration which records the particle origin as determined by the MCTruthClassifier"}
 
SG::WriteDecorHandleKey< xAOD::TruthParticleContainerm_typeDecoratorKey {this, "classifierParticleType", "TruthParticles.classifierParticleType","Name of the decoration which records the particle type as determined by the MCTruthClassifier"}
 
SG::WriteDecorHandleKey< xAOD::TruthParticleContainerm_outcomeDecoratorKey {this, "classifierParticleOutCome", "TruthParticles.classifierParticleOutCome","Name of the decoration which records the particle outcome as determined by the MCTruthClassifier"}
 
SG::WriteDecorHandleKey< xAOD::TruthParticleContainerm_classificationDecoratorKey {this, "Classification", "TruthParticles.Classification","Name of the decoration which records the particle outcome as determined by the MCTruthClassifier"}
 
SG::WriteDecorHandleKey< xAOD::TruthParticleContainerm_motherIDDecoratorKey {this, "motherID", "TruthParticles.motherID","Name of the decoration which records the ID of the particle's mother"}
 
SG::WriteDecorHandleKey< xAOD::TruthParticleContainerm_daughterIDDecoratorKey {this, "daughterID", "TruthParticles.daughterID","Name of the decoration which records the ID of the particle's daughter"}
 
Gaudi::Property< std::string > m_collectionName {this, "NewCollectionName", "", "New collection name stem"}
 < Output collection name stem More...
 
Gaudi::Property< int > m_generations {this, "Generations", -1, "Number of generations after the particle in question to keep (-1 for all)"}
 < Number of generations after the particle in question to keep More...
 

Detailed Description

Definition at line 26 of file TruthDecayCollectionMaker.h.

Constructor & Destructor Documentation

◆ TruthDecayCollectionMaker()

DerivationFramework::TruthDecayCollectionMaker::TruthDecayCollectionMaker ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 29 of file TruthDecayCollectionMaker.cxx.

32  : base_class(t,n,p)
33 {
34 }

◆ ~TruthDecayCollectionMaker()

DerivationFramework::TruthDecayCollectionMaker::~TruthDecayCollectionMaker ( )

Definition at line 37 of file TruthDecayCollectionMaker.cxx.

37  {
38 }

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::TruthDecayCollectionMaker::addBranches ( ) const
virtual

Definition at line 85 of file TruthDecayCollectionMaker.cxx.

86 {
87  // Event context for AthenaMT
88  const EventContext& ctx = Gaudi::Hive::currentContext();
89 
90  // Retrieve truth collections
92  if (!truthParticles.isValid()) {
93  ATH_MSG_ERROR("Couldn't retrieve TruthParticle collection with name " << m_particlesKey);
94  return StatusCode::FAILURE;
95  }
96 
97  // Create the new particle containers and WriteHandles
99  ATH_CHECK(newParticlesWriteHandle.record(std::make_unique<xAOD::TruthParticleContainer>(),
100  std::make_unique<xAOD::TruthParticleAuxContainer>()));
101  ATH_MSG_DEBUG( "Recorded new TruthParticleContainer with key: " << (m_outputParticlesKey.key()));
102  // Create the new vertex containers and WriteHandles
104  ATH_CHECK(newVerticesWriteHandle.record(std::make_unique<xAOD::TruthVertexContainer>(),
105  std::make_unique<xAOD::TruthVertexAuxContainer>()));
106  ATH_MSG_DEBUG( "Recorded new TruthVertexContainer with key: " << (m_outputVerticesKey.key()));
107 
108  // List of unique IDs for particles in our collection already. Because of the way we recurse,
109  // adding more particles as we go, there should be no need to add (or help from adding) the
110  // unique IDs of particles that we are *not* going to keep
111  std::vector<int> seen_particles;
112  // Go through that list of particles!
113  for (const auto * part : *truthParticles){
114  // If this passes my cuts, keep it
115  if (id_ok(*part)){
116  addTruthParticle( ctx, *part, newParticlesWriteHandle.ptr(), newVerticesWriteHandle.ptr(), seen_particles , m_generations );
117  }
118  } // Loop over the initial truth particle collection
119  return StatusCode::SUCCESS;
120 }

◆ addTruthParticle()

int DerivationFramework::TruthDecayCollectionMaker::addTruthParticle ( const EventContext &  ctx,
const xAOD::TruthParticle old_part,
xAOD::TruthParticleContainer part_cont,
xAOD::TruthVertexContainer vert_cont,
std::vector< int > &  seen_particles,
const int  generations = -1 
) const
private

Definition at line 122 of file TruthDecayCollectionMaker.cxx.

127  {
128  // See if we've seen it - note, could also do this with a unary function on the container itself
129  if (std::find(seen_particles.begin(),seen_particles.end(),HepMC::uniqueID(&old_part))!=seen_particles.end()){
130  for (size_t p=0;p<part_cont->size();++p){
131  // Was it a hit?
132  const xAOD::TruthParticle *theParticle = (*part_cont)[p];
133  if (HepMC::is_same_particle(theParticle,&old_part)) return p;
134  } // Look through the old container
135  } // Found it in the old container
136  // Now we have seen it
137  seen_particles.push_back(HepMC::uniqueID(&old_part));
138  // Set up decorators
145  // Make a truth particle and add it to the container
146  xAOD::TruthParticle* xTruthParticle = new xAOD::TruthParticle();
147  part_cont->push_back( xTruthParticle );
148  // Fill with numerical content
149  xTruthParticle->setPdgId(old_part.pdgId());
150  xTruthParticle->setBarcode(HepMC::barcode(&old_part)); // FIXME barcode-based
151  xTruthParticle->setStatus(old_part.status());
152  xTruthParticle->setM(old_part.m());
153  xTruthParticle->setPx(old_part.px());
154  xTruthParticle->setPy(old_part.py());
155  xTruthParticle->setPz(old_part.pz());
156  xTruthParticle->setE(old_part.e());
157  // Copy over the polarization information if it's there
158  if (old_part.polarization().valid()){
161  }
162  // Make a link to this particle
163  int my_index = part_cont->size()-1;
164  ElementLink<xAOD::TruthParticleContainer> eltp(*part_cont, my_index);
165  // Decay vertex information
166  if (old_part.hasDecayVtx()) {
167  int vert_index = addTruthVertex( ctx, *old_part.decayVtx(), part_cont, vert_cont, seen_particles, generations);
168  ElementLink<xAOD::TruthVertexContainer> eltv( *vert_cont, vert_index );
169  xTruthParticle->setDecayVtxLink( eltv );
170  (*vert_cont)[vert_index]->addIncomingParticleLink( eltp );
171  }
172  // Copy over the decorations if they are available
173  static const SG::ConstAccessor<unsigned int> classifierParticleTypeAcc("classifierParticleType");
174  static const SG::ConstAccessor<unsigned int> classifierParticleOriginAcc("classifierParticleOrigin");
175  static const SG::ConstAccessor<unsigned int> classifierParticleOutComeAcc("classifierParticleOutCome");
176  static const SG::ConstAccessor<unsigned int> ClassificationAcc("Classification");
177 
178  typeDecorator(*xTruthParticle) = classifierParticleTypeAcc.withDefault (old_part, 0);
179  originDecorator(*xTruthParticle) = classifierParticleOriginAcc.withDefault (old_part, 0);
180  outcomeDecorator(*xTruthParticle) = classifierParticleOutComeAcc.withDefault (old_part, 0);
181  classificationDecorator(*xTruthParticle) = ClassificationAcc.withDefault (old_part, 0);
182 
183  // Return a link to this particle
184  return my_index;
185 }

◆ addTruthVertex()

int DerivationFramework::TruthDecayCollectionMaker::addTruthVertex ( const EventContext &  ctx,
const xAOD::TruthVertex old_vert,
xAOD::TruthParticleContainer part_cont,
xAOD::TruthVertexContainer vert_cont,
std::vector< int > &  seen_particles,
const int  generations = -1 
) const
private

Definition at line 187 of file TruthDecayCollectionMaker.cxx.

192  {
193  // Make a new vertex and add it to the container
194  xAOD::TruthVertex* xTruthVertex = new xAOD::TruthVertex();
195  vert_cont->push_back( xTruthVertex );
196  // Get a link to this vertex -- will be used to set production vertices on all the next particles
197  int my_index = vert_cont->size()-1;
198  ElementLink<xAOD::TruthVertexContainer> eltv(*vert_cont, my_index);
199  // Set properties
200  xTruthVertex->setId(HepMC::status(old_vert));
201  xTruthVertex->setBarcode(HepMC::barcode(&old_vert)); // FIXME barcode-based
202  xTruthVertex->setX(old_vert.x());
203  xTruthVertex->setY(old_vert.y());
204  xTruthVertex->setZ(old_vert.z());
205  xTruthVertex->setT(old_vert.t());
206  // If we are done, then stop here
207  if (generations==0) return my_index;
208  // Add all the outgoing particles
209  for (size_t n=0;n<old_vert.nOutgoingParticles();++n){
210  if (!old_vert.outgoingParticle(n)) continue; // Just in case we removed some truth particles, e.g. G4 decays
211  if (m_rejectHadronChildren && old_vert.outgoingParticle(n)->isHadron()) { // Option to skip hadrons outright{
212  continue;
213  }
214  // Continue on the next generation; note that we only decrement the generation if this particle doesn't also pass our cuts
215  int part_index = addTruthParticle( ctx, *old_vert.outgoingParticle(n), part_cont, vert_cont, seen_particles,
216  generations-1+(id_ok(*old_vert.outgoingParticle(n))?1:0) );
217  ElementLink<xAOD::TruthParticleContainer> eltp( *part_cont, part_index);
218  xTruthVertex->addOutgoingParticleLink( eltp );
219  (*part_cont)[part_index]->setProdVtxLink( eltv );
220  }
221  // Return a link to this vertex
222  return my_index;
223 }

◆ id_ok()

bool DerivationFramework::TruthDecayCollectionMaker::id_ok ( const xAOD::TruthParticle part) const
private

Definition at line 225 of file TruthDecayCollectionMaker.cxx.

226 {
227  // Check list of PDG IDs to keep
228  for (int id : m_pdgIdsToKeep){
229  if (part.absPdgId()==id){
230  return true;
231  } // Found a particle of interest!
232  } // Loop over the PDG IDs we want to keep
233  // Also check functions for B/C/BSM
234  return (m_keepBHadrons && part.isBottomHadron()) ||
235 
236  (m_keepCHadrons && part.isCharmHadron()) ||
237 
238  (m_keepBSM && part.isBSM());
239 }

◆ initialize()

StatusCode DerivationFramework::TruthDecayCollectionMaker::initialize ( )

Definition at line 41 of file TruthDecayCollectionMaker.cxx.

42 {
43  ATH_MSG_VERBOSE("initialize() ...");
44 
45  // Input truth particles
47  ATH_MSG_INFO("Using " << m_particlesKey.key() << " as the input truth container key");
48 
49  // Output particle/vertex containers
50  if (m_collectionName.empty()) {
51  ATH_MSG_FATAL("No base name provided for the new truth particle/vertex containers");
52  return StatusCode::FAILURE;
53  } else {ATH_MSG_INFO("Base name for new truth particle/vertex containers: " << m_collectionName );}
54  m_outputParticlesKey = m_collectionName + "Particles";
56  ATH_MSG_INFO("New truth particles container key: " << m_outputParticlesKey.key() );
57  m_outputVerticesKey = m_collectionName + "Vertices";
58  ATH_CHECK(m_outputVerticesKey.initialize());
59  ATH_MSG_INFO("New truth vertices container key: " << m_outputVerticesKey.key() );
60 
61  if (m_pdgIdsToKeep.empty() && !m_keepBHadrons && !m_keepCHadrons && !m_keepBSM) {
62  ATH_MSG_FATAL("No PDG IDs provided, not keeping b- or c-hadrons or BSM particles -- what do you want?");
63  return StatusCode::FAILURE;
64  }
65 
66  // Decorators
67  m_originDecoratorKey = m_outputParticlesKey.key()+".classifierParticleOrigin";
69  m_typeDecoratorKey = m_outputParticlesKey.key()+".classifierParticleType";
71  m_outcomeDecoratorKey = m_outputParticlesKey.key()+".classifierParticleOutCome";
79 
80  return StatusCode::SUCCESS;
81 }

Member Data Documentation

◆ m_classificationDecoratorKey

SG::WriteDecorHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_classificationDecoratorKey {this, "Classification", "TruthParticles.Classification","Name of the decoration which records the particle outcome as determined by the MCTruthClassifier"}
private

Definition at line 56 of file TruthDecayCollectionMaker.h.

◆ m_collectionName

Gaudi::Property<std::string> DerivationFramework::TruthDecayCollectionMaker::m_collectionName {this, "NewCollectionName", "", "New collection name stem"}
private

< Output collection name stem

Definition at line 63 of file TruthDecayCollectionMaker.h.

◆ m_daughterIDDecoratorKey

SG::WriteDecorHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_daughterIDDecoratorKey {this, "daughterID", "TruthParticles.daughterID","Name of the decoration which records the ID of the particle's daughter"}
private

Definition at line 60 of file TruthDecayCollectionMaker.h.

◆ m_generations

Gaudi::Property<int> DerivationFramework::TruthDecayCollectionMaker::m_generations {this, "Generations", -1, "Number of generations after the particle in question to keep (-1 for all)"}
private

< Number of generations after the particle in question to keep

Definition at line 65 of file TruthDecayCollectionMaker.h.

◆ m_keepBHadrons

Gaudi::Property<bool> DerivationFramework::TruthDecayCollectionMaker::m_keepBHadrons {this, "KeepBHadrons", false, "Keep b-hadrons (easier than by PDG ID)"}
private

< Option to keep all b-hadrons (better than giving PDG IDs)

Definition at line 36 of file TruthDecayCollectionMaker.h.

◆ m_keepBSM

Gaudi::Property<bool> DerivationFramework::TruthDecayCollectionMaker::m_keepBSM {this, "KeepBSM", false, "Keep BSM particles (easier than by PDG ID)"}
private

< Option to keep all BSM particles (better than giving PDG IDs)

Definition at line 40 of file TruthDecayCollectionMaker.h.

◆ m_keepCHadrons

Gaudi::Property<bool> DerivationFramework::TruthDecayCollectionMaker::m_keepCHadrons {this, "KeepCHadrons", false, "Keep c-hadrons (easier than by PDG ID)"}
private

< Option to keep all c-hadrons (better than giving PDG IDs)

Definition at line 38 of file TruthDecayCollectionMaker.h.

◆ m_motherIDDecoratorKey

SG::WriteDecorHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_motherIDDecoratorKey {this, "motherID", "TruthParticles.motherID","Name of the decoration which records the ID of the particle's mother"}
private

Definition at line 58 of file TruthDecayCollectionMaker.h.

◆ m_originDecoratorKey

SG::WriteDecorHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_originDecoratorKey {this, "classifierParticleOrigin", "TruthParticles.classifierParticleOrigin","Name of the decoration which records the particle origin as determined by the MCTruthClassifier"}
private

Definition at line 50 of file TruthDecayCollectionMaker.h.

◆ m_outcomeDecoratorKey

SG::WriteDecorHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_outcomeDecoratorKey {this, "classifierParticleOutCome", "TruthParticles.classifierParticleOutCome","Name of the decoration which records the particle outcome as determined by the MCTruthClassifier"}
private

Definition at line 54 of file TruthDecayCollectionMaker.h.

◆ m_outputParticlesKey

SG::WriteHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_outputParticlesKey {this, "NewParticleKey", "", "WriteHandleKey for new TruthParticleContainer"}
private

Definition at line 46 of file TruthDecayCollectionMaker.h.

◆ m_outputVerticesKey

SG::WriteHandleKey<xAOD::TruthVertexContainer> DerivationFramework::TruthDecayCollectionMaker::m_outputVerticesKey {this, "NewVertexKey", "", "WriteHandleKey for new TruthVertexContainer"}
private

Definition at line 48 of file TruthDecayCollectionMaker.h.

◆ m_particlesKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_particlesKey {this, "ParticlesKey", "TruthParticles", "ReadHandleKey for input TruthParticleContainer"}
private

Definition at line 44 of file TruthDecayCollectionMaker.h.

◆ m_pdgIdsToKeep

Gaudi::Property<std::vector<int> > DerivationFramework::TruthDecayCollectionMaker::m_pdgIdsToKeep {this, "PDGIDsToKeep", {}, "PDG IDs of particles to build the collection from"}
private

< List of PDG IDs to build this collection from

Definition at line 34 of file TruthDecayCollectionMaker.h.

◆ m_rejectHadronChildren

Gaudi::Property<bool> DerivationFramework::TruthDecayCollectionMaker::m_rejectHadronChildren {this, "RejectHadronChildren", false, "Drop hadron descendants"}
private

< Option to reject hadron descendants

Definition at line 42 of file TruthDecayCollectionMaker.h.

◆ m_typeDecoratorKey

SG::WriteDecorHandleKey<xAOD::TruthParticleContainer> DerivationFramework::TruthDecayCollectionMaker::m_typeDecoratorKey {this, "classifierParticleType", "TruthParticles.classifierParticleType","Name of the decoration which records the particle type as determined by the MCTruthClassifier"}
private

Definition at line 52 of file TruthDecayCollectionMaker.h.


The documentation for this class was generated from the following files:
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
xAOD::TruthVertex_v1::nOutgoingParticles
size_t nOutgoingParticles() const
Get the number of outgoing particles.
xAOD::TruthParticle_v1::setStatus
void setStatus(int value)
Set status code.
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DerivationFramework::TruthDecayCollectionMaker::m_rejectHadronChildren
Gaudi::Property< bool > m_rejectHadronChildren
< Option to reject hadron descendants
Definition: TruthDecayCollectionMaker.h:43
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::TruthParticle_v1::pz
float pz() const
The z component of the particle's momentum.
SG::ReadHandle< xAOD::TruthParticleContainer >
xAOD::TruthParticle_v1::setE
void setE(float value)
Set the energy of the particle.
Definition: TruthParticle_v1.cxx:235
DerivationFramework::TruthDecayCollectionMaker::m_outputParticlesKey
SG::WriteHandleKey< xAOD::TruthParticleContainer > m_outputParticlesKey
Definition: TruthDecayCollectionMaker.h:47
xAOD::TruthParticle_v1::setBarcode
void setBarcode(int value)
Set barcode.
xAOD::TruthParticle_v1::setPolarizationParameter
bool setPolarizationParameter(float value, PolParam parameter)
Set method for polarization parameter values.
Definition: TruthParticle_v1.cxx:353
xAOD::TruthParticle_v1::Polarization::valid
bool valid() const
Check if the stored values are valid.
Definition: TruthParticle_v1.h:379
DerivationFramework::TruthDecayCollectionMaker::m_keepBSM
Gaudi::Property< bool > m_keepBSM
< Option to keep all BSM particles (better than giving PDG IDs)
Definition: TruthDecayCollectionMaker.h:41
xAOD::TruthParticle_v1::polarization
Polarization polarization() const
Retrieve a full Polarization with a single call.
Definition: TruthParticle_v1.cxx:385
xAOD::TruthParticle_v1::px
float px() const
The x component of the particle's momentum.
xAOD::TruthVertex_v1::setT
void setT(float value)
Set the vertex time.
xAOD::TruthParticle_v1::setPx
void setPx(float value)
Set the x component of the particle's momentum.
DerivationFramework::TruthDecayCollectionMaker::m_keepBHadrons
Gaudi::Property< bool > m_keepBHadrons
< Option to keep all b-hadrons (better than giving PDG IDs)
Definition: TruthDecayCollectionMaker.h:37
xAOD::TruthParticle_v1::py
float py() const
The y component of the particle's momentum.
SG::ConstAccessor< unsigned int >
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::TruthVertex_v1::addOutgoingParticleLink
void addOutgoingParticleLink(const TPLink_t &link)
Add one outgoing particle.
Definition: TruthVertex_v1.cxx:137
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
xAOD::TruthVertex_v1::setY
void setY(float value)
Set the y displacement of the vertex.
HepMC::is_same_particle
bool is_same_particle(const T1 &p1, const T2 &p2)
Method to establish if two particles in the GenEvent actually represent the same particle.
Definition: MagicNumbers.h:367
xAOD::TruthVertex_v1::y
float y() const
Vertex y displacement.
HepMC::BarcodeBased::generations
int generations(const T &p)
Method to return how many interactions a particle has undergone during simulation (only to be used in...
Definition: MagicNumbers.h:212
xAOD::TruthVertex_v1::t
float t() const
Vertex time.
xAOD::TruthParticle_v1::hasDecayVtx
bool hasDecayVtx() const
Check for a decay vertex on this particle.
DerivationFramework::TruthDecayCollectionMaker::m_keepCHadrons
Gaudi::Property< bool > m_keepCHadrons
< Option to keep all c-hadrons (better than giving PDG IDs)
Definition: TruthDecayCollectionMaker.h:39
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
xAOD::TruthParticle_v1::setM
void setM(float value)
Also store the mass.
Definition: TruthParticle_v1.cxx:241
DerivationFramework::TruthDecayCollectionMaker::addTruthVertex
int addTruthVertex(const EventContext &, const xAOD::TruthVertex &old_vert, xAOD::TruthParticleContainer *part_cont, xAOD::TruthVertexContainer *vert_cont, std::vector< int > &seen_particles, const int generations=-1) const
Definition: TruthDecayCollectionMaker.cxx:187
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::TruthParticle_v1::e
virtual double e() const override final
The total energy of the particle.
DerivationFramework::TruthDecayCollectionMaker::addTruthParticle
int addTruthParticle(const EventContext &ctx, const xAOD::TruthParticle &old_part, xAOD::TruthParticleContainer *part_cont, xAOD::TruthVertexContainer *vert_cont, std::vector< int > &seen_particles, const int generations=-1) const
Definition: TruthDecayCollectionMaker.cxx:122
DerivationFramework::TruthDecayCollectionMaker::m_collectionName
Gaudi::Property< std::string > m_collectionName
< Output collection name stem
Definition: TruthDecayCollectionMaker.h:64
beamspotman.n
n
Definition: beamspotman.py:731
DerivationFramework::TruthDecayCollectionMaker::m_typeDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_typeDecoratorKey
Definition: TruthDecayCollectionMaker.h:53
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
DerivationFramework::TruthDecayCollectionMaker::m_motherIDDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_motherIDDecoratorKey
Definition: TruthDecayCollectionMaker.h:59
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition: Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:116
xAOD::TruthParticle_v1::setPy
void setPy(float value)
Set the y component of the particle's momentum.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::TruthDecayCollectionMaker::m_outputVerticesKey
SG::WriteHandleKey< xAOD::TruthVertexContainer > m_outputVerticesKey
Definition: TruthDecayCollectionMaker.h:49
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
xAOD::TruthVertex
TruthVertex_v1 TruthVertex
Typedef to implementation.
Definition: TruthVertex.h:15
DerivationFramework::TruthDecayCollectionMaker::m_classificationDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_classificationDecoratorKey
Definition: TruthDecayCollectionMaker.h:57
xAOD::TruthParticle_v1::decayVtx
const TruthVertex_v1 * decayVtx() const
The decay vertex of this particle.
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:37
xAOD::TruthParticle_v1::setPdgId
void setPdgId(int pid)
Set PDG ID code.
DerivationFramework::TruthDecayCollectionMaker::m_particlesKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_particlesKey
Definition: TruthDecayCollectionMaker.h:45
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
DerivationFramework::TruthDecayCollectionMaker::id_ok
bool id_ok(const xAOD::TruthParticle &part) const
Definition: TruthDecayCollectionMaker.cxx:225
xAOD::TruthVertex_v1::setId
void setId(int value)
Obsolete function Set vertex ID code HepMC2 id == HepMC3 status, i.e.
xAOD::TruthParticle_v1::polarizationParameter
bool polarizationParameter(float &value, PolParam parameter) const
Accessor for polarization parameters.
Definition: TruthParticle_v1.cxx:330
xAOD::TruthVertex_v1::x
float x() const
Vertex x displacement.
xAOD::TruthVertex_v1::setZ
void setZ(float value)
Set the vertex's longitudinal distance from the origin.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
xAOD::TruthParticle_v1::status
int status() const
Status code.
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
xAOD::TruthVertex_v1::setBarcode
void setBarcode(int value)
Set barcode.
xAOD::TruthParticle_v1::polarizationTheta
@ polarizationTheta
Polarization in ( )
Definition: TruthParticle_v1.h:323
DerivationFramework::TruthDecayCollectionMaker::m_generations
Gaudi::Property< int > m_generations
< Number of generations after the particle in question to keep
Definition: TruthDecayCollectionMaker.h:66
DerivationFramework::TruthDecayCollectionMaker::m_outcomeDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_outcomeDecoratorKey
Definition: TruthDecayCollectionMaker.h:55
xAOD::TruthParticle_v1::polarizationPhi
@ polarizationPhi
Polarization in ( )
Definition: TruthParticle_v1.h:322
xAOD::TruthVertex_v1::z
float z() const
Vertex longitudinal distance along the beam line form the origin.
xAOD::TruthParticle_v1::setPz
void setPz(float value)
Set the z component of the particle's momentum.
xAOD::TruthParticle_v1::setDecayVtxLink
void setDecayVtxLink(const ElementLink< TruthVertexContainer > &link)
Set the decay vertex of the particle.
DerivationFramework::TruthDecayCollectionMaker::m_pdgIdsToKeep
Gaudi::Property< std::vector< int > > m_pdgIdsToKeep
< List of PDG IDs to build this collection from
Definition: TruthDecayCollectionMaker.h:35
DerivationFramework::TruthDecayCollectionMaker::m_originDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_originDecoratorKey
Definition: TruthDecayCollectionMaker.h:51
DerivationFramework::TruthDecayCollectionMaker::m_daughterIDDecoratorKey
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer > m_daughterIDDecoratorKey
Definition: TruthDecayCollectionMaker.h:61
HepMC::status
int status(const T &p)
Definition: MagicNumbers.h:138
xAOD::TruthParticle_v1::pdgId
int pdgId() const
PDG ID code.
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
xAOD::TruthVertex_v1::outgoingParticle
const TruthParticle_v1 * outgoingParticle(size_t index) const
Get one of the outgoing particles.
Definition: TruthVertex_v1.cxx:119
xAOD::TruthParticle_v1::m
virtual double m() const override final
The mass of the particle.
xAOD::TruthParticle_v1::isHadron
bool isHadron() const
Whether the particle is a hadron.
xAOD::TruthVertex_v1::setX
void setX(float value)
Set the x displacement of the vertex.