Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of class KP_Terms
0083 
0084 };// end of namespace PHASIC
0085 
0086 #endif