Back to home page

EIC code displayed by LXR

 
 

    


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

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