From ec51acbc8c32070d288fbd82f56b9965baf0bf97 Mon Sep 17 00:00:00 2001 From: John Chapman <John.Chapman@cern.ch> Date: Wed, 4 Dec 2024 14:02:59 +0100 Subject: [PATCH] AtlasPID: Expand the definition of isValid to cover all known valid pdg_ids --- Generators/TruthUtils/TruthUtils/AtlasPID.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Generators/TruthUtils/TruthUtils/AtlasPID.h b/Generators/TruthUtils/TruthUtils/AtlasPID.h index b42e12cdf5b..594f3068a76 100644 --- a/Generators/TruthUtils/TruthUtils/AtlasPID.h +++ b/Generators/TruthUtils/TruthUtils/AtlasPID.h @@ -348,9 +348,6 @@ template<class T> inline bool isResonance(const T& p) { return isZ(p) || isW(p) 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; } -template<class T> inline bool isValid(const T& p){return isValid(p->pdg_id());} -template<> inline bool isValid(const DecodedPID& p); - template<class T> inline bool isPythia8Specific(const T& p){return isPythia8Specific(p->pdg_id());} template<> inline bool isPythia8Specific(const DecodedPID& p){ return (p.ndigits() == 7 && p(0) == 9 && p(1) == 9);} template<> inline bool isPythia8Specific(const int& p){ auto value_digits = DecodedPID(p); return isPythia8Specific(value_digits);} @@ -617,7 +614,12 @@ template<> inline bool isTransportable(const DecodedPID& p){ return isPhoton(p.p template<> inline bool isTransportable(const int& p){ auto value_digits = DecodedPID(p); return isTransportable(value_digits);} /// Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine. -template<> inline bool isValid(const DecodedPID& p){ return isHadron(p) || isTrajectory(p.pid()) || isDiquark(p) || isBSM(p) || isNucleus(p) || (std::abs(p.pid()) < 42) || isGenSpecific(p.pid()) || isGeantino(p.pid()) || isPythia8Specific(p) || isGlueball(p); } +template<class T> inline bool isValid(const T& p){return isValid(p->pdg_id());} +template<> inline bool isValid(const DecodedPID& p){ + return p.pid() !=0 && ( isQuark(p) || isLepton(p) || isBoson(p) || isGlueball(p) || + isTrajectory(p.pid()) || isGenSpecific(p.pid()) || isDiquark(p) || + isBSM(p) || isHadron(p) || isNucleus(p) || isGeantino(p.pid()) || + isPythia8Specific(p) ); } template<> inline bool isValid(const int& p){ if (!p) return false; if (std::abs(p) < 42) return true; if (isGenSpecific(p)) return true; auto value_digits = DecodedPID(p); return isValid(value_digits); -- GitLab