13 return particle_A->
pt() < particle_B->
pt();
18 if ( not truth ) {
return nullptr; }
22 if ( not truth_vertex || truth_vertex->
perp() > 440.0 ) {
30 if ( !vertex_A || !vertex_B ) {
return 999.0; }
31 return (vertex_A->
v4().Vect() - vertex_B->
v4().Vect()).Mag();
35 if( truth_particle ==
nullptr ) {
return false; }
36 if( flavour == 5 && truth_particle->
isBottomHadron() ) {
return true; }
37 if( flavour == 4 && truth_particle->
isCharmHadron() ) {
return true; }
42 if (!
is_bc_hadron(truth_particle, flavour))
return false;
57 if ( truth_particle ==
nullptr ) {
return nullptr; }
59 if (
depth>30) {
return nullptr; }
62 return truth_particle;
64 for (
unsigned int p = 0; p < truth_particle->
nParents(); p++) {
65 const auto parent = truth_particle->
parent(p);
66 if(parent == truth_particle)
continue;
68 if ( parent_hadron !=
nullptr ) {
76 if (!truth_particle)
return TruthType::Label::NoTruth;
79 if (std::abs(truth_particle->
pdgId()) == 211)
return TruthType::Label::Pion * truth_particle->
charge();
81 if (std::abs(truth_particle->
pdgId()) == 3122)
return TruthType::Label::Lambda;
82 if (truth_particle->
isElectron())
return TruthType::Label::Electron * truth_particle->
charge() * -1;
83 if (truth_particle->
isMuon())
return TruthType::Label::Muon * truth_particle->
charge() * -1;
84 if (truth_particle->
isPhoton())
return TruthType::Label::Photon;
85 return TruthType::Label::Other;
98 return TruthSource::Label::Other;
103 std::vector<const xAOD::TruthVertex*>& seen_vertices,
104 const float truthVertexMergeDistance) {
110 if (
get_distance(this_vertex, truth_PV) < truthVertexMergeDistance) {
114 for (
size_t i = 0; i != seen_vertices.size(); i++) {
115 float dr =
get_distance(seen_vertices.at(i), this_vertex);
116 if ( dr < truthVertexMergeDistance ) {
121 seen_vertices.push_back(this_vertex);
122 return seen_vertices.size();
Class providing the definition of the 4-vector interface.
virtual double pt() const =0
The transverse momentum ( ) of the particle.
bool isBottomHadron() const
Determine if the PID is that of a b-hadron.
bool isStrangeMeson() const
Determine if the PID is that of a strange meson.
int pdgId() const
PDG ID code.
const TruthVertex_v1 * decayVtx() const
The decay vertex of this particle.
const TruthParticle_v1 * parent(size_t i) const
Retrieve the i-th mother (TruthParticle) of this TruthParticle.
bool hasDecayVtx() const
Check for a decay vertex on this particle.
const TruthVertex_v1 * prodVtx() const
The production vertex of this particle.
double charge() const
Physical charge.
size_t nParents() const
Number of parents of this particle.
bool isElectron() const
Whether the particle is an electron (or positron)
bool isPhoton() const
Whether the particle is a photon.
bool isMuon() const
Whether the particle is a muon (or antimuon)
bool isCharmHadron() const
Determine if the PID is that of a c-hadron.
FourVec_t v4() const
The full 4-vector of the vertex.
std::vector< const TruthParticle * > particles_out() const
Get the outgoing particles.
float perp() const
Vertex transverse distance from the beam line.
std::string depth
tag string for intendation
bool is_weakly_decaying_hadron(const xAOD::TruthParticle *truth_particle)
float get_distance(const xAOD::TruthVertex *vertex_A, const xAOD::TruthVertex *vertex_B)
const xAOD::TruthVertex * get_truth_vertex(const xAOD::TruthParticle *truth)
int get_source_type(const int origin)
const xAOD::TruthParticle * get_parent_hadron(const xAOD::TruthParticle *truth_particle, bool user_called=true, int depth=0)
int get_truth_type(const xAOD::TruthParticle *truth_particle)
bool is_bc_hadron(const xAOD::TruthParticle *truth_particle, int flavour)
int get_vertex_index(const xAOD::TruthVertex *vertex, const xAOD::TruthVertex *truth_PV, std::vector< const xAOD::TruthVertex * > &seen_vertices, const float truthVertexMergeDistance)
bool sort_particles(const xAOD::IParticle *particle_A, const xAOD::IParticle *particle_B)
bool isHadronicInteraction(int origin)
from hadronic interactions
bool isSecondary(int origin)
from long living particle decays or gamma conversions or hadronic interactions and anything else with...
bool isGammaConversion(int origin)
from conversions
bool isStrangeMesonDecay(int origin)
from strange meson decay
bool isStrangeBaryonDecay(int origin)
from strange baryon decay
TruthVertex_v1 TruthVertex
Typedef to implementation.
TruthParticle_v1 TruthParticle
Typedef to implementation.