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
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
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
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
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
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
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
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170 };
0171 }
0172 #endif