herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
HiggsLoopFunctions.h
1 #include "ThePEG/Config/Constants.h"
2 
3 namespace Herwig {
4 using namespace ThePEG;
5 
6 
13  namespace HiggsLoopFunctions {
14 
18  const Complex epsi = Complex(0.,-1.e-20);
19 
25  Complex W1(Energy2 s,Energy2 mf2) {
26  double root = sqrt(abs(1.-4.*mf2/s));
27  if(s<ZERO) return 2.*root*asinh(0.5*sqrt(-s/mf2));
28  else if(s<4.*mf2) return 2.*root*asin(0.5*sqrt( s/mf2));
29  else return root*(2.*acosh(0.5*sqrt(s/mf2))
30  -Constants::pi*Complex(0.,1.));
31  }
32 
38  Complex W2(Energy2 s,Energy2 mf2) {
39  double root=0.5*sqrt(abs(s)/mf2);
40  if(s<ZERO) return 4.*sqr(asinh(root));
41  else if(s<4.*mf2) return -4.*sqr(asin(root));
42  else return 4.*sqr(acosh(root))-sqr(Constants::pi)
43  -4.*Constants::pi*acosh(root)*Complex(0.,1.);
44  }
45 
54  Complex I3(Energy2 s, Energy2 t, Energy2 u, Energy2 v, Energy2 mf2) {
55  double ratio=(4.*mf2*t/(u*s)),root(sqrt(1+ratio));
56  if(v==ZERO) return 0.;
57  Complex y=0.5*(1.+sqrt(1.-4.*(mf2+epsi*MeV*MeV)/v));
58  Complex xp=0.5*(1.+root),xm=0.5*(1.-root);
59  Complex output =
60  Math::Li2(xm/(xm-y))-Math::Li2(xp/(xp-y))+
61  Math::Li2(xm/(y-xp))-Math::Li2(xp/(y-xm))+
62  log(-xm/xp)*log(1.-epsi-v/mf2*xp*xm);
63  return output*2./root;
64  }
65 
74  Complex W3(Energy2 s, Energy2 t, Energy2 u, Energy2 v, Energy2 mf2) {
75  return I3(s,t,u,v,mf2)-I3(s,t,u,s,mf2)-I3(s,t,u,u,mf2);
76  }
77 
85  Complex b2(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) {
86  Energy2 mh2(s+u+t);
87  complex<Energy2> output=s*(u-s)/(s+u)+2.*u*t*(u+2.*s)/sqr(s+u)*(W1(t,mf2)-W1(mh2,mf2))
88  +(mf2-0.25*s)*(0.5*(W2(s,mf2)+W2(mh2,mf2))-W2(t,mf2)+W3(s,t,u,mh2,mf2))
89  +sqr(s)*(2.*mf2/sqr(s+u)-0.5/(s+u))*(W2(t,mf2)-W2(mh2,mf2))
90  +0.5*u*t/s*(W2(mh2,mf2)-2.*W2(t,mf2))
91  +0.125*(s-12.*mf2-4.*u*t/s)*W3(t,s,u,mh2,mf2);
92  return output*mf2/sqr(mh2);
93  }
94 
102  Complex b4(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) {
103  Energy2 mh2(s+t+u);
104  return mf2/mh2*(-2./3.+(mf2/mh2-0.25)*(W2(t,mf2)-W2(mh2,mf2)+W3(s,t,u,mh2,mf2)));
105  }
106 
112  Complex A1(Energy2 mh2, Energy2 mf2) {
113  return mf2/mh2*(4.-W2(mh2,mf2)*(1.-4.*mf2/mh2));
114  }
115 
123  Complex A2(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) {
124  return b2(s,t,u,mf2)+b2(s,u,t,mf2);
125  }
126 
134  Complex A4(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) {
135  return b4(s,t,u,mf2)+b4(u,s,t,mf2)+b4(t,u,s,mf2);
136  }
137  }
138 }
double sqrt(int x)
std::complex< double > Complex
Complex W2(Energy2 s, Energy2 mf2)
The function of NPB297 (1988) 221-243.
constexpr auto sqr(const T &x) -> decltype(x *x)
Complex b4(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2)
The function of NPB297 (1988) 221-243.
Complex b2(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2)
The function of NPB297 (1988) 221-243.
Complex Li2(Complex)
The dilog function taken from FORTRAN Herwig.
Complex A4(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2)
The function of NPB297 (1988) 221-243.
Complex W1(Energy2 s, Energy2 mf2)
The function of NPB297 (1988) 221-243.
-*- C++ -*-
Complex W3(Energy2 s, Energy2 t, Energy2 u, Energy2 v, Energy2 mf2)
The function of NPB297 (1988) 221-243.
Complex I3(Energy2 s, Energy2 t, Energy2 u, Energy2 v, Energy2 mf2)
The function of NPB297 (1988) 221-243.
const Complex epsi
Epsilon parameter.
constexpr ZeroUnit ZERO