diff --git a/Generators/TruthUtils/TruthUtils/HepMCHelpers.h b/Generators/TruthUtils/TruthUtils/HepMCHelpers.h index 82cb8788a6a6214fe622b58aa2693ec8271bae9a..80719511a434903cecf8f557f7fd9edb2a18bed9 100644 --- a/Generators/TruthUtils/TruthUtils/HepMCHelpers.h +++ b/Generators/TruthUtils/TruthUtils/HepMCHelpers.h @@ -20,31 +20,25 @@ namespace MC #include "AtlasPID.h" /// @brief Identify if the particle with given PDG ID would not interact with the detector, i.e. not a neutrino or WIMP - inline bool isNonInteracting(int pid) { return !(isStrongInteracting(pid) || isEMInteracting(pid) || isGeantino(pid)); } + template <class T> inline bool isNonInteracting(const T& p) { return !(isStrongInteracting<T>(p) || isEMInteracting<T>(p) || isGeantino<T>(p)); } /// @brief Identify if the particle with given PDG ID would produce ID tracks but not shower in the detector if stable - inline bool isChargedNonShowering(int pid) { return (isMuon(pid) || isSUSY(pid)); } + template <class T> inline bool isChargedNonShowering(const T& p) { return (isMuon<T>(p) || isSUSY<T>(p)); } template <class T> inline bool isDecayed(const T& p) { return p->status() == 2;} template <class T> inline bool isStable(const T& p) { return p->status() == 1;} template <class T> inline bool isFinalState(const T& p) { return p->status() == 1 && !p->end_vertex();} template <class T> inline bool isPhysical(const T& p) { return isStable<T>(p) || isDecayed<T>(p); } - template <class T> inline bool isPhysicalHadron(const T& p) { return isHadron(p->pdg_id()) && isPhysical<T>(p);} + template <class T> inline bool isPhysicalHadron(const T& p) { return isHadron<T>(p) && isPhysical<T>(p);} /// @brief Determine if the particle is stable at the generator (not det-sim) level, - template <class T> inline bool isGenStable(const T& p) { - return isStable<T>(p) && !HepMC::is_simulation_particle<T>(p); - } + template <class T> inline bool isGenStable(const T& p) { return isStable<T>(p) && !HepMC::is_simulation_particle<T>(p);} /// @brief Identify if the particle is considered stable at the post-detector-sim stage - template <class T> inline bool isSimStable(const T& p) { - return isStable<T>(p) && !p->end_vertex() && HepMC::is_simulation_particle<T>(p); - } + template <class T> inline bool isSimStable(const T& p) { return isStable<T>(p) && !p->end_vertex() && HepMC::is_simulation_particle<T>(p);} /// @brief Identify if the particle could interact with the detector during the simulation, e.g. not a neutrino or WIMP - template <class T> inline bool isSimInteracting(const T& p) { - return isGenStable<T>(p) && !isNonInteracting(p->pdg_id()); - } + template <class T> inline bool isSimInteracting(const T& p) { return isGenStable<T>(p) && !isNonInteracting<T>(p);} /* The functions below should be unified */ template <class T> inline bool FastCaloSimIsGenSimulStable(const T& p) {