Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:55

0001 #ifndef ATOOLS_Phys_Fastjet_Helpers_H
0002 #define ATOOLS_Phys_Fastjet_Helpers_H
0003 
0004 #include "ATOOLS/Org/CXXFLAGS_PACKAGES.H"
0005 #include "ATOOLS/Phys/fjcore.hh"
0006 #include "ATOOLS/Math/Vector.H"
0007 #include "ATOOLS/Phys/Flavour.H"
0008 
0009 #include <vector>
0010 #include <limits>
0011 
0012 namespace ATOOLS {
0013   struct Jet_Input;
0014   class  Jet_Identification;
0015   typedef std::vector<Jet_Input> Jet_Inputs;
0016   typedef std::vector<Jet_Identification *> Jet_Identifications;
0017 
0018   bool ToBeClustered(const ATOOLS::Flavour& flav, int bmode);
0019   bool ToBeClustered(const ATOOLS::Flavour& flav,
0020                      const ATOOLS::Vec4D& mom,
0021                      const ATOOLS::Jet_Inputs& jetinputs);
0022   fjcore::PseudoJet MakePseudoJet(const Flavour& flav, const Vec4D& mom);
0023 
0024   bool BTag(const fjcore::PseudoJet& jet, int bmode);
0025   Flavour FlavourTag(const fjcore::PseudoJet& jet,
0026                      const Jet_Identifications& jetids,
0027                      const kf_code& notagkf);
0028 
0029 
0030   struct Jet_Input {
0031   public:
0032     ATOOLS::Flavour m_fl;
0033     double          m_ptmin,m_etamax,m_ymax;
0034     Jet_Input(const ATOOLS::Flavour& fl=ATOOLS::Flavour(kf_none),
0035               const double& ptmin=0.,
0036               const double& etamax=std::numeric_limits<double>::max(),
0037               const double& ymax=std::numeric_limits<double>::max()) :
0038       m_fl(fl), m_ptmin(ptmin), m_etamax(etamax), m_ymax(ymax) {}
0039   };
0040 
0041   std::ostream &operator<<(std::ostream &str,const Jet_Input &ji);
0042 
0043   struct JetIdMode {
0044     enum code {
0045       unknown  = 0,
0046       larger   = 1,
0047       relative = 2
0048     };
0049   };
0050 
0051   inline JetIdMode::code operator|(const JetIdMode::code idm1,
0052                                    const JetIdMode::code idm2)
0053   { return (JetIdMode::code)((int)idm1|(int)idm2); }
0054   inline const JetIdMode::code &operator|=(JetIdMode::code &idm1,
0055                                            const JetIdMode::code idm2)
0056   { return idm1=(JetIdMode::code)((int)idm1|(int)idm2); }
0057   inline JetIdMode::code operator&(const JetIdMode::code idm1,
0058                                    const JetIdMode::code idm2)
0059   { return (JetIdMode::code)((int)idm1&(int)idm2); }
0060   inline const JetIdMode::code &operator&=(JetIdMode::code &idm1,
0061                                            const JetIdMode::code idm2)
0062   { return idm1=(JetIdMode::code)((int)idm1&(int)idm2); }
0063 
0064   std::ostream &operator<<(std::ostream &str,const JetIdMode::code &idm);
0065 
0066 
0067   class Jet_Identification {
0068   private:
0069     ATOOLS::Flavour  m_flid;
0070     double           m_ptmin, m_etmin, m_emin;
0071     JetIdMode::code  m_jetidmode;
0072   public:
0073     Jet_Identification(const ATOOLS::Flavour& flid, const double& ptmin,
0074                        const double& etmin, const double& emin,
0075                        const JetIdMode::code& jetidmode);
0076     ~Jet_Identification() {}
0077 
0078     inline const ATOOLS::Flavour& Flavour()   const { return m_flid; }
0079     inline const double& PTMin()              const { return m_ptmin; }
0080     inline const double& ETMin()              const { return m_etmin; }
0081     inline const double& EMin()               const { return m_emin; }
0082     inline const JetIdMode::code& JetIDMode() const { return m_jetidmode; }
0083   };
0084 
0085   std::ostream &operator<<(std::ostream &str,const Jet_Identification &jid);
0086 
0087 }
0088 
0089 #endif