File indexing completed on 2025-04-19 09:09:47
0001 #ifndef AMEGIC__Main__Tools_H
0002 #define AMEGIC__Main__Tools_H
0003
0004 #include "ATOOLS/Phys/Flavour.H"
0005
0006 namespace AMEGIC {
0007
0008 inline bool IsSusy(const ATOOLS::Flavour &fl)
0009 { return 1000000<fl.Kfcode()&&fl.Kfcode()<3000000; }
0010
0011 inline bool IsChargino(const ATOOLS::Flavour &fl)
0012 { return (fl.Kfcode()==kf_Chargino1||fl.Kfcode()==kf_Chargino2) && fl.IntSpin()==1; }
0013 inline bool IsNeutralino(const ATOOLS::Flavour &fl)
0014 { return (fl.Kfcode()==kf_Neutralino1||fl.Kfcode()==kf_Neutralino2||
0015 fl.Kfcode()==kf_Neutralino3||fl.Kfcode()==kf_Neutralino4) && fl.IntSpin()==1; }
0016 inline bool IsSlepton(const ATOOLS::Flavour &fl)
0017 { return ((fl.Kfcode()>1000010&&fl.Kfcode()<1000017)||
0018 (fl.Kfcode()>2000010&&fl.Kfcode()<2000017)) && fl.IntSpin()==0; }
0019 inline bool IsSneutrino(const ATOOLS::Flavour &fl)
0020 { return fl.Kfcode()>1000010&&fl.Kfcode()<1000017&&fl.Kfcode()%2==0&&fl.IntSpin()==0; }
0021
0022 inline bool IsSquark(const ATOOLS::Flavour &fl)
0023 { return fl.Strong()&&(fl.StrongCharge()==3 || fl.StrongCharge()==-3)&&fl.IntSpin()==0&&!fl.Majorana(); }
0024 inline bool IsGluino(const ATOOLS::Flavour &fl)
0025 { return fl.Kfcode()==kf_Gluino; }
0026
0027 inline bool IsIno(const ATOOLS::Flavour &fl)
0028 { return IsGluino(fl)||IsNeutralino(fl)||IsChargino(fl); }
0029
0030 inline int LeptonNumber(const ATOOLS::Flavour &fl)
0031 { if (fl.IsLepton()||IsSlepton(fl)||IsSneutrino(fl)) return fl.IsAnti()?-1:1; return 0; }
0032 inline double BaryonNumber(const ATOOLS::Flavour &fl)
0033 { if (fl.IsQuark()||IsSquark(fl)) return fl.IsAnti()?-1./3.:1./3.; return 0.;
0034 if (abs(fl.StrongCharge())==3) return 1./double(fl.StrongCharge()); }
0035
0036 }
0037
0038 #endif