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 };
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 };
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 }
0059
0060 #endif