gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
Gambit::FlavBit::LoopFunctions Namespace Reference

Functions

double G1 (const double x)
 
double G1 (const double a, const double b, const double c)
 
double MFVV (const double a, const double b)
 
double B1 (const double a, const double b, const double Q)
 
double B0 (const double a, const double b, const double Q)
 
double C0 (const double a, const double b, const double c)
 
double C00 (const double a, const double b, const double c, const double Q)
 
double B02C00C0 (const double a, const double b, const double c, const double Q)
 
double D0 (const double a, const double b, const double c, const double d)
 
double D27 (const double a, const double b, const double c, const double d)
 
double IC0D0 (const double a, const double b, const double c, const double d)
 
double E (const double x, const double y)
 

Function Documentation

◆ B0()

double Gambit::FlavBit::LoopFunctions::B0 ( const double  a,
const double  b,
const double  Q 
)

Definition at line 69 of file flav_loop_functions.hpp.

References Gambit::Scanner::pow().

Referenced by B02C00C0(), mt2_bisect::mt2::nsols(), mt2_bisect::mt2::nsols_massless(), mt2w_bisect::mt2w::teco(), Gambit::FlavBit::Penguins::VZw10LL(), and Gambit::FlavBit::Penguins::VZw8LL().

70  {
71  // TODO: behaviour when a = 0 and b = 0 undefined
72  if(a == 0 and b == 0)
73  return 0;
74  else if(a == b)
75  return -log(b / pow(Q,2));
76  else if(a == 0)
77  return 1. - log(b / pow(Q,2));
78  else if(b == 0)
79  return 1. - log(a) - log(1./pow(Q,2));
80  else
81  return 1. - log(b / pow(Q,2)) + 1./(b-a) * a * log(a/b);
82  }
START_MODEL b
Definition: demo.hpp:270
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ B02C00C0()

double Gambit::FlavBit::LoopFunctions::B02C00C0 ( const double  a,
const double  b,
const double  c,
const double  Q 
)

Definition at line 149 of file flav_loop_functions.hpp.

References B0(), C0(), C00(), and Gambit::Scanner::pow().

Referenced by Gambit::FlavBit::Penguins::VZw10LL().

150  {
151  if(a == 0 and b == 0)
152  return 0.25*(1.0 - 2.0*log(c) - 2.0*log(1 / pow(Q,2)));
153  else
154  return B0(a,b,Q) - 2*C00(a,b,c,Q) + C0(a,b,c)*c;
155  }
START_MODEL b
Definition: demo.hpp:270
double C0(const double a, const double b, const double c)
double B0(const double a, const double b, const double Q)
double C00(const double a, const double b, const double c, const double Q)
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ B1()

double Gambit::FlavBit::LoopFunctions::B1 ( const double  a,
const double  b,
const double  Q 
)

Definition at line 59 of file flav_loop_functions.hpp.

References Gambit::Scanner::pow().

Referenced by mt2_bisect::mt2::nsols(), mt2_bisect::mt2::nsols_massless(), Gambit::FlavBit::Penguins::Shw2w4LL(), Gambit::FlavBit::Penguins::Shw2w4RR(), mt2w_bisect::mt2w::teco(), Gambit::FlavBit::Penguins::VZw2w4LL(), and Gambit::FlavBit::Penguins::VZw2w4RR().

60  {
61  if(a == b)
62  return 0.5 * log(b / pow(Q,2));
63  else if(a == 0)
64  return -0.25 + 0.5*log(b / pow(Q,2));
65  else
66  return -0.5 + 0.5*log(b / pow(Q,2)) - (a*a - b*b + 2.*a*a*log(b/a)) / (4.*pow(a-b,2));
67  }
START_MODEL b
Definition: demo.hpp:270
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ C0()

double Gambit::FlavBit::LoopFunctions::C0 ( const double  a,
const double  b,
const double  c 
)

Definition at line 84 of file flav_loop_functions.hpp.

References b, and Gambit::Scanner::pow().

Referenced by B02C00C0(), IC0D0(), mt2_bisect::mt2::nsols(), mt2_bisect::mt2::nsols_massless(), mt2w_bisect::mt2w::teco(), Gambit::FlavBit::Penguins::VZw10LL(), and Gambit::FlavBit::Penguins::VZw8LL().

85  {
86  // TODO: behaviour when two paramers are 0 undefined, set it to zero
87  if(a == 0 and b == 0 and c == 0)
88  return 0;
89  if(a == 0 and b == 0)
90  return 0;
91  else if(a == 0 and c == 0)
92  return 0;
93  else if(b == 0 and c == 0)
94  return 0;
95  else if(c == 0)
96  return C0(a,c,b);
97  else if(a == b and b == c)
98  return - 1./(2*c);
99  else if(a == b)
100  return (-b + c- c*log(c/b)) / pow(b-c,2);
101  else if(a == c and b != 0)
102  return C0(a,c,b);
103  else if(a == c and b == 0)
104  return -1./c;
105  else if(b == c and a != 0)
106  return (a - c + a*log(c/a)) / pow(a-c,2);
107  else if(b == c and a == 0)
108  return -1./c;
109  else if(a == 0)
110  return (-log(b) + log(c)) / (b-c);
111  else if(b == 0)
112  return log(c/a)/(a-c);
113  else
114  return -1. / (a-b)*(a-c)*(b-c)*( b*(c-a)*log(b/a) + c*(a-b)*log(c/a));
115  }
START_MODEL b
Definition: demo.hpp:270
double C0(const double a, const double b, const double c)
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ C00()

double Gambit::FlavBit::LoopFunctions::C00 ( const double  a,
const double  b,
const double  c,
const double  Q 
)

Definition at line 117 of file flav_loop_functions.hpp.

References b, and Gambit::Scanner::pow().

Referenced by B02C00C0(), Gambit::FlavBit::Penguins::VZw10LL(), and Gambit::FlavBit::Penguins::VZw8LL().

118  {
119  // TODO: behaviour when all three parameters are zero is undefined, set it to zero
120  if(a == 0 and b == 0 and c == 0)
121  return 0;
122  else if(b == 0 and c == 0)
123  return 0.125*(3. - 2.*log(a/pow(Q,2)));
124  else if(a == 0 and b == 0)
125  return 0.125*(3. - 2.*log(c) - 2.*log(1./pow(Q,2)));
126  else if(c == 0)
127  return C00(a,c,b,Q);
128  else if(a == b and b == c)
129  return -0.25*log(c/pow(Q,2));
130  else if(a == b)
131  return - (2.*c*c*log(c/b) + (b-c)*(-b + 3.*c + 2.*(b-c)*log(b/pow(Q,2))))/(8.*pow(b-c,2));
132  else if(a == c and b != 0)
133  return C00(a,c,b,Q);
134  else if(a == c and b == 0)
135  return 0.125*(1. - 2.*log(c/pow(Q,2)));
136  else if(b == c and a != 0)
137  return (2.*(2.*a-c)*c*log(c/a)-(a-c)*(-3.*a+c+2.*(a-c)*log(a/pow(Q,2))))/(8.*pow(a-c,2));
138  else if(b == c and a == 0)
139  return 0.125*(1. - 2.*log(c) - 2.*log(1./pow(Q,2)));
140  else if(a == 0)
141  return -(2.*b*log(b) - 2.*c*log(c) + (b-c)*(-3.+2.*log(1./pow(Q,2))))/(8.*(b-c));
142  else if(b == 0)
143  return (2.*c*log(c/a) - (a-c)*(-3. + 2.*log(a/pow(Q,2))))/(8.*(a-c));
144  else
145  return 1. / (8.*(a-b)*(a-c)*(b-c)) * ( (c-a)*((a-b)*(2.*log(a/pow(Q,2))-3.)*(b-c) - 2.*b*b*log(b/a)) + 2.*c*c*(b-a)*log(c/a));
146  }
START_MODEL b
Definition: demo.hpp:270
double C00(const double a, const double b, const double c, const double Q)
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ D0()

double Gambit::FlavBit::LoopFunctions::D0 ( const double  a,
const double  b,
const double  c,
const double  d 
)

Definition at line 157 of file flav_loop_functions.hpp.

References b, and Gambit::Scanner::pow().

Referenced by IC0D0(), mt2_bisect::mt2::nsols(), mt2_bisect::mt2::nsols_massless(), mt2w_bisect::mt2w::teco(), and Gambit::FlavBit::Boxes::Vw8lLL().

158  {
159  //TODO: behaviour when two or more parameters are zero is undefined, set it to zero
160  if((!a and !b) or (!b and !c) or (!b and !d) or (!c and !d))
161  return 0;
162  else if(c == 0)
163  return D0(a,c,b,d);
164  else if(d == 0)
165  return D0(a,d,c,b);
166  else if(a == b and b == c and c == d)
167  return 1. / (6.*d*d);
168  else if(a == b and b == c)
169  return D0(a,d,c,d);
170  else if(a == b and b == d)
171  return D0(a,c,b,d);
172  else if(a == c and c == d and b == 0)
173  return 1. / (2.*c*c);
174  else if(a == c and c == d and b != 0)
175  return (-b*b + c*c + 2.*b*c*log(b/c)) / (2.*c*pow(c-b,3));
176  else if(b == c and c == d and a == 0)
177  return 1. / (2.*d*d);
178  else if(b == c and c == d and a != 0)
179  return (a*a - d*d + 2.*a*d*log(d/a)) / (2.*d*pow(a-d,3));
180  else if(a == d and b == c)
181  return (-2*c + 2*d + (c+d)*log(c/d)) / pow(c-d,3);
182  else if(a == d and b == 0)
183  return (c - d -d*log(c/d)) / (pow(c-d,2)*d);
184  else if(a == d)
185  return 1./ ((b-d)*(d-c))-(b*log(b/d))/((b-c)*pow(b-d,2))+(c*log(c/d))/((b-c)*pow(c-d,2));
186  else if(a == c)
187  return D0(a,b,d,c);
188  else if(a == b)
189  return D0(a,d,c,b);
190  else if(b == c)
191  return D0(a,d,c,b);
192  else if(b == d)
193  return D0(a,c,b,d);
194  else if(c == d and b == 0)
195  return (a - d + d*log(d/a)) / (d*pow(a-d,2));
196  else if(c == d and a == 0)
197  return (b - d + d*log(d/b)) / (d*pow(b-d,2));
198  else if(c == d)
199  return (b*pow(a-d,2)*log(b/a) - (a-b)*( (a-d)*(b-d) + (a*b-d*d)*log(d/a) )) / ((a-b)*pow(a-d,2)*pow(b-d,2));
200  else if(b == 0)
201  return log(c/a)/((a-c)*(c-d)) + log(d/a)/((a-d)*(d-c));
202  else if(a == 0)
203  return ((d-c)*log(b) + (b-d)*log(c) + (c-b)*log(d))/((b-c)*(b-d)*(c-d));
204  else
205  return -(b*log(b/a)/((b-a)*(b-c)*(b-d)) + c*log(c/a)/((c-a)*(c-b)*(c-d)) + d*log(d/a)/((d-a)*(d-b)*(d-c)));
206  }
double D0(const double a, const double b, const double c, const double d)
START_MODEL b
Definition: demo.hpp:270
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ D27()

double Gambit::FlavBit::LoopFunctions::D27 ( const double  a,
const double  b,
const double  c,
const double  d 
)

Definition at line 208 of file flav_loop_functions.hpp.

References b, and Gambit::Scanner::pow().

Referenced by Gambit::FlavBit::Boxes::Vw4dLL(), Gambit::FlavBit::Boxes::Vw4lLL(), and Gambit::FlavBit::Boxes::Vw4uLL().

209  {
210  //TODO: behaviour when three or more parameters are zero is undefined, set it to zero
211  if((!a and !b and !c) or (!a and !b and !d) or (!a and !c and !d) or (!b and !c and !d))
212  return 0;
213  if(a == b and b == c and c == d)
214  return -1./(12.*d);
215  if(a == d and c == d and b == 0)
216  return -1. / (8.*d);
217  if(a == d and c == d)
218  return (3.*b*b - 4.*b*d + d*d - 2.*b*b*log(b/d))/(8.*pow(b-d,3));
219  if(b == c and c == d)
220  return D27(b,a,c,d);
221  if(a == b and b == c)
222  return D27(a,d,c,b);
223  if(a == b and b == d)
224  return D27(a,c,b,d);
225  if(a == b and c == d and b == 0)
226  return -1./(4.*d);
227  if(a == b and c == d and d == 0)
228  return -1./(4.*b);
229  if(a == b and c == d)
230  return (-b*b + d*d -2.*b*d*log(d/b)) / (4.*pow(b-d,3));
231  if(a == c and b == d)
232  return D27(a,c,b,d);
233  if(a == d and b == c)
234  return D27(a,b,d,c);
235  if(a == b and b == 0)
236  return log(d/c)/(4.*(c-d));
237  if(a == b and c == 0)
238  return - (b -d +d*log(d/b))/(4.*pow(b-d,2));
239  if(a == b and d == 0)
240  return D27(a,b,d,c);
241  if(a == b)
242  return 0.25*(-c*c*log(c/b)/(pow(b-c,2)*(c-d)) + (b*(d-b)/(b-c) + d*d*log(d/b)/(c-d))/pow(b-d,2));
243  if(a == c)
244  return D27(a,c,b,d);
245  if(a == d)
246  return D27(a,d,c,b);
247  if(b == c and a == 0)
248  return (-c+d+d*log(c/d))/(4.*pow(c-d,2));
249  if(b == c and c == 0)
250  return log(d/a)/(4.*(a-d));
251  if(b == c and d == 0)
252  return (a-c+a*log(c/a))/(4.*pow(a-c,2));
253  if(b == c)
254  return (c*(a-d)*(a*(c-2.*d)+c*d)*log(c/a)+(a-c)*(c*(a-d)*(c-d)+(a-c)*d*d*log(d/a)))/(4.*pow(a-c,2)*(a-d)*pow(c-d,2));
255  if(b == d)
256  return D27(a,b,d,c);
257  if(c == d)
258  return D27(a,c,d,b);
259  if(a == 0)
260  return (b*(-c+d)*log(b)+c*(b-d)*log(c)+(-b+c)*d*log(d))/(4.*(b-c)*(b-d)*(c-d));
261  if(b == 0)
262  return ((c*log(c/a))/((a - c)*(c - d)) + (d*log(d/a))/((a - d)*(-c + d)))/4.;
263  if(c == 0)
264  return D27(a,c,b,d);
265  if(d == 0)
266  return D27(a,d,c,b);
267  else
268  return -0.25*(b*b*log(b/a)/((b-a)*(b-c)*(b-d)) + c*c*log(c/a)/((c-a)*(c-b)*(c-d)) + d*d*log(d/a)/((d-a)*(d-b)*(d-c)));
269  }
START_MODEL b
Definition: demo.hpp:270
double D27(const double a, const double b, const double c, const double d)
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ E()

double Gambit::FlavBit::LoopFunctions::E ( const double  x,
const double  y 
)

Definition at line 280 of file flav_loop_functions.hpp.

References Gambit::Scanner::pow().

Referenced by ben_findsols(), Gambit::DarkBit::boost_dNdE(), Gambit::DarkBit::calc_ALPS1_signal_gas(), Gambit::DarkBit::calc_AxionOscillationTemperature(), Gambit::DarkBit::calc_Haloscope_signal(), Gambit::ColliderBit::calcMT_1l(), Gambit::DarkBit::cascadeMC_fetchSpectra(), Gambit::DarkBit::cascadeMC_gammaSpectra(), Gambit::DarkBit::cascadeMC_Histograms(), Gambit::DarkBit::DecayChain::ChainParticle::E_Lab(), Gambit::DarkBit::DecayChain::Ep4vec(), Gambit::DarkBit::getYield(), Gambit::DarkBit::intersect_parabola_line(), Gambit::PrecisionBit::lnL_GF(), Gambit::DarkBit::RD_oh2_Axions(), Gambit::FlavBit::RHN_RK(), Gambit::FlavBit::RHN_RKstar_0045_11(), Gambit::FlavBit::RHN_RKstar_11_60(), Gambit::DarkBit::SimpleHist::SimpleHist(), Gambit::SMInputs::SMInputs(), Gambit::ColliderBit::sortByPT(), Gambit::DecayBit::stau_1_decays_smallsplit(), and Gambit::DarkBit::TH_ProcessCatalog_WIMP().

281  {
282  if(x == 0 or y == 0)
283  return 0.0;
284  if(x == y)
285  return (x*(-4.0 + 15.0*x - 12.0*pow(x,2) + pow(x,3) + 6.0*pow(x,2)*log(x)))/ (4.*pow(-1.0 + x,3));
286  return x*y*(-3.0/(4.0*(1.0-x)*(1.0 - y)) + ((0.25 - 3.0/(4.0*pow(-1.0 + x,2)) - 3.0/(2.0*(-1.0 + x)))*log(x))/(x - y) + ((0.25 - 3.0/(4.0*pow(-1.0 + y,2)) - 3.0/(2.0*(-1 + y)))*log(y))/(-x + y));
287  }
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ G1() [1/2]

double Gambit::FlavBit::LoopFunctions::G1 ( const double  x)

Definition at line 31 of file flav_loop_functions.hpp.

References Gambit::Scanner::pow().

Referenced by Gambit::FlavBit::Penguins::A2L(), and Gambit::FlavBit::Penguins::A2R().

32  {
33  if(x == 0)
34  return -7./12.;
35  if(x == 1)
36  return -5./12.;
37  else
38  return (-7. + 33.*x - 57.*x*x + 31.*x*x*x + 6.*x*x*(1. - 3*x)*log(x))/(12.*pow(1.-x,4));
39  }
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ G1() [2/2]

double Gambit::FlavBit::LoopFunctions::G1 ( const double  a,
const double  b,
const double  c 
)

Definition at line 41 of file flav_loop_functions.hpp.

References b.

42  {
43  if(b == c and b != 0)
44  return G1(a/b)/b;
45  else
46  return 0; // TODO: 2C12 + 2C22 - C1 or 2C12 + C11 - C2
47  }
double G1(const double a, const double b, const double c)
START_MODEL b
Definition: demo.hpp:270

◆ IC0D0()

double Gambit::FlavBit::LoopFunctions::IC0D0 ( const double  a,
const double  b,
const double  c,
const double  d 
)

Definition at line 271 of file flav_loop_functions.hpp.

References C0(), and D0().

Referenced by Gambit::FlavBit::Boxes::Vw4dLL(), and Gambit::FlavBit::Boxes::Vw4lLL().

272  {
273  return C0(a,b,c) + d*D0(a,b,c,d);
274  }
double D0(const double a, const double b, const double c, const double d)
START_MODEL b
Definition: demo.hpp:270
double C0(const double a, const double b, const double c)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ MFVV()

double Gambit::FlavBit::LoopFunctions::MFVV ( const double  a,
const double  b 
)

Definition at line 49 of file flav_loop_functions.hpp.

References b, and Gambit::Scanner::pow().

Referenced by Gambit::FlavBit::Penguins::A1R().

50  {
51  if(a == b)
52  return 1. / (3. * b);
53  else if(a == 0)
54  return 5. / (9. * b);
55  else
56  return (6.*a*a*(a-3.*b)*log(a/b) - (a-b)*(5.*a*a - 22.*a*b + 5.*b*b))/(9.*pow(a-b,4));
57  }
START_MODEL b
Definition: demo.hpp:270
double pow(const double &a)
Outputs a^i.
Here is the call graph for this function:
Here is the caller graph for this function: