Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHASIC__Process__Massive_Kernels_H
0002 #define PHASIC__Process__Massive_Kernels_H
0003 
0004 #include "ATOOLS/Phys/NLO_Types.H"
0005 #include <vector>
0006 #include <cstddef>
0007 
0008 namespace PHASIC {
0009 
0010   class Flavour_Kernels {
0011   protected:
0012   public:
0013     Flavour_Kernels();
0014     ~Flavour_Kernels();
0015   };
0016 
0017   class I_Kernels : public Flavour_Kernels {
0018   protected:
0019   public:
0020     I_Kernels();
0021     ~I_Kernels();
0022   };
0023 
0024   class KP_Kernels : public Flavour_Kernels {
0025   protected:
0026   public:
0027     KP_Kernels();
0028     ~KP_Kernels();
0029   };
0030 
0031   class Massive_Kernels {
0032   protected:
0033     const ATOOLS::sbt::subtype m_stype;
0034     ATOOLS::subscheme::code m_subtype;
0035     size_t m_nf,m_nmf;
0036     double m_NC,m_CA,m_CF,m_TR,m_TRbyCA,m_CFbyCA,m_TRbyCF;
0037     double m_g1t,m_g2t,m_g3t,m_K1t,m_K2t,m_K3t;
0038     double m_beta0qcd, m_beta0qed;
0039     double m_alpha_ff,m_alpha_fi,m_alpha_if,m_alpha_ii,m_kappa;
0040     double m_logaff,m_logafi,m_logaif,m_logaii;
0041     double m_VNS,m_gKterm,m_aterm;
0042     double p_VS[3],p_Gammat[2];
0043     std::vector<double> m_massflav, m_cpls;
0044     int    m_Vsubmode,m_collVFF;
0045 
0046     inline double Lambda(double x, double y, double z)
0047     { return x*x+y*y+z*z-2.*(x*y+x*z+y*z); }
0048 
0049     void CalcVS(ATOOLS::ist::itype type, double s, double mj, double mk);
0050     void CalcVNS(ATOOLS::ist::itype type, double s, double mj, double mk,
0051                  bool ini);
0052     void CalcVNSq(double s, double mj, double mk);
0053     void CalcVNSg(double s, double mk, bool ini);
0054     void CalcVNSs(double s, double mj, double mk);
0055     void CalcGamma(ATOOLS::ist::itype type, double mu2, double s, double m);
0056     void CalcgKterm(ATOOLS::ist::itype type, double mu2, double s, double mj,
0057                     bool mode);
0058     void CalcAterms(ATOOLS::ist::itype type, double mu2, double s,
0059                     double mj,double mk,bool inij,bool inik);
0060     void CalcAq(double mu2, double s,double mj,double mk);
0061     void CalcAg(double mu2, double s,double mk);
0062     void CalcAs(double mu2, double s,double mj,double mk);
0063   public:
0064     Massive_Kernels(ATOOLS::sbt::subtype st,
0065                     const size_t &nf, const size_t nmf);
0066     ~Massive_Kernels() {}
0067 
0068     void SetAlpha(double aff, double afi, double aif, double aii); 
0069     void SetNC(const double &n);
0070     void SetSubType(const ATOOLS::subscheme::code type);
0071 
0072     inline void   SetKappa(double k)                { m_kappa=k; }
0073 
0074     inline void   SetNf(size_t nf)                  { m_nf=nf; }
0075     inline void   SetNmf(size_t nmf)                { m_nmf=nmf; }
0076     inline size_t Nf()                              { return m_nf; }
0077     inline size_t Nmf()                             { return m_nmf; }
0078     inline double FMass(size_t i)                   { return m_massflav[i]; }
0079     inline void   SetVSubtractionMode(int vsm)      { m_Vsubmode=vsm; }
0080     inline void   SetCollinearVFFSplitting(int csm) { m_collVFF=csm; }
0081 
0082     void Calculate(ATOOLS::ist::itype t, double mu2, double s,
0083                    double mj, double mk,
0084                    bool inij, bool inik, bool mode);
0085 
0086     double I_Fin();
0087     double I_E1();
0088     double I_E2();
0089 
0090     // Kbar
0091     double Kb1(int type,double x);
0092     double Kb2(int type);
0093     double Kb3(int type,double x);
0094     double Kbc3(int type,double muq2,double x);
0095     double Kb4(int type,double x);
0096 
0097     // K_FS
0098     double KFS1(int type,double x);
0099     double KFS2(int type);
0100     double KFS3(int type,double x);
0101     double KFS4(int type,double x);
0102 
0103     // Kcal
0104     double Kc1(int type,int typej,double muja2,double x);
0105     double Kc2(int type,int typej,double muja2);
0106     double Kc3(int type,int typej,double muja2,double x);
0107     double Kc4(int type,int typej,double muja2,double x);
0108 
0109     // Kbar_M
0110     double KbM1(int type,double muak2,double x);
0111     double KbM2(int type,double muak2);
0112     double KbM3(int type,double muak2,double x);
0113     double KbM4(int type,double muak2,double x);
0114 
0115     // Ktilde
0116     double Kt1(int type,double x);
0117     double Kt2(int type);
0118     double Kt3(int type,double x);
0119     double Kt4(int type,double x);
0120 
0121     // P
0122     double P1(int type,double x);
0123     double P2(int type);
0124     double P3(int type,double x);
0125     double P4(int type,double x);
0126 
0127     double t1(int type,int spin,double muq,double x);
0128     double t2(int type,int spin,double muq);
0129     double t2c(int type,int spin,double muq2,double saj);
0130     double t3(int type,int spin,double muq,double x);
0131     double t4(int type,int spin,double muq,double x);
0132     double t5(int type,double x,double xp);
0133     double t6(int type,double xp);
0134     double t7(int type,double x,double xp);
0135 
0136     double at1(int type,int spin,double muq,double x);
0137     double at2(int type,int spin,double muq);
0138     double at3(int type,int spin,double muq,double x);
0139     double at4(int type,int spin,double muq,double x);
0140 
0141     inline void   SetCpls(std::vector<double> cpls) { m_cpls=cpls; }
0142     inline double Cpl(size_t i)                     { return m_cpls[i]; }
0143 
0144     inline double NC() const                        { return m_NC; }
0145     inline double CF() const                        { return m_CF; }
0146     inline double CA() const                        { return m_CA; }
0147     inline double TR() const                        { return m_TR; }
0148     inline double Beta0QCD() const                  { return m_beta0qcd; }
0149     inline double Beta0QED() const                  { return m_beta0qed; }
0150 
0151     /*
0152       function key: (old)
0153       Kb<x> = {\bar K}
0154       t<x>  = (1/(1-x)_+ + delta(1-x))
0155       Kt<x> = {\tilde K}
0156       P<x>  = P(x)/T^2
0157 
0158       <x>:  (distribution type)
0159        1    g(x)
0160        2    h
0161        3    k(x)
0162        4    G(eta)
0163 
0164       int type: (flavour combination a a')
0165        1     q q
0166        2     g q
0167        3     q g
0168        4     g g
0169     */
0170   };
0171 }
0172 #endif