a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
LoopToolsWrapper.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include <iostream>
9 #include <stdexcept>
10 #include <complex>
11 #include "PVfunctions.h" // needed for USE_LOOPTOOLS macro
12 #include "LoopToolsWrapper.h"
13 #ifdef USE_LOOPTOOLS
14 #include <clooptools.h>
15 static bool LoopToolsInit = false;
16 #endif
17 
18 
20 {
21 #ifdef USE_LOOPTOOLS
22  if (!LoopToolsInit) {
23  //std::cout << std::endl;
24  ltini();
25  std::cout << std::endl;
26  LoopToolsInit = true;
27  }
28 
29  /* set the photon mass regulating IR divergences to 0, which means that
30  * dimensional regularization is employed for IR divergences and that
31  * the finite piece is returned from an IR-divergent loop function. */
32  setlambda(0.0);
33 #endif
34 }
35 
37 {
38  //#ifdef USE_LOOPTOOLS
39  // for debug
40  //std::cout << std::endl
41  // << "************* LoopTools ****************" << std::endl;
42  //ltexi();
43  //std::cout << "****************************************" << std::endl;
44  //#endif
45 }
46 
47 #ifdef USE_LOOPTOOLS
48 
49 double LoopToolsWrapper::PV_A0(const double mu2, const double m2) const
50 {
51  setmudim(mu2);
52  std::complex<double> A0val = A0(m2);
53  return ( A0val.real() );
54 }
55 
56 gslpp::complex LoopToolsWrapper::PV_B0(const double mu2, const double p2,
57  const double m02, const double m12) const
58 {
59  setmudim(mu2);
60  std::complex<double> B0val = B0(p2, m02, m12);
61  return gslpp::complex( B0val.real(), B0val.imag(), false );
62 }
63 
64 gslpp::complex LoopToolsWrapper::PV_B1(const double mu2, const double p2,
65  const double m02, const double m12) const
66 {
67  setmudim(mu2);
68  std::complex<double> B1val = B1(p2, m02, m12);
69  return gslpp::complex( B1val.real(), B1val.imag(), false );
70 }
71 
72 gslpp::complex LoopToolsWrapper::PV_B11(const double mu2, const double p2,
73  const double m02, const double m12) const
74 {
75  setmudim(mu2);
76  std::complex<double> B11val = B11(p2, m02, m12);
77  return gslpp::complex( B11val.real(), B11val.imag(), false );
78 }
79 
80 gslpp::complex LoopToolsWrapper::PV_B00(const double mu2, const double p2,
81  const double m02, const double m12) const
82 {
83  setmudim(mu2);
84  std::complex<double> B00val = B00(p2, m02, m12);
85  return gslpp::complex( B00val.real(), B00val.imag(), false );
86 }
87 
88 gslpp::complex LoopToolsWrapper::PV_B0p(const double muIR2, const double p2,
89  const double m02, const double m12) const
90 {
91  setmudim(muIR2);
92  std::complex<double> B0pval = DB0(p2, m02, m12);
93  return gslpp::complex( B0pval.real(), B0pval.imag(), false );
94 }
95 
96 gslpp::complex LoopToolsWrapper::PV_B1p(const double mu2, const double p2,
97  const double m02, const double m12) const
98 {
99  setmudim(mu2);
100  std::complex<double> B1pval = DB1(p2, m02, m12);
101  return gslpp::complex( B1pval.real(), B1pval.imag(), false );
102 }
103 
104 gslpp::complex LoopToolsWrapper::PV_B11p(const double mu2, const double p2,
105  const double m02, const double m12) const
106 {
107  setmudim(mu2);
108  std::complex<double> B11pval = DB11(p2, m02, m12);
109  return gslpp::complex( B11pval.real(), B11pval.imag(), false );
110 }
111 
112 gslpp::complex LoopToolsWrapper::PV_B00p(const double mu2, const double p2,
113  const double m02, const double m12) const
114 {
115  setmudim(mu2);
116  std::complex<double> B00pval = DB00(p2, m02, m12);
117  return gslpp::complex( B00pval.real(), B00pval.imag(), false );
118 }
119 
121  const double m02, const double m12, const double m22) const
122 {
123  std::complex<double> C0val = C0(0.0, 0.0, p2, m02, m12, m22);
124  return gslpp::complex( C0val.real(), C0val.imag(), false );
125 }
126 
127 gslpp::complex LoopToolsWrapper::PV_D0(const double s, const double t, const double m02,
128  const double m12, const double m22, const double m32) const
129 {
130  std::complex<double> D0val = D0(0.0, 0.0, 0.0, 0.0, s, t, m02, m12, m22, m32);
131  return gslpp::complex( D0val.real(), D0val.imag(), false );
132 }
133 
134 gslpp::complex LoopToolsWrapper::PV_D00(const double s, const double t, const double m02,
135  const double m12, const double m22, const double m32) const
136 {
137 // cannot be compiled?
138 // std::complex<double> D00val = D0i(dd00, 0.0, 0.0, 0.0, 0.0, s, t, m02, m12, m22, m32);
139 // return gslpp::complex( D00val.real(), D00val.imag(), false );
140 
141  throw std::runtime_error("LoopToolsWrapper::PV_D00: Not implemented!");
142 }
143 
144 #endif // #ifdef USE_LOOPTOOLS
145 
146 
LoopToolsWrapper::PV_C0
gslpp::complex PV_C0(const double p2, const double m02, const double m12, const double m22) const
.
Definition: LoopToolsWrapper.cpp:120
LoopToolsWrapper::PV_B00
gslpp::complex PV_B00(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:80
LoopToolsWrapper::PV_D0
gslpp::complex PV_D0(const double s, const double t, const double m02, const double m12, const double m22, const double m32) const
.
Definition: LoopToolsWrapper.cpp:127
LoopToolsWrapper::PV_B11
gslpp::complex PV_B11(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:72
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
PVfunctions.h
LoopToolsWrapper.h
LoopToolsWrapper::PV_D00
gslpp::complex PV_D00(const double s, const double t, const double m02, const double m12, const double m22, const double m32) const
.
Definition: LoopToolsWrapper.cpp:134
LoopToolsWrapper::LoopToolsWrapper
LoopToolsWrapper()
The default constructor.
Definition: LoopToolsWrapper.cpp:19
LoopToolsWrapper::PV_B1p
gslpp::complex PV_B1p(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:96
LoopToolsWrapper::PV_B11p
gslpp::complex PV_B11p(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:104
LoopToolsWrapper::PV_B1
gslpp::complex PV_B1(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:64
LoopToolsWrapper::PV_A0
double PV_A0(const double mu2, const double m2) const
.
Definition: LoopToolsWrapper.cpp:49
LoopToolsWrapper::PV_B00p
gslpp::complex PV_B00p(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:112
LoopToolsWrapper::PV_B0p
gslpp::complex PV_B0p(const double muIR2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:88
LoopToolsWrapper::PV_B0
gslpp::complex PV_B0(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: LoopToolsWrapper.cpp:56
LoopToolsWrapper::~LoopToolsWrapper
virtual ~LoopToolsWrapper()
The default destructor.
Definition: LoopToolsWrapper.cpp:36