#include <CompositeParticle_v1.h>
Classes | |
struct | MT |
Define the enumeration of calculation methods for the transverse mass. More... | |
Public Member Functions | |
CompositeParticle_v1 () | |
Default constructor. | |
void | toPersistent () |
Function preparing the object to be persistified. | |
Functions implementing additional 4-momentum properties | |
double | px () const |
Get the px momentum component of the particle. | |
double | py () const |
Get the py momentum component of the particle. | |
double | pz () const |
Get the pz momentum component of the particle. | |
double | et () const |
void | setP4 (const FourMom_t &vec) |
Set the 4-vec. | |
void | setPxPyPzE (double px, double py, double pz, double e) |
Set the 4-vec. | |
void | setPx (double px) |
Set the x-component of the momentum. | |
void | setPy (double py) |
Set the y-component of the momentum. | |
void | setPz (double pz) |
Set the z-component of the momentum. | |
void | setE (double e) |
Set the energy. | |
Functions implementing other particly-type properties | |
bool | hasCharge () const |
Check if this composite particle has its charge set. | |
float | charge () const |
Return the electric charge. | |
void | setCharge (float charge) |
Set the electric charge. | |
bool | hasPdgId () const |
Check if this composite particle has its charge set. | |
int | pdgId () const |
Return the PDG identifier. | |
void | setPdgId (int pdgID) |
Set the PDG identifier. | |
Functions returning variables that are calculated from 4-momentum | |
const FourMom_t & | p4 (const std::vector< int > &partIndices) const |
The total 4-momentum. | |
const FourMom_t & | p4 (int partIndexA, int partIndexB) const |
const FourMom_t & | p4 (int partIndexA, int partIndexB, int partIndexC) const |
Get the four-momentum with three indices. | |
const FourMom_t & | p4 (int partIndexA, int partIndexB, int partIndexC, int partIndexD) const |
Get the four-momentum with four indices. | |
double | pt (const std::vector< int > &partIndices) const |
The transverse momentum (). | |
double | eta (const std::vector< int > &partIndices) const |
The pseudorapidity (). | |
double | phi (const std::vector< int > &partIndices) const |
The azimuthal angle (). | |
double | m (const std::vector< int > &partIndices) const |
The invariant mass. | |
double | p (const std::vector< int > &partIndices) const |
The total 3-momentum. | |
double | e (const std::vector< int > &partIndices) const |
The total energy. | |
double | rapidity (const std::vector< int > &partIndices) const |
The true rapidity (y). | |
double | px (const std::vector< int > &partIndices) const |
Get the px momentum component. | |
double | py (const std::vector< int > &partIndices) const |
Get the py momentum component. | |
double | pz (const std::vector< int > &partIndices) const |
Get the pz momentum component. | |
double | et (const std::vector< int > &partIndices) const |
double | mt (const std::vector< int > &partIndices, MT::Method method=MT::DEFAULT) const |
double | mt (int partIndexA, int partIndexB=-2, MT::Method method=MT::DEFAULT) const |
Functions implementing handling of constituents | |
void | addPart (const xAOD::IParticle *part, bool updateFourMom=true) |
Add a particle as an additional constituent. Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. | |
void | addPart (const xAOD::IParticleLink &partLink, bool updateFourMom=true) |
Add a particle as an additional constituent. Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. | |
void | addParts (const xAOD::IParticleLinkContainer &partLinkCont, bool updateFourMom=true) |
Add many constituents at the same time Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. | |
void | removePart (const xAOD::IParticle *part, bool updateFourMom=true) |
Remove a particle as a constituent from this CompostiteParticle. Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. If the given IParticle is not already a constituent of this CompositeParticle, nothing happens. | |
void | removePart (const xAOD::IParticleLink &partLink, bool updateFourMom=true) |
Remove a particle as a constituent from this CompostiteParticle. Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. If the given IParticle is not already a constituent of this CompositeParticle, nothing happens. | |
const xAOD::MissingET * | missingET () const |
Get the MissingET object that is associated with this CompositeParticle. If no (valid) MissingET object is associated with this CompositeParticle, a null pointer will be returned. | |
void | setMissingET (const xAOD::MissingET *met, bool updateFourMom=true) |
Set the MissingET for this CompositeParticle. Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. | |
void | removeMissingET (bool updateFourMom=true) |
Remove the existing MissingET object from this CompositeParticle. Note that the 4-momentum of this CompositeParticle will be updated accordingly, if updateFourMom=true. | |
bool | contains (const xAOD::MissingET *met) const |
Check if a given xAOD::MissingET object is part of this CompositeParticle. | |
bool | contains (const xAOD::IParticle *part) const |
Check if a given xAOD::IParticle is a constituent. | |
bool | contains (const xAOD::IParticleLink &partLink) const |
Check if a given xAOD::IParticle is a constituent. | |
std::size_t | nParts () const |
std::size_t | nCompParts () const |
Number of constituent CompositeParticles. | |
std::size_t | nPhotons () const |
Number of constituent photons. | |
std::size_t | nElectrons () const |
Number of constituent electrons. | |
std::size_t | nMuons () const |
Number of constituent muons. | |
std::size_t | nTaus () const |
Number of constituent taus. | |
std::size_t | nLeptons () const |
Number of constituent leptons (electrons, muons, and taus). | |
std::size_t | nJets () const |
Number of constituent jets. | |
std::size_t | nTruthParts () const |
Number of constituent xAOD::TruthParticles. | |
const xAOD::IParticle * | part (std::size_t index=0) const |
Get the constituent IParticle number i. | |
const xAOD::IParticleLink & | partLink (std::size_t index=0) const |
Get the constituent IParticle number i as an ElementLink. | |
const xAOD::IParticleLinkContainer & | partLinks () const |
Get all constituents in one go. | |
template<typename CONTTYPE > | |
ConstDataVector< CONTTYPE > * | parts () const |
xAOD::CompositeParticle_v1 * | compPart (const std::vector< int > &partIndices, const std::vector< int > &otherPartIndices=std::vector< int >{}, bool updateFourMom=true) const |
xAOD::CompositeParticle_v1 * | compPart (int partIndexA, int partIndexB, int partIndexC=-2, bool updateFourMom=true) const |
const xAOD::CompositeParticle_v1 * | compPart (std::size_t index=0) const |
const xAOD::Photon * | photon (std::size_t index=0) const |
const xAOD::Electron * | electron (std::size_t index=0) const |
const xAOD::Muon * | muon (std::size_t index=0) const |
const xAOD::TauJet * | tau (std::size_t index=0) const |
const xAOD::Jet * | jet (std::size_t index=0) const |
const xAOD::TruthParticle * | truthPart (std::size_t index=0) const |
Functions implementing handling of other constituents. These | |
The constituent iterators are missing for the moment other particles are stored separetely from the main constituent particles. They will NOT be used to determine the four-momentum of this CompositeParticle. And they will NOT be used for determining the weight (and other properties) of this CompositeParticle. The main idea is that these other particles can be used for keeping track of, e.g., a third lepton to veto on, or sub-threshold jets. | |
void | addOtherPart (const xAOD::IParticle *part) |
Add a particle as an additional other constituent. | |
void | addOtherPart (const xAOD::IParticleLink &partLink) |
Add a particle as an additional other constituent. | |
void | addOtherParts (const xAOD::IParticleLinkContainer &partLinkCont) |
Add many other constituents at the same time. | |
void | removeOtherPart (const xAOD::IParticle *part) |
Remove a particle as an other constituent from this CompostiteParticle. | |
void | removeOtherPart (const xAOD::IParticleLink &partLink) |
Remove a particle as an other constituent from this CompostiteParticle. | |
bool | containsOther (const xAOD::IParticle *part) const |
Check if a given xAOD::IParticle is an other constituent. | |
bool | containsOther (const xAOD::IParticleLink &partLink) const |
Check if a given xAOD::IParticle is an other constituent. | |
std::size_t | nOtherParts () const |
Number of other constituent particles. | |
std::size_t | nOtherCompParts () const |
Number of other constituent CompositeParticles. | |
std::size_t | nOtherPhotons () const |
Number of other constituent photons. | |
std::size_t | nOtherElectrons () const |
Number of other constituent electrons. | |
std::size_t | nOtherMuons () const |
Number of other constituent muons. | |
std::size_t | nOtherTaus () const |
Number of other constituent taus. | |
std::size_t | nOtherLeptons () const |
Number of other constituent leptons (electrons, muons, and taus). | |
std::size_t | nOtherJets () const |
Number of other constituent jets. | |
std::size_t | nOtherTruthParts () const |
Number of other constituent xAOD::TruthParticles. | |
const xAOD::IParticle * | otherPart (std::size_t index=0) const |
Get the other constituent IParticle number i. | |
const xAOD::IParticleLink & | otherPartLink (std::size_t index=0) const |
Get the other constituent IParticle number i as an ElementLink. | |
const xAOD::IParticleLinkContainer & | otherPartLinks () const |
Get all other constituents in one go. | |
const xAOD::CompositeParticle_v1 * | otherCompPart (std::size_t index=0) const |
const xAOD::Photon * | otherPhoton (std::size_t index=0) const |
const xAOD::Electron * | otherElectron (std::size_t index=0) const |
const xAOD::Muon * | otherMuon (std::size_t index=0) const |
const xAOD::TauJet * | otherTau (std::size_t index=0) const |
const xAOD::Jet * | otherJet (std::size_t index=0) const |
const xAOD::TruthParticle * | otherTruthPart (std::size_t index=0) const |
Functions implementing read-only access to auxdata (for python). | |
The constituent iterators are missing for the moment This specialization is needed since ROOT 6.02 doesn't yet support C++11 in the TFormula stuff with JIT compilation, see: https://sft.its.cern.ch/jira/browse/ROOT-5083 | |
bool | getBool (const std::string &varName) const |
Access to get a variable of type bool (actually, it is stored using type char). | |
int | getInt (const std::string &varName) const |
Access to get a variable of type int. | |
unsigned int | getUInt (const std::string &varName) const |
Access to get a variable of type unsigned int. | |
float | getFloat (const std::string &varName) const |
Access to get a variable of type float. | |
double | getDouble (const std::string &varName) const |
Access to get a variable of type double. | |
Protected Member Functions | |
void | setPartLinks (const xAOD::IParticleLinkContainer &constitLinks) |
Set all constituents in one go. Warning: This is meant for usage internal to this class only because no addition of the constituent properties will be done! | |
void | setOtherPartLinks (const xAOD::IParticleLinkContainer &otherPartLinks) |
Set all other constituents in one go. | |
Functions implementing the xAOD::IParticle interface | |
| |
typedef IParticle::FourMom_t | FourMom_t |
Definition of the 4-momentum type. | |
virtual double | pt () const |
The transverse momentum () of the particle. | |
virtual double | eta () const |
The pseudorapidity () of the particle. | |
virtual double | phi () const |
The azimuthal angle () of the particle. | |
virtual double | m () const |
The invariant mass of the particle. | |
virtual double | e () const |
The total energy of the particle. | |
virtual double | rapidity () const |
The true rapidity (y) of the particle. | |
virtual const FourMom_t & | p4 () const |
The full 4-momentum of the particle. | |
virtual Type::ObjectType | type () const |
The type of the object as a simple enumeration. | |
Functions returning variables that are calculated from | |
information from constituents (not only using their 4-momenta). | |
float | weight (const std::vector< std::string > &varNames, const std::vector< int > &partIndices={}) const |
float | weight (const std::string &varNameA) const |
float | weight (const std::string &varNameA, const std::string &varNameB) const |
float | weight (const std::string &varNameA, const std::string &varNameB, const std::string &varNameC) const |
float | weight (const std::string &varNameA, const std::string &varNameB, const std::string &varNameC, const std::string &varNameD) const |
float | weight (const std::string &varNameA, const std::string &varNameB, const std::string &varNameC, const std::string &varNameD, const std::string &varNameE) const |
Description of a composite particle, i.e. a particle that is composed out of several other particles/objects, e.g., a Z boson that consists out of two muons.
const xAOD::CompositeParticle_v1 * xAOD::CompositeParticle_v1::compPart | ( | std::size_t | index = 0 |
) | const [inline] |
Get the constituent number i as a CompositeParticle. If the cast to CompositeParticle fails for a constituent, a null pointer is returned.
xAOD::CompositeParticle_v1* xAOD::CompositeParticle_v1::compPart | ( | int | partIndexA, | |
int | partIndexB, | |||
int | partIndexC = -2 , |
|||
bool | updateFourMom = true | |||
) | const [inline] |
Get a CompositeParticle that is build on the fly from the constituent particles associated to the indices given (missingET is at index=-1). This specialization to the above method is needed since ROOT 6.02 doesn't yet support C++11 in the TFormula stuff with JIT compilation, see: https://sft.its.cern.ch/jira/browse/ROOT-5083
xAOD::CompositeParticle_v1* xAOD::CompositeParticle_v1::compPart | ( | const std::vector< int > & | partIndices | ) |
Get a CompositeParticle that is build on the fly from the constituent particles associated to the indices given (missingET is at index=-1). If the second list of idices is given, also the "other" particles will be used in building this CompositeParticle.
const xAOD::Electron * xAOD::CompositeParticle_v1::electron | ( | std::size_t | index = 0 |
) | const [inline] |
double xAOD::CompositeParticle_v1::et | ( | const std::vector< int > & | partIndices | ) | const |
The transverse energy () Note that this differs from () for massive particles.
double xAOD::CompositeParticle_v1::et | ( | ) | const |
The transverse energy () of the particle. Note that this differs from () for massive particles.
const xAOD::Jet * xAOD::CompositeParticle_v1::jet | ( | std::size_t | index = 0 |
) | const [inline] |
Get the constituent number i as a Jet. If the cast to Jet fails for a constituent, a null pointer is returned.
double xAOD::CompositeParticle_v1::mt | ( | int | partIndexA, | |
int | partIndexB = -2 , |
|||
MT::Method | method = MT::DEFAULT | |||
) | const [inline] |
Get the transverse mass with only one constituent particle. Specify which calculation method to use as an optional additional argument. This specialization to the above method is needed since ROOT 6.02 doesn't yet support C++11 in the TFormula stuff with JIT compilation, see: https://sft.its.cern.ch/jira/browse/ROOT-5083
double xAOD::CompositeParticle_v1::mt | ( | const std::vector< int > & | partIndices, | |
MT::Method | method = MT::DEFAULT | |||
) | const |
Get the transverse mass. Specify which calculation method to use as an optional additional argument.
const xAOD::Muon * xAOD::CompositeParticle_v1::muon | ( | std::size_t | index = 0 |
) | const [inline] |
Get the constituent number i as an Muon. If the cast to Muon fails for a constituent, a null pointer is returned.
std::size_t xAOD::CompositeParticle_v1::nParts | ( | ) | const |
Number of constituent particles. Note that MissingET is NOT counted as a constituent in this context
const xAOD::CompositeParticle_v1 * xAOD::CompositeParticle_v1::otherCompPart | ( | std::size_t | index = 0 |
) | const [inline] |
Get the other constituent number i as a CompositeParticle. If the cast to CompositeParticle fails for a constituent, a null pointer is returned.
const xAOD::Electron * xAOD::CompositeParticle_v1::otherElectron | ( | std::size_t | index = 0 |
) | const [inline] |
const xAOD::Jet * xAOD::CompositeParticle_v1::otherJet | ( | std::size_t | index = 0 |
) | const [inline] |
Get the other constituent number i as a Jet. If the cast to Jet fails for a constituent, a null pointer is returned.
const xAOD::Muon * xAOD::CompositeParticle_v1::otherMuon | ( | std::size_t | index = 0 |
) | const [inline] |
Get the other constituent number i as an Muon. If the cast to Muon fails for a constituent, a null pointer is returned.
const xAOD::Photon * xAOD::CompositeParticle_v1::otherPhoton | ( | std::size_t | index = 0 |
) | const [inline] |
const xAOD::TauJet * xAOD::CompositeParticle_v1::otherTau | ( | std::size_t | index = 0 |
) | const [inline] |
Get the other constituent number i as a tau. If the cast to tau fails for a constituent, a null pointer is returned.
const xAOD::TruthParticle * xAOD::CompositeParticle_v1::otherTruthPart | ( | std::size_t | index = 0 |
) | const [inline] |
Get the other constituent number i as a TruthParticle. If the cast to TruthParticle fails for a constituent, a null pointer is returned.
const FourMom_t& xAOD::CompositeParticle_v1::p4 | ( | int | partIndexA, | |
int | partIndexB | |||
) | const [inline] |
Get the four-momentum with two indices. This specialization to the above method is needed since ROOT 6.02 doesn't yet support C++11 in the TFormula stuff with JIT compilation, see: https://sft.its.cern.ch/jira/browse/ROOT-5083
ConstDataVector<CONTTYPE>* xAOD::CompositeParticle_v1::parts | ( | ) | const [inline] |
Method to return a DataVector<T>, e.g., a MuonContainer, for all the constituent particles, e.g., of type xAOD::Muon, that this CompositeParticle has. This DataVector be a simple SG::VIEW_ELEMENTS container, i.e., it does NOT own the elements, e.g., muons, but has simple pointers to them. However, the user is still required to take care of its memory management by either recording it to StoreGate (and thus transfering ownership), or by deleting this view-container when done with it.
const xAOD::Photon * xAOD::CompositeParticle_v1::photon | ( | std::size_t | index = 0 |
) | const [inline] |
const xAOD::TauJet * xAOD::CompositeParticle_v1::tau | ( | std::size_t | index = 0 |
) | const [inline] |
Get the constituent number i as a tau. If the cast to tau fails for a constituent, a null pointer is returned.
const xAOD::TruthParticle * xAOD::CompositeParticle_v1::truthPart | ( | std::size_t | index = 0 |
) | const [inline] |
Get the constituent number i as a TruthParticle. If the cast to TruthParticle fails for a constituent, a null pointer is returned.
float xAOD::CompositeParticle_v1::weight | ( | const std::string & | varNameA | ) | const [inline] |
Get the weight for this xAOD::CompositeParticle
. This specialization to the above method is needed since ROOT 6.02 doesn't yet support C++11 in the TFormula stuff with JIT compilation, see: https://sft.its.cern.ch/jira/browse/ROOT-5083
float xAOD::CompositeParticle_v1::weight | ( | const std::vector< std::string > & | varNames | ) |
Get the weight for this xAOD::CompositeParticle
by providing a vector of variable names that will be looked for. These variables, if found, are assumed to be of type float and to hold a multiplicative weight variable. If a given variable name is not found for this xAOD::CompositeParticle
, then, the whole constituent tree will be searched for iteratively. The same variable name can be found and used for several constituents. But if a xAOD::CompositeParticle
has that variable, the iterative search will not look into the constituents of that xAOD::CompositeParticle
. The second, optional, argument is a list of indices such that one can restrict the variable name search to only the given constituent particles.