Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef METOOLS__Explicit__Dipole_Terms_H
0002 #define METOOLS__Explicit__Dipole_Terms_H
0003 
0004 #include "ATOOLS/Math/Vector.H"
0005 #include <iostream>
0006 
0007 namespace METOOLS {
0008 
0009   struct NLO_Value {
0010     double m_e2, m_e1, m_f;
0011     inline NLO_Value(const double &e2=0.0,
0012              const double &e1=0.0,
0013              const double &f=0.0):
0014       m_e2(e2), m_e1(e1), m_f(f) {}
0015     inline NLO_Value &operator+=(const NLO_Value &v)
0016     { m_e2+=v.m_e2; m_e1+=v.m_e1; m_f+=v.m_f; return *this; }
0017     inline NLO_Value &operator*=(const double &d)
0018     { m_e2*=d; m_e1*=d; m_f*=d; return *this; }
0019   };// end of struct NLO_Value
0020 
0021   inline NLO_Value operator+(const NLO_Value &v1,const NLO_Value &v2)
0022   { return NLO_Value(v1.m_e2+v2.m_e2,v1.m_e1+v2.m_e1,v1.m_f+v2.m_f); }
0023   inline NLO_Value operator*(const double &d,const NLO_Value &v)
0024   { return NLO_Value(v.m_e2*d,v.m_e1*d,v.m_f*d); }
0025 
0026   std::ostream &operator<<(std::ostream &str,const NLO_Value &v);
0027 
0028   struct I_Args {
0029     double Q, Q2, s, mij, mij2, mk, mk2;
0030     double v, r, r2, rj2, rk2, Qa2;
0031     int type;
0032     I_Args(const ATOOLS::Vec4D &pij,const ATOOLS::Vec4D &pk,
0033        const double &_mij, const double &_mk);
0034     void Swap();
0035   };// end of struct I_Args
0036 
0037   class Dipole_Info;
0038 
0039   NLO_Value FFVS(const I_Args &a,const Dipole_Info *info);
0040 
0041   double FFAE(const I_Args &a,const Dipole_Info *info);
0042 
0043   NLO_Value FFQQ(const I_Args &a,const Dipole_Info *info);
0044   NLO_Value FFGQQ(const I_Args &a,const Dipole_Info *info);
0045   double    FFVNSQQ(const I_Args &a,const Dipole_Info *info);
0046   double    FFACQQ(const I_Args &a,const Dipole_Info *info);
0047 
0048   NLO_Value FFGQ(const I_Args &a,const Dipole_Info *info,const double &m);
0049   NLO_Value FFGGQ(const I_Args &a,const Dipole_Info *info,const double &m);
0050   double    FFVNSGQ(const I_Args &a,const Dipole_Info *info,const double &m);
0051   double    FFACGQ(const I_Args &a,const Dipole_Info *info,const double &m);
0052 
0053   NLO_Value FFGG(const I_Args &a,const Dipole_Info *info);
0054   NLO_Value FFGGG(const I_Args &a,const Dipole_Info *info);
0055   double    FFVNSGG(const I_Args &a,const Dipole_Info *info);
0056   double    FFACGG(const I_Args &a,const Dipole_Info *info);
0057 
0058 }// end of namespace METOOLS
0059 
0060 #endif