ATLAS Offline Software
Loading...
Searching...
No Matches
xAOD::TruthParticle_v1 Class Reference

Class describing a truth particle in the MC record. More...

#include <TruthParticle_v1.h>

Inheritance diagram for xAOD::TruthParticle_v1:
Collaboration diagram for xAOD::TruthParticle_v1:

Classes

struct  Polarization
 Single container for full polarization information. More...

Public Member Functions

 TruthParticle_v1 ()
 Default constructor.
void toPersistent ()
 Function making sure that the object is ready for persistification.
Functions identifying the particle in the MC record
void setPdgId (int pid)
 Set PDG ID code.
int pdgId () const
 PDG ID code.
int pdg_id () const
 PDG ID code.
int absPdgId () const
 Absolute PDG ID code (often useful).
int uid () const
 Unique ID.
void setUid (int value)
 Set unique ID.
int status () const
 Status code.
void setStatus (int value)
 Set status code.
Links to the production and decay vertices
bool hasProdVtx () const
 Check for a production vertex on this particle.
const TruthVertex_v1prodVtx () const
 The production vertex of this particle.
const TruthVertex_v1production_vertex () const
 The production vertex of this particle.
const ElementLink< TruthVertexContainer > & prodVtxLink () const
 The production vertex link of this particle.
void setProdVtxLink (const ElementLink< TruthVertexContainer > &link)
 Set the production vertex of the particle.
bool hasDecayVtx () const
 Check for a decay vertex on this particle.
const TruthVertex_v1decayVtx () const
 The decay vertex of this particle.
const TruthVertex_v1end_vertex () const
 The decay vertex of this particle.
const ElementLink< TruthVertexContainer > & decayVtxLink () const
 The decay vertex link of this particle.
void setDecayVtxLink (const ElementLink< TruthVertexContainer > &link)
 Set the decay vertex of the particle.
Particle connection / origin / decay information
size_t nParents () const
 Number of parents of this particle.
const TruthParticle_v1parent (size_t i) const
 Retrieve the i-th mother (TruthParticle) of this TruthParticle.
const TruthParticle_v1parent () const
size_t nChildren () const
 Number of children of this particle.
const TruthParticle_v1child (size_t i) const
 Retrieve the i-th mother (TruthParticle) of this TruthParticle.
4-momentum accessors specific to truth particles
double abseta () const
 The absolute pseudorapidity ( \(|\eta|\)) of the particle.
double absrapidity () const
 The true absolute rapidity ( \(|y|\)) of the particle.
float px () const
 The x component of the particle's momentum.
void setPx (float value)
 Set the x component of the particle's momentum.
float py () const
 The y component of the particle's momentum.
void setPy (float value)
 Set the y component of the particle's momentum.
float pz () const
 The z component of the particle's momentum.
void setPz (float value)
 Set the z component of the particle's momentum.
void setE (float value)
 Set the energy of the particle.
void setM (float value)
 Also store the mass.
Particle species information

Just convenience methods here, since they all just forward to the utility functions operating on the PDG particle ID code.

double charge () const
 Physical charge.
int threeCharge () const
 3 x the physical charge (so it can be an int for quarks)
bool isCharged () const
 Whether the particle is electrically charged.
bool isNeutral () const
 Whether the particle is electrically neutral.
bool isPhoton () const
 Whether the particle is a photon.
bool isLepton () const
 Whether the particle is a lepton.
bool isChLepton () const
 Whether the particle is a charged lepton.
bool isElectron () const
 Whether the particle is an electron (or positron).
bool isMuon () const
 Whether the particle is a muon (or antimuon).
bool isTau () const
 Whether the particle is a tau (or antitau).
bool isNeutrino () const
 Whether the particle is a neutrino (or antineutrino).
bool isHadron () const
 Whether the particle is a hadron.
bool isMeson () const
 Whether the particle is a meson.
bool isBaryon () const
 Whether the particle is a baryon.
bool hasStrange () const
 Whether the particle contains a strange quark (or antiquark).
bool hasCharm () const
 Whether the particle contains a charm quark (or antiquark).
bool hasBottom () const
 Whether the particle contains a bottom quark (or antiquark).
bool isLightMeson () const
 Determine if the PID is that of a light flavour (not b or c) meson.
bool isLightBaryon () const
 Determine if the PID is that of a light flavour (not b or c) baryon.
bool isLightHadron () const
 Determine if the PID is that of a light flavour (not b or c) hadron.
bool isHeavyMeson () const
 Determine if the PID is that of a heavy flavour (b or c) meson.
bool isHeavyBaryon () const
 Determine if the PID is that of a heavy flavour (b or c) baryon.
bool isHeavyHadron () const
 Determine if the PID is that of a heavy flavour (b or c) hadron.
bool isBottomMeson () const
 Determine if the PID is that of a b-meson.
bool isBottomBaryon () const
 Determine if the PID is that of a b-baryon.
bool isBottomHadron () const
 Determine if the PID is that of a b-hadron.
bool isCharmMeson () const
 Determine if the PID is that of a c-meson.
bool isCharmBaryon () const
 Determine if the PID is that of a c-baryon.
bool isCharmHadron () const
 Determine if the PID is that of a c-hadron.
bool isStrangeMeson () const
 Determine if the PID is that of a strange meson.
bool isStrangeBaryon () const
 Determine if the PID is that of a strange baryon.
bool isStrangeHadron () const
 Determine if the PID is that of a strange hadron.
bool isQuark () const
 Check if this particle is a quark.
bool isParton () const
 Check if this particle is a parton.
bool isTop () const
 Check if this particle is a top quark.
bool isW () const
 Check if this particle is a W boson.
bool isZ () const
 Check if this particle is a Z boson.
bool isHiggs () const
 Check if this particle is a Higgs boson.
bool isResonance () const
 Check if this particle is a resonant state.
bool isGenSpecific () const
 Check if this is a generator specific (non-physical) particle.
bool isBSM () const
 Check if this is a BSM particle.
bool isGenStable () const
 Check if this is generator stable particle.
bool isStable () const
 Check if this is a stable particle (generator or simulation produced).
bool isSimulationParticle () const
 Check if this particle was produced during the simulation.
Functions for getting and setting user properties
template<class T>
XAOD_AUXDATA_DEPRECATED T & auxdata (const std::string &name, const std::string &clsname="")
 Fetch an aux data variable, as a non-const reference.
template<class T>
XAOD_AUXDATA_DEPRECATED const T & auxdata (const std::string &name, const std::string &clsname="") const
 Fetch an aux data variable, as a const reference.
template<class T>
XAOD_AUXDATA_DEPRECATED bool isAvailable (const std::string &name, const std::string &clsname="") const
 Check if a user property is available for reading or not.
template<class T>
XAOD_AUXDATA_DEPRECATED bool isAvailableWritable (const std::string &name, const std::string &clsname="") const
 Check if a user property is available for writing or not.

Polarization properties (optional)

enum  PolParam { polarizationPhi = 0 , polarizationTheta = 1 }
 Polarization parameter types. More...
bool polarizationParameter (float &value, PolParam parameter) const
 Accessor for polarization parameters.
bool setPolarizationParameter (float value, PolParam parameter)
 Set method for polarization parameter values.
float polarizationParameter (PolParam parameter) const
 Convenience accessor for a polariozation parameter.
Polarization polarization () const
 Retrieve a full Polarization with a single call.

Functions implementing the xAOD::IParticle interface

Todo
Add mappings of e.g. isPrimary, isDecayed, isPrompt, isFromDecay, hasHadronicDecay, hasLeptonicDecay, isHadronic/LeptonicTau ...
Todo
Add isFirstWith, isLastWith
typedef IParticle::FourMom_t FourMom_t
 Definition of the 4-momentum type.
typedef ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > GenVecFourMom_t
 Base 4 Momentum type for TruthParticle.
virtual double pt () const override final
 The transverse momentum ( \(p_T\)) of the particle.
virtual double eta () const override final
 The pseudorapidity ( \(\eta\)) of the particle.
virtual double phi () const override final
 The azimuthal angle ( \(\phi\)) of the particle.
virtual double m () const override final
 The mass of the particle.
virtual double e () const override final
 The total energy of the particle.
virtual double rapidity () const override final
 The true rapidity ( \(y\)) of the particle.
virtual FourMom_t p4 () const override final
 The full 4-momentum of the particle.
GenVecFourMom_t genvecP4 () const
 The full 4-momentum of the particle : GenVector form.
virtual Type::ObjectType type () const override final
 The type of the object as a simple enumeration.

Detailed Description

Class describing a truth particle in the MC record.

The xAOD truth record mimicks the structure of HepMC. Truth particles and truth vertices form a decay tree. Where each truth particle is connected to a single production and decay vertex. And each vertex is connected to one or more incoming, and one or more outgoing particles.

Author
Andy Buckley Andy..nosp@m.Buck.nosp@m.ley@c.nosp@m.ern..nosp@m.ch
Jovan Mitrevski Jovan.nosp@m..Mit.nosp@m.revsk.nosp@m.i@ce.nosp@m.rn.ch

Definition at line 37 of file TruthParticle_v1.h.

Member Typedef Documentation

◆ FourMom_t

Definition of the 4-momentum type.

Definition at line 147 of file TruthParticle_v1.h.

◆ GenVecFourMom_t

typedef ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > xAOD::TruthParticle_v1::GenVecFourMom_t

Base 4 Momentum type for TruthParticle.

Definition at line 157 of file TruthParticle_v1.h.

Member Enumeration Documentation

◆ PolParam

Polarization parameter types.

Enumerator
polarizationPhi 

Polarization in ( \(\phi\)).

polarizationTheta 

Polarization in ( \(\theta\)).

Definition at line 321 of file TruthParticle_v1.h.

321 {
322 polarizationPhi = 0,
324 };
@ polarizationPhi
Polarization in ( ).
@ polarizationTheta
Polarization in ( ).

Constructor & Destructor Documentation

◆ TruthParticle_v1()

xAOD::TruthParticle_v1::TruthParticle_v1 ( )

Default constructor.

Definition at line 31 of file TruthParticle_v1.cxx.

32 : IParticle() {
33
34 }
IParticle()=default

Member Function Documentation

◆ abseta()

double xAOD::TruthParticle_v1::abseta ( ) const

The absolute pseudorapidity ( \(|\eta|\)) of the particle.

Todo
Remove this when/if supported in xAOD::IParticle

Definition at line 213 of file TruthParticle_v1.cxx.

213 {
214
215 return std::abs( eta() );
216 }
virtual double eta() const override final
The pseudorapidity ( ) of the particle.

◆ absPdgId()

int xAOD::TruthParticle_v1::absPdgId ( ) const

Absolute PDG ID code (often useful).

◆ absrapidity()

double xAOD::TruthParticle_v1::absrapidity ( ) const

The true absolute rapidity ( \(|y|\)) of the particle.

Todo
Remove this when/if supported in xAOD::IParticle

Definition at line 218 of file TruthParticle_v1.cxx.

218 {
219
220 return std::abs( rapidity() );
221 }
virtual double rapidity() const override final
The true rapidity ( ) of the particle.

◆ auxdata() [1/2]

template<class T>
XAOD_AUXDATA_DEPRECATED T & xAOD::IParticle::auxdata ( const std::string & name,
const std::string & clsname = "" )
inlineinherited

Fetch an aux data variable, as a non-const reference.

This function provides an easy way for users to decorate objects with auxiliary data.

Take note that this function is slow. Should not be used inside time-critical code.

Parameters
nameName of the aux variable
clsnameThe name of the associated class. May be blank
Returns
A modifiable reference to the decoration

Definition at line 98 of file Event/xAOD/xAODBase/xAODBase/IParticle.h.

99 {
100
101 return SG::Accessor< T >(name, clsname)(*this);
102 }
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:573

◆ auxdata() [2/2]

template<class T>
XAOD_AUXDATA_DEPRECATED const T & xAOD::IParticle::auxdata ( const std::string & name,
const std::string & clsname = "" ) const
inlineinherited

Fetch an aux data variable, as a const reference.

This function provides an easy way for users to retrieve auxiliary decorations from an object.

Take note that this function is slow. Should not be used inside time-critical code.

Parameters
nameName of the aux variable
clsnameThe name of the associated class. May be blank
Returns
A constant reference to the decoration

Definition at line 118 of file Event/xAOD/xAODBase/xAODBase/IParticle.h.

119 {
120
121 return SG::ConstAccessor< T >( name, clsname )( *this );
122 }
SG::ConstAccessor< T, ALLOC > ConstAccessor
Definition AuxElement.h:570

◆ charge()

double xAOD::TruthParticle_v1::charge ( ) const

Physical charge.

◆ child()

const TruthParticle_v1 * xAOD::TruthParticle_v1::child ( size_t i) const

Retrieve the i-th mother (TruthParticle) of this TruthParticle.

Definition at line 144 of file TruthParticle_v1.cxx.

144 {
145 if (hasDecayVtx() && decayVtx()->nOutgoingParticles()>0){
146 return decayVtx()->outgoingParticle( i );
147 } else if ( acc_childLinks.isAvailable( *this ) && i<acc_childLinks( *this ).size() ) {
148 return acc_childLinks( *this )[i].isValid() ? *(acc_childLinks( *this )[i]) : nullptr;
149 }
150 return nullptr;
151 }
XAOD_AUXDATA_DEPRECATED bool isAvailable(const std::string &name, const std::string &clsname="") const
Check if a user property is available for reading or not.
const TruthVertex_v1 * decayVtx() const
The decay vertex of this particle.
bool hasDecayVtx() const
Check for a decay vertex on this particle.
const TruthParticle_v1 * outgoingParticle(size_t index) const
Get one of the outgoing particles.
static AUXSTORE_OBJECT_SETTER_AND_GETTER(TruthParticle_v1, ElementLink< TruthVertexContainer >, prodVtxLink, setProdVtxLink) bool TruthParticle_v1 const SG::AuxElement::ConstAccessor< std::vector< ElementLink< xAOD::TruthParticleContainer > > > acc_childLinks("childLinks")

◆ decayVtx()

const TruthVertex_v1 * xAOD::TruthParticle_v1::decayVtx ( ) const

The decay vertex of this particle.

◆ decayVtxLink()

const ElementLink< TruthVertexContainer > & xAOD::TruthParticle_v1::decayVtxLink ( ) const

The decay vertex link of this particle.

◆ e()

virtual double xAOD::TruthParticle_v1::e ( ) const
finaloverridevirtual

The total energy of the particle.

Implements xAOD::IParticle.

◆ end_vertex()

const TruthVertex_v1 * xAOD::TruthParticle_v1::end_vertex ( ) const
inline

The decay vertex of this particle.

Definition at line 90 of file TruthParticle_v1.h.

90{ return decayVtx();}

◆ eta()

double xAOD::TruthParticle_v1::eta ( ) const
finaloverridevirtual

The pseudorapidity ( \(\eta\)) of the particle.

Implements xAOD::IParticle.

Definition at line 169 of file TruthParticle_v1.cxx.

169 {
170
171 // Calculate the pseudo-rapidity using TLorentzVector.
172 // Could do something more lightweight later on.
173 return genvecP4().Eta();
174 }
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : GenVector form.

◆ genvecP4()

TruthParticle_v1::GenVecFourMom_t xAOD::TruthParticle_v1::genvecP4 ( ) const

The full 4-momentum of the particle : GenVector form.

Definition at line 196 of file TruthParticle_v1.cxx.

196 {
197 return GenVecFourMom_t(px(), py(), pz(), e() );
198 }
float px() const
The x component of the particle's momentum.
virtual double e() const override final
The total energy of the particle.
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > GenVecFourMom_t
Base 4 Momentum type for TruthParticle.
float py() const
The y component of the particle's momentum.
float pz() const
The z component of the particle's momentum.

◆ hasBottom()

bool xAOD::TruthParticle_v1::hasBottom ( ) const

Whether the particle contains a bottom quark (or antiquark).

◆ hasCharm()

bool xAOD::TruthParticle_v1::hasCharm ( ) const

Whether the particle contains a charm quark (or antiquark).

◆ hasDecayVtx()

bool xAOD::TruthParticle_v1::hasDecayVtx ( ) const

Check for a decay vertex on this particle.

◆ hasProdVtx()

bool xAOD::TruthParticle_v1::hasProdVtx ( ) const

Check for a production vertex on this particle.

Definition at line 69 of file TruthParticle_v1.cxx.

69 {
70
71 return ( acc_prodVtxLink.isAvailable( *this ) &&
72 acc_prodVtxLink( *this ).isValid() );
73 }

◆ hasStrange()

bool xAOD::TruthParticle_v1::hasStrange ( ) const

Whether the particle contains a strange quark (or antiquark).

◆ isAvailable()

template<class T>
XAOD_AUXDATA_DEPRECATED bool xAOD::IParticle::isAvailable ( const std::string & name,
const std::string & clsname = "" ) const
inlineinherited

Check if a user property is available for reading or not.

This function should be used to check if a user property which may or may not exist, is set on the object.

Parameters
nameName of the auxiliary variable
clsnameThe name of the associated class. May be blank
Returns
Whether the decoration exists or not

Definition at line 135 of file Event/xAOD/xAODBase/xAODBase/IParticle.h.

136 {
137
138 return SG::ConstAccessor< T >(name, clsname).isAvailable(*this);
139 }
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.

◆ isAvailableWritable()

template<class T>
XAOD_AUXDATA_DEPRECATED bool xAOD::IParticle::isAvailableWritable ( const std::string & name,
const std::string & clsname = "" ) const
inlineinherited

Check if a user property is available for writing or not.

This function can be used to check whether it will be possible to set a user property on the object.

Parameters
nameName of the auxiliary variable
clsnameThe name of the associated class. May be blank
Returns
Whether the decoration is possible to set

Definition at line 152 of file Event/xAOD/xAODBase/xAODBase/IParticle.h.

153 {
154
155 return SG::Accessor< T >(name, clsname).isAvailableWritable(*this);
156 }
bool isAvailableWritable(ELT &e) const
Test to see if this variable exists in the store and is writable.

◆ isBaryon()

bool xAOD::TruthParticle_v1::isBaryon ( ) const

Whether the particle is a baryon.

◆ isBottomBaryon()

bool xAOD::TruthParticle_v1::isBottomBaryon ( ) const

Determine if the PID is that of a b-baryon.

◆ isBottomHadron()

bool xAOD::TruthParticle_v1::isBottomHadron ( ) const

Determine if the PID is that of a b-hadron.

◆ isBottomMeson()

bool xAOD::TruthParticle_v1::isBottomMeson ( ) const

Determine if the PID is that of a b-meson.

◆ isBSM()

bool xAOD::TruthParticle_v1::isBSM ( ) const

Check if this is a BSM particle.

◆ isCharged()

bool xAOD::TruthParticle_v1::isCharged ( ) const

Whether the particle is electrically charged.

◆ isCharmBaryon()

bool xAOD::TruthParticle_v1::isCharmBaryon ( ) const

Determine if the PID is that of a c-baryon.

Specifically, the heaviest quark is a c: a baryon containing a b & c is a b-baryon and NOT a c-baryon. To test for the simpler case, just use a combination of hasCharm() and isBaryon().

◆ isCharmHadron()

bool xAOD::TruthParticle_v1::isCharmHadron ( ) const

Determine if the PID is that of a c-hadron.

◆ isCharmMeson()

bool xAOD::TruthParticle_v1::isCharmMeson ( ) const

Determine if the PID is that of a c-meson.

Specifically, the heaviest quark is a c: a B_c is a b-meson and NOT a c-meson. Charmonia (closed charm) are counted as c-mesons here.

◆ isChLepton()

bool xAOD::TruthParticle_v1::isChLepton ( ) const

Whether the particle is a charged lepton.

◆ isElectron()

bool xAOD::TruthParticle_v1::isElectron ( ) const

Whether the particle is an electron (or positron).

◆ isGenSpecific()

bool xAOD::TruthParticle_v1::isGenSpecific ( ) const

Check if this is a generator specific (non-physical) particle.

◆ isGenStable()

bool xAOD::TruthParticle_v1::isGenStable ( ) const

Check if this is generator stable particle.

Definition at line 311 of file TruthParticle_v1.cxx.

311{ return MC::isGenStable(this); };
bool isGenStable(const T &p)
Determine if the particle is stable at the generator (not det-sim) level,.

◆ isHadron()

bool xAOD::TruthParticle_v1::isHadron ( ) const

Whether the particle is a hadron.

◆ isHeavyBaryon()

bool xAOD::TruthParticle_v1::isHeavyBaryon ( ) const

Determine if the PID is that of a heavy flavour (b or c) baryon.

◆ isHeavyHadron()

bool xAOD::TruthParticle_v1::isHeavyHadron ( ) const

Determine if the PID is that of a heavy flavour (b or c) hadron.

◆ isHeavyMeson()

bool xAOD::TruthParticle_v1::isHeavyMeson ( ) const

Determine if the PID is that of a heavy flavour (b or c) meson.

◆ isHiggs()

bool xAOD::TruthParticle_v1::isHiggs ( ) const

Check if this particle is a Higgs boson.

◆ isLepton()

bool xAOD::TruthParticle_v1::isLepton ( ) const

Whether the particle is a lepton.

◆ isLightBaryon()

bool xAOD::TruthParticle_v1::isLightBaryon ( ) const

Determine if the PID is that of a light flavour (not b or c) baryon.

◆ isLightHadron()

bool xAOD::TruthParticle_v1::isLightHadron ( ) const

Determine if the PID is that of a light flavour (not b or c) hadron.

◆ isLightMeson()

bool xAOD::TruthParticle_v1::isLightMeson ( ) const

Determine if the PID is that of a light flavour (not b or c) meson.

◆ isMeson()

bool xAOD::TruthParticle_v1::isMeson ( ) const

Whether the particle is a meson.

◆ isMuon()

bool xAOD::TruthParticle_v1::isMuon ( ) const

Whether the particle is a muon (or antimuon).

◆ isNeutral()

bool xAOD::TruthParticle_v1::isNeutral ( ) const

Whether the particle is electrically neutral.

◆ isNeutrino()

bool xAOD::TruthParticle_v1::isNeutrino ( ) const

Whether the particle is a neutrino (or antineutrino).

◆ isParton()

bool xAOD::TruthParticle_v1::isParton ( ) const

Check if this particle is a parton.

◆ isPhoton()

bool xAOD::TruthParticle_v1::isPhoton ( ) const

Whether the particle is a photon.

◆ isQuark()

bool xAOD::TruthParticle_v1::isQuark ( ) const

Check if this particle is a quark.

◆ isResonance()

bool xAOD::TruthParticle_v1::isResonance ( ) const

Check if this particle is a resonant state.

◆ isSimulationParticle()

bool xAOD::TruthParticle_v1::isSimulationParticle ( ) const

Check if this particle was produced during the simulation.

Definition at line 313 of file TruthParticle_v1.cxx.

313{ return HepMC::is_simulation_particle(this); };
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...

◆ isStable()

bool xAOD::TruthParticle_v1::isStable ( ) const

Check if this is a stable particle (generator or simulation produced).

Definition at line 312 of file TruthParticle_v1.cxx.

312{ return MC::isStable(this); };
bool isStable(const T &p)
Identify if the particle is stable, i.e. has not decayed.

◆ isStrangeBaryon()

bool xAOD::TruthParticle_v1::isStrangeBaryon ( ) const

Determine if the PID is that of a strange baryon.

◆ isStrangeHadron()

bool xAOD::TruthParticle_v1::isStrangeHadron ( ) const

Determine if the PID is that of a strange hadron.

◆ isStrangeMeson()

bool xAOD::TruthParticle_v1::isStrangeMeson ( ) const

Determine if the PID is that of a strange meson.

◆ isTau()

bool xAOD::TruthParticle_v1::isTau ( ) const

Whether the particle is a tau (or antitau).

◆ isTop()

bool xAOD::TruthParticle_v1::isTop ( ) const

Check if this particle is a top quark.

◆ isW()

bool xAOD::TruthParticle_v1::isW ( ) const

Check if this particle is a W boson.

◆ isZ()

bool xAOD::TruthParticle_v1::isZ ( ) const

Check if this particle is a Z boson.

◆ m()

virtual double xAOD::TruthParticle_v1::m ( ) const
finaloverridevirtual

The mass of the particle.

Note, not necessarily = \(E^2-p^2\) if not on mass shell.

Implements xAOD::IParticle.

◆ nChildren()

size_t xAOD::TruthParticle_v1::nChildren ( ) const

Number of children of this particle.

Definition at line 135 of file TruthParticle_v1.cxx.

135 {
136 if (hasDecayVtx() && decayVtx()->nOutgoingParticles()>0){
137 return decayVtx()->nOutgoingParticles();
138 } else if ( acc_childLinks.isAvailable( *this ) ) {
139 return acc_childLinks( *this ).size();
140 }
141 return 0;
142 }
size_t nOutgoingParticles() const
Get the number of outgoing particles.

◆ nParents()

size_t xAOD::TruthParticle_v1::nParents ( ) const

Number of parents of this particle.

Definition at line 117 of file TruthParticle_v1.cxx.

117 {
118 if (hasProdVtx() && prodVtx()->nIncomingParticles()>0){
119 return prodVtx()->nIncomingParticles();
120 } else if ( acc_parentLinks.isAvailable( *this ) ) {
121 return acc_parentLinks( *this ).size();
122 }
123 return 0;
124 }
bool hasProdVtx() const
Check for a production vertex on this particle.
const TruthVertex_v1 * prodVtx() const
The production vertex of this particle.
size_t nIncomingParticles() const
Get the number of incoming particles.

◆ p4()

TruthParticle_v1::FourMom_t xAOD::TruthParticle_v1::p4 ( ) const
finaloverridevirtual

The full 4-momentum of the particle.

Note that m may not be right, though, if not on mass shell. In which case p4().M() will be different from m().

Implements xAOD::IParticle.

Definition at line 191 of file TruthParticle_v1.cxx.

191 {
192 return FourMom_t(px(), py(), pz(), e() );
193 }
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.

◆ parent() [1/2]

const TruthParticle_v1 * xAOD::TruthParticle_v1::parent ( ) const
inline

Definition at line 109 of file TruthParticle_v1.h.

109 {
110 return parent(0);
111 }
const TruthParticle_v1 * parent() const

◆ parent() [2/2]

const TruthParticle_v1 * xAOD::TruthParticle_v1::parent ( size_t i) const

Retrieve the i-th mother (TruthParticle) of this TruthParticle.

Definition at line 126 of file TruthParticle_v1.cxx.

126 {
127 if (hasProdVtx() && prodVtx()->nIncomingParticles()>0){
128 return prodVtx()->incomingParticle( i );
129 } else if ( acc_parentLinks.isAvailable( *this ) && i<acc_parentLinks( *this ).size() ) {
130 return acc_parentLinks( *this )[i].isValid() ? *(acc_parentLinks( *this )[i]) : nullptr;
131 }
132 return nullptr;
133 }
const TruthParticle_v1 * incomingParticle(size_t index) const
Get one of the incoming particles.

◆ pdg_id()

int xAOD::TruthParticle_v1::pdg_id ( ) const
inline

PDG ID code.

Definition at line 52 of file TruthParticle_v1.h.

52{ return pdgId();}
int pdgId() const
PDG ID code.

◆ pdgId()

int xAOD::TruthParticle_v1::pdgId ( ) const

PDG ID code.

◆ phi()

double xAOD::TruthParticle_v1::phi ( ) const
finaloverridevirtual

The azimuthal angle ( \(\phi\)) of the particle.

Implements xAOD::IParticle.

Definition at line 176 of file TruthParticle_v1.cxx.

176 {
177
178 // Calculate the azimuth angle using TLorentzVector.
179 // Could do something more lightweight later on.
180 return genvecP4().Phi();
181 }

◆ polarization()

TruthParticle_v1::Polarization xAOD::TruthParticle_v1::polarization ( ) const

Retrieve a full Polarization with a single call.

Note
May have invalid values – use valid() to check.
Returns
An object holding the full polarization information

Definition at line 380 of file TruthParticle_v1.cxx.

380 {
381
382 // Construct the object:
383 Polarization rtn;
386
387 return rtn;
388 }
bool polarizationParameter(float &value, PolParam parameter) const
Accessor for polarization parameters.
Single container for full polarization information.

◆ polarizationParameter() [1/2]

bool xAOD::TruthParticle_v1::polarizationParameter ( float & value,
PolParam parameter ) const

Accessor for polarization parameters.

Generic C++ code should use this function to retrieve the polarization parameters of a truth particle. Since these parameters are optional, the function is designed to tell the user whether the requested parameter could be retrieved or not.

Parameters
valueThe polarization parameter value read from the object
parameterThe polarization parameter that we are interested in
Returns
true if the retrieval was successful, false if it wasn't

Definition at line 325 of file TruthParticle_v1.cxx.

326 {
327
328 // Get the accessor object:
329 const Accessor< float >* acc = polarizationAccessorV1( param );
330 if( ! acc ) {
331 // The user asked for a non-existent parameter type. o.O
332 std::cerr << "xAOD::TruthParticle_v1::polarizationParameter ERROR "
333 << "Request for an unknown (" << param << ") polarization "
334 << "parameter type" << std::endl;
335 return false;
336 }
337 // Check if the variable is available:
338 if( ! acc->isAvailable( *this ) ) {
339 // No, it is not.
340 return false;
341 }
342
343 // Read the value:
344 value = ( *acc )( *this );
345 return true;
346 }
const SG::AuxElement::Accessor< float > * polarizationAccessorV1(TruthParticle_v1::PolParam type)
This function holds on to Accessor objects that can be used by each TruthParticle_v1 object at runtim...
static const SG::AuxElement::Accessor< ElementLink< IParticleContainer > > acc("originalObjectLink")
Object used for setting/getting the dynamic decoration in question.

◆ polarizationParameter() [2/2]

float xAOD::TruthParticle_v1::polarizationParameter ( PolParam parameter) const

Convenience accessor for a polariozation parameter.

Throws an exception if the request can't be completed. It should mostly be used in PyROOT, as the other form of this function is very hard to use there. But one needs to know for sure that the requested parameter will exist.

Parameters
parameterThe polarion parameter that we are interested in
Returns
The value of the polarization parameter requested

Definition at line 366 of file TruthParticle_v1.cxx.

366 {
367
368 // Get the accessor object:
369 const Accessor< float >* acc = polarizationAccessorV1( param );
370 if( ! acc ) {
371 // Throw an exception:
372 throw std::runtime_error( "Unrecognized polarization parameter "
373 "requested" );
374 }
375
376 // Read the value:
377 return ( *acc )( *this );
378 }

◆ production_vertex()

const TruthVertex_v1 * xAOD::TruthParticle_v1::production_vertex ( ) const
inline

The production vertex of this particle.

Definition at line 77 of file TruthParticle_v1.h.

77{ return prodVtx();}

◆ prodVtx()

const TruthVertex * xAOD::TruthParticle_v1::prodVtx ( ) const

The production vertex of this particle.

Definition at line 75 of file TruthParticle_v1.cxx.

75 {
76
77 return hasProdVtx() ? *prodVtxLink() : nullptr;
78 }
const ElementLink< TruthVertexContainer > & prodVtxLink() const
The production vertex link of this particle.

◆ prodVtxLink()

const ElementLink< TruthVertexContainer > & xAOD::TruthParticle_v1::prodVtxLink ( ) const

The production vertex link of this particle.

◆ pt()

double xAOD::TruthParticle_v1::pt ( ) const
finaloverridevirtual

The transverse momentum ( \(p_T\)) of the particle.

Implements xAOD::IParticle.

Definition at line 161 of file TruthParticle_v1.cxx.

161 {
162
163 // Do the calculation by hand:
164 const double localPx = static_cast< double >( px() );
165 const double localPy = static_cast< double >( py() );
166 return std::sqrt( localPx * localPx + localPy * localPy );
167 }

◆ px()

float xAOD::TruthParticle_v1::px ( ) const

The x component of the particle's momentum.

◆ py()

float xAOD::TruthParticle_v1::py ( ) const

The y component of the particle's momentum.

◆ pz()

float xAOD::TruthParticle_v1::pz ( ) const

The z component of the particle's momentum.

◆ rapidity()

double xAOD::TruthParticle_v1::rapidity ( ) const
finaloverridevirtual

The true rapidity ( \(y\)) of the particle.

Implements xAOD::IParticle.

Definition at line 186 of file TruthParticle_v1.cxx.

186 {
187
188 return genvecP4().Rapidity();
189 }

◆ setDecayVtxLink()

void xAOD::TruthParticle_v1::setDecayVtxLink ( const ElementLink< TruthVertexContainer > & link)

Set the decay vertex of the particle.

◆ setE()

void xAOD::TruthParticle_v1::setE ( float value)

Set the energy of the particle.

Definition at line 230 of file TruthParticle_v1.cxx.

230 {
231 static const Accessor< float > acc( "e" );
232 acc( *this ) = value;
233 return;
234 }

◆ setM()

void xAOD::TruthParticle_v1::setM ( float value)

Also store the mass.

Definition at line 236 of file TruthParticle_v1.cxx.

236 {
237 static const Accessor< float > acc( "m" );
238 acc( *this ) = value;
239 return;
240 }

◆ setPdgId()

void xAOD::TruthParticle_v1::setPdgId ( int pid)

Set PDG ID code.

◆ setPolarizationParameter()

bool xAOD::TruthParticle_v1::setPolarizationParameter ( float value,
PolParam parameter )

Set method for polarization parameter values.

In order to keep the symmetry with the getter function, this setter communicates a possible failure in its operation through a return value. Setting a polariozation parameter is much less likely to fail than retrieving one, but in some situations it may still happen...

Parameters
valueThe polarization parameter value to set on the object
parameterThe polarization parameter type that we want to set
Returns
true if the operation was successful, or false if it wasn't

Definition at line 348 of file TruthParticle_v1.cxx.

349 {
350
351 // Get the accessor object:
352 const Accessor< float >* acc = polarizationAccessorV1( param );
353 if( ! acc ) {
354 // The user asked for a non-existent parameter type. o.O
355 std::cerr << "xAOD::TruthParticle_v1::setPolarizationParameter ERROR "
356 << "Request for an unknown (" << param << ") polarization "
357 << "parameter type" << std::endl;
358 return false;
359 }
360
361 // Set the value:
362 ( *acc )( *this ) = value;
363 return true;
364 }

◆ setProdVtxLink()

void xAOD::TruthParticle_v1::setProdVtxLink ( const ElementLink< TruthVertexContainer > & link)

Set the production vertex of the particle.

◆ setPx()

void xAOD::TruthParticle_v1::setPx ( float value)

Set the x component of the particle's momentum.

◆ setPy()

void xAOD::TruthParticle_v1::setPy ( float value)

Set the y component of the particle's momentum.

◆ setPz()

void xAOD::TruthParticle_v1::setPz ( float value)

Set the z component of the particle's momentum.

◆ setStatus()

void xAOD::TruthParticle_v1::setStatus ( int value)

Set status code.

◆ setUid()

void xAOD::TruthParticle_v1::setUid ( int value)

Set unique ID.

◆ status()

int xAOD::TruthParticle_v1::status ( ) const

Status code.

◆ threeCharge()

int xAOD::TruthParticle_v1::threeCharge ( ) const

3 x the physical charge (so it can be an int for quarks)

◆ toPersistent()

void xAOD::TruthParticle_v1::toPersistent ( )

Function making sure that the object is ready for persistification.

Definition at line 393 of file TruthParticle_v1.cxx.

393 {
394
395 if( acc_prodVtxLink.isAvailableWritable( *this ) ) {
396 acc_prodVtxLink( *this ).toPersistent();
397 }
400 }
401 return;
402 }
XAOD_AUXDATA_DEPRECATED bool isAvailableWritable(const std::string &name, const std::string &clsname="") const
Check if a user property is available for writing or not.
void toPersistent()
Function making sure that the object is ready for persistification.
static AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(TruthParticle_v1, int, pdgId, setPdgId) int TruthParticle_v1 const SG::AuxElement::Accessor< ElementLink< TruthVertexContainer > > acc_decayVtxLink("decayVtxLink")
Accessor for the decay vertex.

◆ type()

Type::ObjectType xAOD::TruthParticle_v1::type ( ) const
finaloverridevirtual

The type of the object as a simple enumeration.

Implements xAOD::IParticle.

Definition at line 200 of file TruthParticle_v1.cxx.

200 {
201
202 return Type::TruthParticle;
203 }

◆ uid()

int xAOD::TruthParticle_v1::uid ( ) const

Unique ID.


The documentation for this class was generated from the following files: