diff --git a/Generators/TruthUtils/TruthUtils/AtlasPID.h b/Generators/TruthUtils/TruthUtils/AtlasPID.h index 9aaf1cdb23141fffaa2fe8eec1e24187a11fec87..591e99b28bd288ce3e69ba426eb6b7327a68247c 100644 --- a/Generators/TruthUtils/TruthUtils/AtlasPID.h +++ b/Generators/TruthUtils/TruthUtils/AtlasPID.h @@ -180,18 +180,6 @@ template<> inline bool isNeutrino(const int& p){ auto sp = std::abs(p); return s template<class T> inline bool isSMNeutrino(const T& p){return isSMNeutrino(p->pdg_id());} template<> inline bool isSMNeutrino(const int& p){ auto sp = std::abs(p); return sp == NU_E || sp == NU_MU || sp == NU_TAU; } -template<class T> inline bool isGluon(const T& p){return isGluon(p->pdg_id());} -template<> inline bool isGluon(const int& p){ return p == GLUON; } - -template<class T> inline bool isPhoton(const T& p){return isPhoton(p->pdg_id());} -template<> inline bool isPhoton(const int& p){ return p == PHOTON; } - -template<class T> inline bool isZ(const T& p){return isZ(p->pdg_id());} -template<> inline bool isZ(const int& p){ return p == Z0BOSON; } - -template<class T> inline bool isW(const T& p){return isW(p->pdg_id());} -template<> inline bool isW(const int& p){ return std::abs(p) == WPLUSBOSON; } - /// PDG rule 4 /// Diquarks have 4-digit numbers with nq1 >= nq2 and nq3 = 0 /// APID: the diquarks with fourth generation are not diquarks @@ -312,12 +300,14 @@ template<class T> inline bool isHadron(const T& p){return isHadron(p->pdg_id()); template<> inline bool isHadron(const DecodedPID& p){ return isMeson(p) || isBaryon(p) || isTetraquark(p) || isPentaquark(p); } template<> inline bool isHadron(const int& p){ auto value_digits = DecodedPID(p); return isHadron(value_digits);} + /// PDG rule 8: /// The pomeron and odderon trajectories and a generic reggeon trajectory /// of states in QCD areassigned codes 990, 9990, and 110 respectively template<class T> inline bool isTrajectory(const T& p){return isTrajectory(p->pdg_id());} template<> inline bool isTrajectory(const int& p){ return std::abs(p) == POMERON || std::abs(p) == ODDERON || std::abs(p) == REGGEON; } + /// PDG rule 9: /// Two-digit numbers in the range 21–30 are provided for the Standard /// Model gauge and Higgs bosons. @@ -328,15 +318,33 @@ template<class T> inline bool isBoson(const T& p){return isBoson(p->pdg_id());} template<> inline bool isBoson(const int& p){ auto sp = std::abs(p); return sp > 20 && sp < 41; } template<> inline bool isBoson(const DecodedPID& p){ return isBoson(p.pid()); } +template<class T> inline bool isGluon(const T& p){return isGluon(p->pdg_id());} +template<> inline bool isGluon(const int& p){ return p == GLUON; } + +template<class T> inline bool isPhoton(const T& p){return isPhoton(p->pdg_id());} +template<> inline bool isPhoton(const int& p){ return p == PHOTON; } + +template<class T> inline bool isZ(const T& p){return isZ(p->pdg_id());} +template<> inline bool isZ(const int& p){ return p == Z0BOSON; } + +template<class T> inline bool isW(const T& p){return isW(p->pdg_id());} +template<> inline bool isW(const int& p){ return std::abs(p) == WPLUSBOSON; } + /// APID: HIGGS boson is only one particle. template<class T> inline bool isHiggs(const T& p){return isHiggs(p->pdg_id());} template<> inline bool isHiggs(const int& p){ return p == HIGGSBOSON; } -template<class T> inline bool isResonance(const T& p) { return isZ(p) || isW(p) || isHiggs(p) || isTop(p); } // APID: not including t' (pdg_id=8) - template<class T> inline bool isGraviton(const T& p) {return isGraviton(p->pdg_id());} template<> inline bool isGraviton(const int& p){ return p == GRAVITON; } +template<class T> inline bool isResonance(const T& p) { return isZ(p) || isW(p) || isHiggs(p) || isTop(p); } // APID: not including t' (pdg_id=8) + +/// PDG rule 11c: +/// “One-of-a-kind†exotic particles are assigned numbers in the range +/// 41–80. The subrange 61-80 can be used for new heavier fermions in +/// generic models, where partners to the SM fermions would have codes +/// offset by 60. If required, however, other assignments could be +/// made. template<class T> inline bool isLeptoQuark(const T& p){return isLeptoQuark(p->pdg_id());} template<> inline bool isLeptoQuark(const int& p){ return std::abs(p) == LEPTOQUARK; }