Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:05

0001 #ifndef MCATNLO_Showers_Kinematics_Base_H
0002 #define MCATNLO_Showers_Kinematics_Base_H
0003 
0004 #include "MCATNLO/Tools/Parton.H"
0005 #include "ATOOLS/Math/Vector.H"
0006 #include "PHASIC++/Channels/CSS_Kinematics.H"
0007 
0008 namespace PHASIC { class Jet_Finder; }
0009 
0010 namespace MCATNLO {
0011   class Sudakov;
0012   class Kinematics_Base {
0013   public:
0014     const static ATOOLS::Vec3D s_ex, s_ey, s_ez;
0015     const ATOOLS::Mass_Selector *p_ms;
0016     Sudakov *p_sud;
0017     int m_evolscheme;
0018   public:
0019     Kinematics_Base(): m_evolscheme(0), p_ms(NULL) {}
0020     virtual ~Kinematics_Base() {}
0021     virtual int MakeKinematics(Parton *const,const ATOOLS::Flavour &,
0022                    const ATOOLS::Flavour &,Parton *&) = 0;
0023     double GetS(const double &Q2,const double &y,
0024         const double &mi2,const double &mj2,const double &mk2) const;
0025     double GetZ(const double &Q2,const double &sij,const double &y,const double &zt,
0026         const double &mi2,const double &mk2) const;
0027     double GetKT2(const double &Q2,const double &y,const double &z,
0028           const double &mi2,const double &mj2,const double &mk2) const;
0029     double ConstructLN(const double &Q2,const double &sij,
0030                const double &mij2,const double &mk2,
0031                const ATOOLS::Vec4D &Q,ATOOLS::Vec4D &pk,
0032                ATOOLS::Vec4D &l,ATOOLS::Vec4D &n) const;
0033     inline void SetMS(const ATOOLS::Mass_Selector *const ms) { p_ms=ms; }
0034     inline void SetSudakov(Sudakov *const sud) { p_sud=sud; }
0035     inline void SetEvolScheme(int evol) { m_evolscheme=evol; }
0036     inline int EvolScheme() const { return m_evolscheme; }
0037     inline bool ValidateDipoleKinematics(const double & mi2, const double & mj2,
0038                      const double & mk2, const PHASIC::Kin_Args& args)
0039     {
0040       if (ATOOLS::sqr(args.m_pi[0]) < mi2
0041       || ATOOLS::sqr(args.m_pj[0]) < mj2
0042       || ATOOLS::sqr(args.m_pk[0]) < mk2) {
0043     msg_IODebugging() << METHOD << "(): Less energy than mass found\n";
0044     return false;
0045       }
0046       return true;
0047     }
0048   };
0049 
0050   class Kinematics_FF : public Kinematics_Base {
0051   public:
0052     Kinematics_FF() {}
0053     virtual ~Kinematics_FF() {}
0054     int MakeKinematics(Parton *const,const ATOOLS::Flavour &,const ATOOLS::Flavour &,Parton *&);
0055     double GetY(const double &Q2,const double &kt2,const double &z,
0056         const double &s1,const double &s2,const double &s3,
0057         const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc,
0058         const bool force=false) const;
0059     double GetKT2(const double &Q2,const double &y,const double &z,
0060           const double &mi2,const double &mj2,const double &mk2,
0061           const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc) const;
0062   };
0063   
0064   class Kinematics_FI : public Kinematics_Base {
0065   public:
0066     Kinematics_FI() {}
0067     virtual ~Kinematics_FI() {}
0068     int MakeKinematics(Parton *const,const ATOOLS::Flavour &,const ATOOLS::Flavour &,Parton *&);
0069     double GetY(const double &Q2,const double &kt2,const double &z,
0070         const double &s1,const double &s2,const double &s3,
0071         const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc,
0072         const bool force=false) const;
0073     double GetKT2(const double &Q2,const double &y,const double &z,
0074           const double &mi2,const double &mj2,const double &ma2,
0075           const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc) const;
0076   };
0077 
0078   class Kinematics_IF : public Kinematics_Base {
0079   public:
0080     Kinematics_IF() {}
0081     virtual ~Kinematics_IF() {}
0082     int MakeKinematics(Parton *const,const ATOOLS::Flavour &,const ATOOLS::Flavour &,Parton *&);
0083     double GetY(const double &Q2,const double &kt2,const double &z,
0084         const double &s1,const double &s2,const double &s3,
0085         const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc,
0086         const bool force=false) const;
0087     double GetKT2(const double &Q2,const double &y,const double &z,
0088           const double &ma2,const double &mi2,const double &mk2,
0089           const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc) const;
0090   };
0091 
0092   class Kinematics_II : public Kinematics_Base {
0093   public:
0094     Kinematics_II() {}
0095     virtual ~Kinematics_II() {}
0096     int MakeKinematics(Parton *const,const ATOOLS::Flavour &,const ATOOLS::Flavour &,Parton *&);
0097     double GetY(const double &Q2,const double &kt2,const double &z,
0098         const double &s1,const double &s2,const double &s3,
0099         const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc,
0100         const bool force=false) const;
0101     double GetKT2(const double &Q2,const double &y,const double &z,
0102           const double &ma2,const double &mi2,const double &mb2,
0103           const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc) const;
0104   };
0105 }
0106 
0107 #endif