File indexing completed on 2025-04-19 09:10:10
0001 #ifndef PHASIC__Process__KP_Terms_H
0002 #define PHASIC__Process__KP_Terms_H
0003
0004 #include "PHASIC++/Process/Process_Base.H"
0005 #include "PHASIC++/Process/Massive_Kernels.H"
0006 #include "MODEL/Main/Coupling_Data.H"
0007 #include "PDF/Main/NLOMC_Base.H"
0008
0009 namespace PDF { class PDF_Base; }
0010
0011 namespace PHASIC {
0012
0013 struct xp_coeff {
0014 double xp;
0015 double kpc;
0016 };
0017
0018 class KP_Terms {
0019 private:
0020 ATOOLS::sbt::subtype m_stype;
0021 ATOOLS::cs_itype::type m_itype;
0022 ATOOLS::cs_kcontrib::type m_kcontrib;
0023 ATOOLS::subscheme::code m_subtype;
0024
0025 Process_Base *p_proc;
0026 PDF::NLOMC_Base *p_nlomc;
0027 Massive_Kernels *p_kernel;
0028
0029 MODEL::Coupling_Data *p_cpl;
0030
0031 ATOOLS::Flavour_Vector m_flavs;
0032
0033 bool m_massive, m_cemode, m_negativepdf;
0034 double m_kpca[8], m_kpcb[8], m_cpldef, m_NC;
0035 int m_Vsubmode, m_facscheme;
0036 bool m_sa,m_sb;
0037 int m_typea, m_typeb;
0038
0039 std::vector<size_t> m_plist;
0040
0041 std::vector<xp_coeff> m_xpa, m_xpb;
0042
0043 void RegisterDefaults() const;
0044 void SetColourFactors();
0045 void SetMassive();
0046
0047 public:
0048
0049 KP_Terms(Process_Base *const proc,const ATOOLS::sbt::subtype st,
0050 const std::vector<size_t>& partonlist);
0051
0052 ~KP_Terms();
0053
0054 void SetCoupling(const MODEL::Coupling_Map *cpls);
0055
0056 void Calculate(const ATOOLS::Vec4D_Vector &mom,
0057 const std::vector<std::vector<double > > &dsij,
0058 const double &x0,const double &x1,
0059 const double &eta0,const double &eta1,
0060 const double &wgt);
0061
0062 double Get(PDF::PDF_Base *pdfa, PDF::PDF_Base *pdfb,
0063 const double &x0,const double &x1,
0064 const double &eta0,const double &eta1,
0065 const double &muf02,const double &muf12,
0066 const double &muf02fac,const double &muf12fac,
0067 const ATOOLS::Flavour &fl0,const ATOOLS::Flavour &fl1);
0068
0069 void SetAlpha(const double &aff,const double &afi,
0070 const double &aif,const double &aii);
0071 void SetKappa(const double &kappa);
0072 void SetNLOMC(PDF::NLOMC_Base *const nlomc);
0073
0074 void FillMEwgts(ATOOLS::ME_Weight_Info &wgt);
0075
0076 inline double Coupling() const { return m_cpldef*p_cpl->Factor(); }
0077
0078 inline Massive_Kernels *Kernel() const { return p_kernel; }
0079
0080 inline void SetIType(ATOOLS::cs_itype::type itype) { m_itype=itype; }
0081
0082 };
0083
0084 };
0085
0086 #endif