diff --git a/Generators/TruthUtils/TruthUtils/AtlasPID.h b/Generators/TruthUtils/TruthUtils/AtlasPID.h
index 96079b1c6042a7fbad340a78b013bf4d3b944a16..b42e12cdf5b739c3cfcd930b580769331e7e9389 100644
--- a/Generators/TruthUtils/TruthUtils/AtlasPID.h
+++ b/Generators/TruthUtils/TruthUtils/AtlasPID.h
@@ -454,7 +454,8 @@ template<> inline bool isGaugino(const int& p){ auto value_digits = DecodedPID(p
 /// the quantum numbers are specified by tech, ij, where i and j are 1 or 2. nLis then 2i+j. The coloron
 /// V8, is a heavy gluon color octet and thus is 3100021
 template<class T> inline bool isTechnicolor(const T& p){return isTechnicolor(p->pdg_id());}
-template<> inline bool isTechnicolor(const DecodedPID& p){return (p.ndigits() == 7 &&  p(0) == 3 && (p(1) == 0 || p(0) == 1) && isValid(p.shift(2)) && !isGenSpecific(p.shift(2).pid()));}
+template<> inline bool isTechnicolor(const DecodedPID& p){ auto pp = p.shift(2); return (p.ndigits() == 7 &&  p(0) == 3 && (p(1) == 0 || p(0) == 1) &&
+                                                                                           ( isQuark(pp) || isLepton(pp) || isBoson(pp) || isGlueball(pp) || isDiquark(pp) || isHadron(pp) ) ); }
 template<> inline bool isTechnicolor(const int& p){ auto value_digits = DecodedPID(p); return isTechnicolor(value_digits);}
 
 /// PDG rule 11f