a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
EWSMOneLoopEW.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 <stdexcept>
9 #include "EWSMOneLoopEW.h"
10 
12 : cache(cache_i)
13 {
14 }
15 
16 
18 
19 double EWSMOneLoopEW::DeltaAlpha_l(const double s) const
20 {
21  double Mz = cache.getSM().getMz();
22 
23  double oneLoop[3];
24  oneLoop[0] = -PibarGammaGamma_fer(Mz, s, cache.getSM().getLeptons(StandardModel::ELECTRON)).real()
26  oneLoop[1] = -PibarGammaGamma_fer(Mz, s, cache.getSM().getLeptons(StandardModel::MU)).real()
28  oneLoop[2] = -PibarGammaGamma_fer(Mz, s, cache.getSM().getLeptons(StandardModel::TAU)).real()
30 
31  return ( cache.getSM().getAle() / 4.0 / M_PI
32  * (oneLoop[0] + oneLoop[1] + oneLoop[2]));
33 }
34 
35 double EWSMOneLoopEW::DeltaAlpha_t(const double s) const
36 {
37  double xt = s / cache.getSM().getMtpole() / cache.getSM().getMtpole();
38  double tmp = 1.0 + xt * 0.1071;
39  tmp *= -4.0 / 45.0 * cache.getSM().getAle() / M_PI*xt;
40  return tmp;
41 }
42 
43 double EWSMOneLoopEW::DeltaRho(const double Mw_i) const
44 {
45 
46  return ( -cache.getSM().getAle() / 4.0 / M_PI / cache.getSM().sW2(Mw_i) * DeltaRhobar(cache.getSM().getMz(), Mw_i));
47 }
48 
49 double EWSMOneLoopEW::DeltaR_rem(const double Mw_i) const
50 {
51  double Mz = cache.getSM().getMz();
52  double Mz2 = Mz*Mz;
53  double Mw = Mw_i;
54  double sW2 = cache.getSM().sW2(Mw);
55  double cW2 = cache.getSM().cW2(Mw);
56 
57  /* Logarithm */
58  double log_cW2 = cache.log_cW2(Mw);
59 
60  double PiGammaGamma_t_0 = PibarGammaGamma_fer(Mz, 0.0, cache.getSM().getQuarks(QCD::TOP)).real();
61  double PiGammaGamma_l5q_Mz2 = PibarGammaGamma_fer(Mz, Mz2).real()
62  - PibarGammaGamma_fer(Mz, Mz2, cache.getSM().getQuarks(QCD::TOP)).real();
63 
64  double DR_rem = -2.0 / 3.0 * sW2 + sW2 * PiGammaGamma_t_0
65  + sW2 * PiGammaGamma_l5q_Mz2 + DeltaRhobarW(Mz, Mw)
66  + (4.0 - 25.0 / 4.0 * cW2 + 3.0 / 4.0 * cW2 * cW2 + 9.0 * cW2 / 4.0 / sW2)
67  * log_cW2
68  + 11.0 / 2.0 - 5.0 / 8.0 * cW2 * (1.0 + cW2);
69  DR_rem *= cache.getSM().getAle() / 4.0 / M_PI / sW2;
70  return DR_rem;
71 }
72 
73 double EWSMOneLoopEW::DeltaRbar_rem(const double Mw_i) const
74 {
75  double Mz = cache.getSM().getMz();
76  double Mw = Mw_i;
77  double sW2 = cache.getSM().sW2(Mw);
78  double cW2 = cache.getSM().cW2(Mw);
79 
80  /* Logarithm */
81  double log_cW2 = cache.log_cW2(Mw);
82 
83  double DRbar_rem = -2.0 / 3.0 * sW2 + DeltaRhobarW(Mz, Mw)
84  + (4.0 - 25.0 / 4.0 * cW2 + 3.0 / 4.0 * cW2 * cW2 + 9.0 * cW2 / 4.0 / sW2)
85  * log_cW2
86  + 11.0 / 2.0 - 5.0 / 8.0 * cW2 * (1.0 + cW2);
87  DRbar_rem *= cache.getSM().getAle() / 4.0 / M_PI / sW2;
88  return DRbar_rem;
89 }
90 
92  const double Mw_i) const
93 {
94  double Mz = cache.getSM().getMz();
95  double Mw = Mw_i;
96  double sW2 = cache.getSM().sW2(Mw);
97  double cW2 = cache.getSM().cW2(Mw);
98 
99  /* Logarithm */
100  double log_cW2 = cache.log_cW2(Mw);
101 
102  gslpp::complex dRho_rem(0.0, 0.0, false);
103  dRho_rem = -(SigmabarPrime_ZZ_bos_Mz2(Mz, Mw).real()
104  + SigmabarPrime_ZZ_fer_Mz2(Mz, Mw).real()) / cW2
105  - DeltaRhobarW(Mz, Mw) + 2.0 * uf
106  - (1.0 / 6.0 / cW2 - 1.0 / 3.0 + 3.0 / 4.0 * cW2 * (1.0 + cW2) + 9.0 * cW2 / 4.0 / sW2)
107  * log_cW2
108  - 11.0 / 2.0 + 5.0 / 8.0 * cW2 * (1.0 + cW2);
109  dRho_rem *= cache.getSM().getAle() / 4.0 / M_PI / sW2;
110  return dRho_rem;
111 }
112 
113 gslpp::complex EWSMOneLoopEW::deltaRho_rem_f(const Particle f, const double Mw_i) const
114 {
115  if (f.is("TOP")) return ( gslpp::complex(0.0, 0.0, false));
116 
117  double Mz = cache.getSM().getMz();
118  double Mw = Mw_i;
119  gslpp::complex uf = (3.0 * cache.v_f(f, Mw) * cache.v_f(f, Mw) + cache.a_f(f) * cache.a_f(f))
120  / 4.0 / cache.getSM().cW2(Mw) * FZ(Mz*Mz, Mw) + FW(Mz*Mz, f, Mw);
121  return ( deltaRho_rem_tmp(uf, Mw));
122 }
123 
125  const double Mw_i) const
126 {
127  double Mz = cache.getSM().getMz();
128  double Mw = Mw_i;
129  double sW2 = cache.getSM().sW2(Mw);
130  double cW2 = cache.getSM().cW2(Mw);
131 
132  /* Logarithm */
133  double log_cW2 = cache.log_cW2(Mw);
134 
135  gslpp::complex dKappa_rem(0.0, 0.0, false);
136  dKappa_rem = (PibarZgamma_bos(Mz, Mz*Mz, Mw) + PibarZgamma_fer(Mz, Mz*Mz, Mw))
137  + deltaf * deltaf / 4.0 / cW2 * FZ(Mz*Mz, Mw) - uf
138  + (1.0 / 12.0 / cW2 + 4.0 / 3.0) * log_cW2;
139  dKappa_rem *= cache.getSM().getAle() / 4.0 / M_PI / sW2;
140  return dKappa_rem;
141 }
142 
143 gslpp::complex EWSMOneLoopEW::deltaKappa_rem_f(const Particle f, const double Mw_i) const
144 {
145  if (f.is("TOP")) return ( gslpp::complex(0.0, 0.0, false));
146 
147  double Mz = cache.getSM().getMz();
148  double Mw = Mw_i;
149  gslpp::complex uf = (3.0 * cache.v_f(f, Mw) * cache.v_f(f, Mw) + cache.a_f(f) * cache.a_f(f))
150  / 4.0 / cache.getSM().cW2(Mw) * FZ(Mz*Mz, Mw) + FW(Mz*Mz, f, Mw);
151 
152  return ( deltaKappa_rem_tmp(cache.delta_f(f, Mw), uf, Mw));
153 }
154 
155 double EWSMOneLoopEW::rho_GammaW_tmp(const double Qi, const double Qj,
156  const double Mw_i) const
157 {
158  double QiQj = Qi*Qj;
159  double Mz = cache.getSM().getMz();
160  double Mw = Mw_i;
161  double sW2 = cache.getSM().sW2(Mw);
162  double cW2 = cache.getSM().cW2(Mw);
163 
164  /* Logarithm and one-loop functions */
165  double log_cW2 = cache.log_cW2(Mw);
166  gslpp::complex B0_Mw2_Mw2_Mz2_Mw2 = cache.B0_Mw2_Mw2_Mz2_Mw2(Mw);
167  gslpp::complex C0_Mw2_Mw2_0_Mz2 = cache.C0_Mw2_Mw2_0_Mz2(Mw);
168 
169  double V1 = FZa_0(Mw*Mw, Mw).real() - 3.0 / 2.0;
170  double V2 = -2.0 * (2.0 + cW2) * Mz * Mz * C0_Mw2_Mw2_0_Mz2.real()
171  - (1.0 / 12.0 / cW2 / cW2 + 5.0 / 3.0 / cW2 + 1.0) * B0_Mw2_Mw2_Mz2_Mw2.real()
172  + (1.0 / 12.0 / cW2 / cW2 + 1.0 / cW2 + 1.0) * log_cW2
173  + 1.0 / 12.0 / cW2 / cW2 + 13.0 / 12.0 / cW2 + 59.0 / 18.0;
174 
175  double deltafij_W, deltafij_QED;
176  deltafij_W = -DeltaRhobarW(Mw, Mw)
179  + 5.0 / 8.0 * cW2 * (1.0 + cW2) - 11.0 / 2.0 - 9.0 * cW2 / 4.0 / sW2 * log_cW2
180  + (-1.0 + 1.0 / 2.0 / cW2 + 2.0 * sW2 * sW2 / cW2 * QiQj)*(V1 + 3.0 / 2.0)
181  + 2.0 * cW2 * (V2 + 3.0 / 2.0);
182  deltafij_W *= cache.getSM().getAle() / 4.0 / M_PI / sW2;
183 
184  deltafij_QED = 85.0 / 18.0 - M_PI * M_PI / 3.0 + 3.0 / 4.0 * QiQj;
185  deltafij_QED *= cache.getSM().getAle() / M_PI;
186 
187  return ( 1.0 + deltafij_W + deltafij_QED);
188 }
189 
190 double EWSMOneLoopEW::rho_GammaW(const Particle fi, const Particle fj, const double Mw_i) const
191 {
192  if (!((fi.is("NEUTRINO_1") && fj.is("ELECTRON")) || (fi.is("NEUTRINO_2") && fj.is("MU"))
193  || (fi.is("NEUTRINO_3") && fj.is("TAU")) || (fi.is("UP") && fj.is("DOWN"))
194  || (fi.is("CHARM") && fj.is("STRANGE")) || (fi.is("TOP") && fj.is("BOTTOM"))))
195  throw std::runtime_error("EWSMOneLoopEW::rho_GammaW(): Wrong arguments");
196  double Mw = Mw_i;
197  return ( rho_GammaW_tmp(cache.Q_f(fi), cache.Q_f(fj), Mw));
198 }
199 
200 
202 
203 gslpp::complex EWSMOneLoopEW::SigmabarWW_bos(const double mu, const double s, const double Mw_i) const
204 {
205  double mu2 = mu*mu;
206  double Mw = Mw_i;
207  double Mw2 = Mw*Mw;
208  double Mz = cache.getSM().getMz();
209  double Mz2 = Mz*Mz;
210  double mh = cache.getSM().getMHl();
211  double mh2 = mh*mh;
212  double sW2 = cache.getSM().sW2(Mw);
213  double cW2 = cache.getSM().cW2(Mw);
214  double cW4 = cW2*cW2;
215  double RW = pow(Mw, 2.0) / s;
216  double RW2 = RW*RW;
217  double RW3 = RW2*RW;
218  double rw = pow(mh / Mw, 2.0);
219 
220  /* Loop functions */
221  double A0_Mw2, A0_Mz2, A0_mh2;
222  gslpp::complex B0_s_Mz2_Mw2, B0_s_0_Mw2, B0_s_mh2_Mw2;
223  gslpp::complex B0p_s_Mz2_Mw2, B0p_s_mh2_Mw2; /* for s==0.0 */
224  if (mu == Mz && s == 0.0) {
225  A0_Mw2 = cache.A0_Mz2_Mw2(Mw);
226  A0_Mz2 = cache.A0_Mz2_Mz2();
227  A0_mh2 = cache.A0_Mz2_mh2();
228  B0_s_Mz2_Mw2 = cache.B0_Mz2_0_Mz2_Mw2(Mw);
229  B0_s_0_Mw2 = cache.B0_Mz2_0_0_Mw2(Mw);
230  B0_s_mh2_Mw2 = cache.B0_Mz2_0_mh2_Mw2(Mw);
231  B0p_s_Mz2_Mw2 = cache.B0p_Mz2_0_Mz2_Mw2(Mw);
232  B0p_s_mh2_Mw2 = cache.B0p_Mz2_0_mh2_Mw2(Mw);
233  } else if (mu == Mz && s == Mw2) {
234  A0_Mw2 = cache.A0_Mz2_Mw2(Mw);
235  A0_Mz2 = cache.A0_Mz2_Mz2();
236  A0_mh2 = cache.A0_Mz2_mh2();
237  B0_s_Mz2_Mw2 = cache.B0_Mz2_Mw2_Mz2_Mw2(Mw);
238  B0_s_0_Mw2 = cache.B0_Mz2_Mw2_0_Mw2(Mw);
239  B0_s_mh2_Mw2 = cache.B0_Mz2_Mw2_mh2_Mw2(Mw);
240  } else {
241  A0_Mw2 = cache.getPV().A0(mu2, Mw2);
242  A0_Mz2 = cache.getPV().A0(mu2, Mz2);
243  A0_mh2 = cache.getPV().A0(mu2, mh2);
244  B0_s_Mz2_Mw2 = cache.getPV().B0(mu2, s, Mz2, Mw2);
245  B0_s_0_Mw2 = cache.getPV().B0(mu2, s, 0.0, Mw2);
246  B0_s_mh2_Mw2 = cache.getPV().B0(mu2, s, mh2, Mw2);
247  B0p_s_Mz2_Mw2 = cache.getPV().B0p(mu2, s, Mz2, Mw2);
248  B0p_s_mh2_Mw2 = cache.getPV().B0p(mu2, s, mh2, Mw2);
249  }
250 
251  gslpp::complex Sigma(0.0, 0.0, false);
252  if (s == 0.0) {
253  Sigma = Mw2 * (2.0 / 3.0 * (1.0 / cW2 - 4.0 - 4.0 * cW2 + cW4) * B0_s_Mz2_Mw2
254  + (1.0 / 12.0 / cW4 + 2.0 / 3.0 / cW2 - 3.0 / 2.0
255  + 2.0 / 3.0 * cW2 + 1.0 / 12.0 * cW4) * Mw2 * B0p_s_Mz2_Mw2
256  - 17.0 * sW2 / 6.0 * B0_s_0_Mw2 + 5.0 / 12.0 * sW2
257  - 1.0 / 12.0 * (-10.0 + 2.0 * rw) * B0_s_mh2_Mw2
258  + 1.0 / 12.0 * pow(1.0 - rw, 2.0) * Mw2 * B0p_s_mh2_Mw2
259  - 1.0 / 12.0 * (24.0 - 2.0 * cW2 + cW4) * A0_Mw2 / Mw2
260  - 1.0 / 6.0 * A0_mh2 / Mw2
261  - 1.0 / 12.0 * (1.0 + 14.0 * cW2 + 9.0 * cW4) * A0_Mz2 / Mw2
262  - 1.0 / 6.0 * (1.0 / cW2 + 22.0 + cW2 + cW4 + rw));
263  } else {
264  Sigma = Mw2 * (((1.0 / 12.0 / cW4 + 2.0 / 3.0 / cW2 - 3.0 / 2.0 + 2.0 / 3.0 * cW2
265  + 1.0 / 12.0 * cW4) * RW
266  + 2.0 / 3.0 * (1.0 / cW2 - 4.0 - 4.0 * cW2 + cW4)
267  - (3.0 / 2.0 + 8.0 / 3.0 * cW2 + 3.0 / 2.0 * cW4) / RW
268  + 2.0 / 3.0 * cW2 * (1.0 + cW2) / RW2 + 1.0 / 12.0 * cW4 / RW3) * B0_s_Mz2_Mw2
269  - sW2 / 6.0 * (-5.0 * RW + 17.0 + 17.0 / RW - 5.0 / RW2) * B0_s_0_Mw2
270  - 1.0 / 12.0 * (-pow(1.0 - rw, 2.0) * RW - 10.0 + 2.0 * rw - 1.0 / RW)
271  * B0_s_mh2_Mw2
272  - 1.0 / 12.0 * ((1.0 / cW2 - 2.0 + cW2 - cW4 + rw) * RW
273  + 24.0 - 2.0 * cW2 + cW4
274  + (-10.0 + cW2 + cW4) / RW - cW4 / RW2) * A0_Mw2 / Mw2
275  - 1.0 / 12.0 * (-(1.0 / cW2 + 9.0 - 9.0 * cW2 - cW4) * RW
276  + 1.0 + 14.0 * cW2 + 9.0 * cW4
277  + cW2 / RW * (1.0 - 9.0 * cW2) - cW4 / RW2) * A0_Mz2 / Mw2
278  + 1.0 / 12.0 * ((mh2 - Mw2) / s - 2.0) * A0_mh2 / Mw2
279  - 1.0 / 6.0 * (1.0 / cW2 + 22.0 + cW2 + cW4 + rw)
280  + 1.0 / 9.0 * ((6.0 + 3.0 * cW2 + 7.0 / 2.0 * cW4) / RW
281  - (1.0 + 3.0 / 2.0 * cW2 + 5.0 / 2.0 * cW4) / RW2
282  + cW4 / 2.0 / RW3));
283  }
284  return Sigma;
285 }
286 
287 gslpp::complex EWSMOneLoopEW::SigmabarWW_fer(const double mu, const double s, const double Mw_i) const
288 {
289  double ml2[6], mq2[6];
290  for (int i = 0; i < 6; i++) {
291  ml2[i] = cache.mf2(cache.getSM().getLeptons((QCD::lepton) i));
292  mq2[i] = cache.mf2(cache.getSM().getQuarks((QCD::quark) i), mu);
293  }
294  double mu2 = mu*mu;
295  double Mw = Mw_i;
296  double Mw2 = Mw*Mw;
297  double Mz = cache.getSM().getMz();
298 
299  /* Loop functions */
300  gslpp::complex B1_s_ml2_mlprime2[3], B1_s_mq2_mqprime2[3];
301  gslpp::complex B1_s_mlprime2_ml2[3], B1_s_mqprime2_mq2[3];
302  gslpp::complex Bf_s_mlprime2_ml2[3], Bf_s_mqprime2_mq2[3];
303  if (mu == Mz && s == 0.0) {
304  for (int gen = 0; gen < 3; gen++) {
305  B1_s_ml2_mlprime2[gen] = cache.B1_Mz2_0_mf2_mfprime2(gen);
306  B1_s_mq2_mqprime2[gen] = cache.B1_Mz2_0_mf2_mfprime2(gen + 3);
307  B1_s_mlprime2_ml2[gen] = cache.B1_Mz2_0_mfprime2_mf2(gen);
308  B1_s_mqprime2_mq2[gen] = cache.B1_Mz2_0_mfprime2_mf2(gen + 3);
309  Bf_s_mlprime2_ml2[gen] = cache.Bf_Mz2_0_mfprime2_mf2(gen);
310  Bf_s_mqprime2_mq2[gen] = cache.Bf_Mz2_0_mfprime2_mf2(gen + 3);
311  }
312  } else if (mu == Mz && s == Mw2) {
313  for (int gen = 0; gen < 3; gen++) {
314  B1_s_ml2_mlprime2[gen] = cache.B1_Mz2_Mw2_mf2_mfprime2(gen, Mw);
315  B1_s_mq2_mqprime2[gen] = cache.B1_Mz2_Mw2_mf2_mfprime2(gen + 3, Mw);
316  B1_s_mlprime2_ml2[gen] = cache.B1_Mz2_Mw2_mfprime2_mf2(gen, Mw);
317  B1_s_mqprime2_mq2[gen] = cache.B1_Mz2_Mw2_mfprime2_mf2(gen + 3, Mw);
318  Bf_s_mlprime2_ml2[gen] = cache.Bf_Mz2_Mw2_mfprime2_mf2(gen, Mw);
319  Bf_s_mqprime2_mq2[gen] = cache.Bf_Mz2_Mw2_mfprime2_mf2(gen + 3, Mw);
320  }
321  } else {
322  for (int gen = 0; gen < 3; gen++) {
323  B1_s_ml2_mlprime2[gen] = cache.getPV().B1(mu2, s, ml2[2 * gen], ml2[2 * gen + 1]);
324  B1_s_mq2_mqprime2[gen] = cache.getPV().B1(mu2, s, mq2[2 * gen], mq2[2 * gen + 1]);
325  B1_s_mlprime2_ml2[gen] = cache.getPV().B1(mu2, s, ml2[2 * gen + 1], ml2[2 * gen]);
326  B1_s_mqprime2_mq2[gen] = cache.getPV().B1(mu2, s, mq2[2 * gen + 1], mq2[2 * gen]);
327  Bf_s_mlprime2_ml2[gen] = cache.getPV().Bf(mu2, s, ml2[2 * gen + 1], ml2[2 * gen]);
328  Bf_s_mqprime2_mq2[gen] = cache.getPV().Bf(mu2, s, mq2[2 * gen + 1], mq2[2 * gen]);
329  }
330  }
331 
332  gslpp::complex Sigma(0.0, 0.0, false);
333  double mf2, mfprime2;
334  for (int gen = 0; gen < 3; gen++) {
335  mf2 = ml2[2 * gen];
336  mfprime2 = ml2[2 * gen + 1];
337  if (s != 0.0) Sigma += -s * Bf_s_mlprime2_ml2[gen];
338  Sigma += mfprime2 * B1_s_ml2_mlprime2[gen] + mf2 * B1_s_mlprime2_ml2[gen];
339  //
340  mf2 = mq2[2 * gen];
341  mfprime2 = mq2[2 * gen + 1];
342  if (s != 0.0) Sigma += 3.0 * (-s * Bf_s_mqprime2_mq2[gen]);
343  Sigma += 3.0 * (mfprime2 * B1_s_mq2_mqprime2[gen] + mf2 * B1_s_mqprime2_mq2[gen]);
344  }
345  return Sigma;
346 }
347 
348 gslpp::complex EWSMOneLoopEW::SigmabarZZ_bos(const double mu, const double s, const double Mw_i) const
349 {
350  double mu2 = mu*mu;
351  double Mw = Mw_i;
352  double Mw2 = Mw*Mw;
353  double Mz = cache.getSM().getMz();
354  double Mz2 = Mz*Mz;
355  double mh = cache.getSM().getMHl();
356  double mh2 = mh*mh;
357  double cW2 = cache.getSM().cW2(Mw);
358  double cW4 = cW2*cW2;
359  double RW = pow(Mw, 2.0) / s;
360  double RW2 = RW*RW;
361  double RW3 = RW2*RW;
362  double rw = pow(mh / Mw, 2.0);
363 
364  /* Loop functions */
365  double A0_Mw2, A0_Mz2, A0_mh2;
366  gslpp::complex B0_s_Mw2_Mw2, B0_s_mh2_Mz2;
367  if (mu == Mz && s == Mz2) {
368  A0_Mw2 = cache.A0_Mz2_Mw2(Mw);
369  A0_Mz2 = cache.A0_Mz2_Mz2();
370  A0_mh2 = cache.A0_Mz2_mh2();
371  B0_s_Mw2_Mw2 = cache.B0_Mz2_Mz2_Mw2_Mw2(Mw);
372  B0_s_mh2_Mz2 = cache.B0_Mz2_Mz2_mh2_Mz2();
373  } else {
374  A0_Mw2 = cache.getPV().A0(mu2, Mw2);
375  A0_Mz2 = cache.getPV().A0(mu2, Mz2);
376  A0_mh2 = cache.getPV().A0(mu2, mh2);
377  B0_s_Mw2_Mw2 = cache.getPV().B0(mu2, s, Mw2, Mw2);
378  B0_s_mh2_Mz2 = cache.getPV().B0(mu2, s, mh2, Mz2);
379  }
380 
381  gslpp::complex Sigma(0.0, 0.0, false);
382  if (s == 0.0) {
383  throw std::runtime_error("EWSMOneLoopEW::SigmabarZZ_bos(): Undefined for s=0.0");
384  } else {
385  Sigma = Mw2 * (-cW4 * (4.0 + 17.0 / 3.0 / RW - 4.0 / 3.0 / RW2 - 1.0 / 12.0 / RW3)
386  * B0_s_Mw2_Mw2
387  + 1.0 / 12.0 * ((1.0 / cW4 - 2.0 / cW2 * rw + rw * rw) * RW
388  + 10.0 / cW2 - 2.0 * rw + 1.0 / RW) * B0_s_mh2_Mz2
389  - cW2 * (4.0 - 4.0 / 3.0 / RW - 1.0 / 6.0 / RW2) * A0_Mw2 / Mz2
390  + 1.0 / 12.0 * ((Mz2 - mh2) / s + 1.0)*(A0_Mz2 - A0_mh2) / cW2 / Mz2
391  - 1.0 / 12.0 * A0_mh2 / cW2 / Mz2
392  - (1.0 / 6.0 / cW2 + 4.0 * cW4 + 1.0 / 6.0 * rw
393  - (1.0 / 18.0 + 4.0 / 3.0 * cW4) / RW
394  + 1.0 / 9.0 * cW4 * (5.0 - 1.0 / 2.0 / RW) / RW2));
395  }
396  return Sigma;
397 }
398 
399 gslpp::complex EWSMOneLoopEW::SigmabarZZ_fer(const double mu, const double s, const double Mw_i) const
400 {
401  double ml2[6], mq2[6];
402  for (int i = 0; i < 6; i++) {
403  ml2[i] = cache.mf2(cache.getSM().getLeptons((QCD::lepton) i));
404  mq2[i] = cache.mf2(cache.getSM().getQuarks((QCD::quark) i), mu);
405  }
406  double mu2 = mu*mu;
407  double Mw = Mw_i;
408  double Mz = cache.getSM().getMz();
409  double Mz2 = Mz*Mz;
410 
411  /* Loop functions */
412  gslpp::complex Bf_s_ml2_ml2[6], Bf_s_mq2_mq2[6];
413  gslpp::complex B0_s_ml2_ml2[6], B0_s_mq2_mq2[6];
414  if (mu == Mz && s == Mz2) {
415  for (int i = 0; i < 6; i++) {
416  Bf_s_ml2_ml2[i] = cache.Bf_Mz2_Mz2_mf2_mf2(cache.getSM().getLeptons((QCD::lepton) i));
417  Bf_s_mq2_mq2[i] = cache.Bf_Mz2_Mz2_mf2_mf2(cache.getSM().getQuarks((QCD::quark) i));
418  B0_s_ml2_ml2[i] = cache.B0_Mz2_Mz2_mf2_mf2(cache.getSM().getLeptons((QCD::lepton) i));
419  B0_s_mq2_mq2[i] = cache.B0_Mz2_Mz2_mf2_mf2(cache.getSM().getQuarks((QCD::quark) i));
420  }
421  } else {
422  for (int i = 0; i < 6; i++) {
423  Bf_s_ml2_ml2[i] = cache.getPV().Bf(mu2, s, ml2[i], ml2[i]);
424  Bf_s_mq2_mq2[i] = cache.getPV().Bf(mu2, s, mq2[i], mq2[i]);
425  B0_s_ml2_ml2[i] = cache.getPV().B0(mu2, s, ml2[i], ml2[i]);
426  B0_s_mq2_mq2[i] = cache.getPV().B0(mu2, s, mq2[i], mq2[i]);
427  }
428  }
429 
430  gslpp::complex Sigma(0.0, 0.0, false);
431  if (s == 0.0) {
432  throw std::runtime_error("EWSMOneLoopEW::SigmaZZ_fer(): Undefined for s=0.0");
433  } else {
434  double mf2, vf2, af2;
435  for (int i = 0; i < 6; i++) {
436  mf2 = ml2[i];
437  vf2 = pow(cache.v_f(cache.getSM().getLeptons((QCD::lepton) i), Mw), 2.0);
438  af2 = pow(cache.a_f(cache.getSM().getLeptons((QCD::lepton) i)), 2.0);
439  if (s != 0.0) Sigma += -(vf2 + af2) * s * Bf_s_ml2_ml2[i];
440  Sigma += -2.0 * af2 * mf2 * B0_s_ml2_ml2[i];
441  //
442  mf2 = mq2[i];
443  vf2 = pow(cache.v_f(cache.getSM().getQuarks((QCD::quark) i), Mw), 2.0);
444  af2 = pow(cache.a_f(cache.getSM().getQuarks((QCD::quark) i)), 2.0);
445  if (s != 0.0) Sigma += -3.0 * (vf2 + af2) * s * Bf_s_mq2_mq2[i];
446  Sigma += -3.0 * 2.0 * af2 * mf2 * B0_s_mq2_mq2[i];
447  }
448  }
449  return Sigma;
450 }
451 
452 gslpp::complex EWSMOneLoopEW::PibarGammaGamma_bos(const double mu, const double s, const double Mw_i) const
453 {
454  double mu2 = mu*mu;
455  double Mw = Mw_i;
456  double Mw2 = Mw*Mw;
457  double Mz = cache.getSM().getMz();
458  double Mz2 = Mz*Mz;
459  double RW = pow(Mw, 2.0) / s;
460  double RW2 = RW*RW;
461  double RW3 = RW2*RW;
462 
463  /* Loop functions */
464  double A0_Mw2;
465  gslpp::complex B0_s_Mw2_Mw2;
466  if (mu == Mz && s == Mz2) {
467  A0_Mw2 = cache.A0_Mz2_Mw2(Mw);
468  B0_s_Mw2_Mw2 = cache.B0_Mz2_Mz2_Mw2_Mw2(Mw);
469  } else {
470  A0_Mw2 = cache.getPV().A0(mu2, Mw2);
471  B0_s_Mw2_Mw2 = cache.getPV().B0(mu2, s, Mw2, Mw2);
472  }
473 
474  gslpp::complex Pi(0.0, 0.0, false);
475  if (s == 0.0) {
476  Pi = 7.0 * log(Mw2 / mu / mu) - 2.0 / 3.0;
477  } else {
478  Pi = -RW * ((4.0 + 17.0 / 3.0 / RW - 4.0 / 3.0 / RW2 - 1.0 / 12.0 / RW3) * B0_s_Mw2_Mw2
479  + (4.0 - 4.0 / 3.0 / RW - 1.0 / 6.0 / RW2)*(A0_Mw2 / Mw2 + 1.0)
480  - 1.0 / 18.0 / RW2 * (1.0 / RW - 13.0));
481  }
482  return Pi;
483 }
484 
485 gslpp::complex EWSMOneLoopEW::PibarGammaGamma_fer(const double mu, const double s, const Particle f) const
486 {
487  // Neutrinos do not contribute, since Qf=0.
488  if (f.is("NEUTRINO_1") || f.is("NEUTRINO_2")
489  || f.is("NEUTRINO_3"))
490  return 0.0;
491 
492  double mu2 = mu*mu;
493  double mf2 = cache.mf2(f, mu);
494  double Mz = cache.getSM().getMz();
495  double Mz2 = Mz*Mz;
496 
497  /* Loop functions */
498  gslpp::complex Bf_s_mf2_mf2;
499  if (mu == Mz && s == Mz2) {
500  if (mf2 == 0.0) {
501  Bf_s_mf2_mf2 = 0.0;
502  } else {
503  Bf_s_mf2_mf2 = cache.Bf_Mz2_Mz2_mf2_mf2(f);
504  }
505  } else if (mu == Mz && s == 0.0) {
506  if (mf2 == 0.0) {
507  Bf_s_mf2_mf2 = 0.0;
508  } else {
509  Bf_s_mf2_mf2 = cache.Bf_Mz2_0_mf2_mf2(f);
510  }
511  } else {
512  if (mf2 == 0.0) {
513  Bf_s_mf2_mf2 = 0.0;
514  } else {
515  Bf_s_mf2_mf2 = cache.getPV().Bf(mu2, s, mf2, mf2);
516  }
517  }
518 
519  double Qf = cache.Q_f(f);
520  double colorfactor = (f.is("QUARK") ? 3. : 1.);
521  return ( -4.0 * colorfactor * Qf * Qf * Bf_s_mf2_mf2);
522 }
523 
524 gslpp::complex EWSMOneLoopEW::PibarGammaGamma_fer(const double mu, const double s) const
525 {
526  gslpp::complex Pi(0.0, 0.0, false);
527  for (int i = 0; i < 6; i++) {
529  Pi += PibarGammaGamma_fer(mu, s, cache.getSM().getQuarks((QCD::quark) i));
530  }
531  return Pi;
532 }
533 
534 gslpp::complex EWSMOneLoopEW::PibarZgamma_bos(const double mu, const double s, const double Mw_i) const
535 {
536  double Mw = Mw_i;
537  double cW2 = cache.getSM().cW2(Mw);
538  return ( PibarGammaGamma_bos(mu, s, Mw) * cW2);
539 }
540 
541 gslpp::complex EWSMOneLoopEW::PibarZgamma_fer(const double mu, const double s, const double Mw_i) const
542 {
543  double ml2[6], mq2[6];
544  for (int i = 0; i < 6; i++) {
545  ml2[i] = cache.mf2(cache.getSM().getLeptons((QCD::lepton) i));
546  mq2[i] = cache.mf2(cache.getSM().getQuarks((QCD::quark) i), mu);
547  }
548  double mu2 = mu*mu;
549  double Mz = cache.getSM().getMz();
550  double Mz2 = Mz*Mz;
551  double Mw = Mw_i;
552  double sW2 = cache.getSM().sW2(Mw);
553 
554  /* Loop functions */
555  gslpp::complex Bf_s_ml2_ml2[6], Bf_s_mq2_mq2[6];
556  if (mu == Mz && s == Mz2) {
557  for (int i = 0; i < 6; i++) {
558  if (i == 0 || i == 2 || i == 4)
559  Bf_s_ml2_ml2[i] = 0.0; // Neutrinos do not contribute, since Ql=0.
560  else
561  Bf_s_ml2_ml2[i] = cache.Bf_Mz2_Mz2_mf2_mf2(cache.getSM().getLeptons((QCD::lepton) i));
562  Bf_s_mq2_mq2[i] = cache.Bf_Mz2_Mz2_mf2_mf2(cache.getSM().getQuarks((QCD::quark) i));
563  }
564  } else {
565  for (int i = 0; i < 6; i++) {
566  if (i == 0 || i == 2 || i == 4)
567  Bf_s_ml2_ml2[i] = 0.0; // Neutrinos do not contribute, since Ql=0.
568  else
569  Bf_s_ml2_ml2[i] = cache.getPV().Bf(mu2, s, ml2[i], ml2[i]);
570  Bf_s_mq2_mq2[i] = cache.getPV().Bf(mu2, s, mq2[i], mq2[i]);
571  }
572  }
573 
574  gslpp::complex Pi(0.0, 0.0, false);
575  double Ql, Qq;
576  for (int i = 0; i < 6; i++) {
577  Ql = cache.Q_f(cache.getSM().getLeptons((QCD::lepton) i));
578  Pi += -(fabs(Ql) - 4.0 * sW2 * Ql * Ql) * Bf_s_ml2_ml2[i];
579  //
580  Qq = cache.Q_f(cache.getSM().getQuarks((QCD::quark) i));
581  Pi += -3.0 * (fabs(Qq) - 4.0 * sW2 * Qq * Qq) * Bf_s_mq2_mq2[i];
582  }
583  return Pi;
584 }
585 
586 
588 
589 gslpp::complex EWSMOneLoopEW::SigmabarPrime_WW_bos_Mw2(const double mu, const double Mw_i) const
590 {
591  double mu2 = mu*mu;
592  double Mw = Mw_i;
593  double Mw2 = Mw*Mw;
594  double Mz = cache.getSM().getMz();
595  double Mz2 = Mz*Mz;
596  double mh = cache.getSM().getMHl();
597  double mh2 = mh*mh;
598  double sW2 = cache.getSM().sW2(Mw_i);
599  double cW2 = cache.getSM().cW2(Mw_i);
600  double cW4 = cW2*cW2;
601  double rw = mh2 / Mw2;
602  //double rz = mh2/Mz2;
603 
604  /* Loop functions */
605  double A0_Mw2, A0_Mz2, A0_mh2;
606  gslpp::complex B0_Mw2_Mz2_Mw2, B0_Mw2_0_Mw2, B0_Mw2_mh2_Mw2;
607  gslpp::complex B0p_Mw2_Mz2_Mw2, B0p_Mw2_0_Mw2, B0p_Mw2_mh2_Mw2;
608  if (mu == Mw) {
609  A0_Mw2 = cache.A0_Mw2_Mw2(Mw);
610  A0_Mz2 = cache.A0_Mw2_Mz2(Mw);
611  A0_mh2 = cache.A0_Mw2_mh2(Mw);
612  B0_Mw2_Mz2_Mw2 = cache.B0_Mw2_Mw2_Mz2_Mw2(Mw);
613  B0_Mw2_0_Mw2 = cache.B0_Mw2_Mw2_0_Mw2(Mw);
614  B0_Mw2_mh2_Mw2 = cache.B0_Mw2_Mw2_mh2_Mw2(Mw);
615  B0p_Mw2_Mz2_Mw2 = cache.B0p_Mw2_Mw2_Mz2_Mw2(Mw);
616  B0p_Mw2_0_Mw2 = cache.B0p_Mw2_Mw2_0_Mw2(Mw);
617  B0p_Mw2_mh2_Mw2 = cache.B0p_Mw2_Mw2_mh2_Mw2(Mw);
618  } else {
619  A0_Mw2 = cache.getPV().A0(mu2, Mw2);
620  A0_Mz2 = cache.getPV().A0(mu2, Mz2);
621  A0_mh2 = cache.getPV().A0(mu2, mh2);
622  B0_Mw2_Mz2_Mw2 = cache.getPV().B0(mu2, Mw2, Mz2, Mw2);
623  B0_Mw2_0_Mw2 = cache.getPV().B0(mu2, Mw2, 0.0, Mw2);
624  B0_Mw2_mh2_Mw2 = cache.getPV().B0(mu2, Mw2, mh, Mw2);
625  B0p_Mw2_Mz2_Mw2 = cache.getPV().B0p(mu2, Mw2, Mz2, Mw2);
626  B0p_Mw2_0_Mw2 = cache.getPV().B0p(mu2, Mw2, 0.0, Mw2);
627  B0p_Mw2_mh2_Mw2 = cache.getPV().B0p(mu2, Mw2, mh2, Mw2);
628  }
629 
630  gslpp::complex Sigma(0.0, 0.0, false);
631  Sigma = -(1.0 / 12.0 / cW4 + 2.0 / 3.0 / cW2 + 2.0 * cW2) * B0_Mw2_Mz2_Mw2
632  + (1.0 / 12.0 / cW4 + 4.0 / 3.0 / cW2 - 17.0 / 3.0 - 4.0 * cW2) * Mw2 * B0p_Mw2_Mz2_Mw2
633  - 2.0 * sW2 * B0_Mw2_0_Mw2 - 4.0 * sW2 * Mw2 * B0p_Mw2_0_Mw2
634  + rw / 6.0 * (1.0 - rw / 2.0) * B0_Mw2_mh2_Mw2
635  + (1.0 - rw / 3.0 + rw * rw / 12.0) * Mw2 * B0p_Mw2_mh2_Mw2
636  + (1.0 / cW2 + 8.0 + rw) / 12.0 * A0_Mw2 / Mw2
637  - (1.0 / cW2 + 9.0 - 8.0 * cW2 - 12.0 * cW4) / 12.0 * A0_Mz2 / Mw2
638  - (rw - 1.0) / 12.0 * A0_mh2 / Mw2 + 4.0 / 9.0;
639  return Sigma;
640 }
641 
642 gslpp::complex EWSMOneLoopEW::SigmabarPrime_WW_fer_Mw2(const double mu, const double Mw_i) const
643 {
644  double ml2[6], mq2[6];
645  for (int i = 0; i < 6; i++) {
646  ml2[i] = cache.mf2(cache.getSM().getLeptons((QCD::lepton) i));
647  mq2[i] = cache.mf2(cache.getSM().getQuarks((QCD::quark) i), mu);
648  }
649  double mu2 = mu*mu;
650  double Mw = Mw_i;
651  double Mw2 = Mw*Mw;
652 
653  /* Loop functions */
654  gslpp::complex Bf_Mw2_mlprime2_ml2[3], Bf_Mw2_mqprime2_mq2[3];
655  gslpp::complex Bfp_Mw2_mlprime2_ml2[3], Bfp_Mw2_mqprime2_mq2[3];
656  gslpp::complex B1p_Mw2_mlprime2_ml2[3], B1p_Mw2_mqprime2_mq2[3];
657  gslpp::complex B1p_Mw2_ml2_mlprime2[3], B1p_Mw2_mq2_mqprime2[3];
658  if (mu == Mw) {
659  for (int gen = 0; gen < 3; gen++) {
660  Bf_Mw2_mlprime2_ml2[gen] = cache.Bf_Mw2_Mw2_mfprime2_mf2(gen, Mw);
661  Bf_Mw2_mqprime2_mq2[gen] = cache.Bf_Mw2_Mw2_mfprime2_mf2(gen + 3, Mw);
662  Bfp_Mw2_mlprime2_ml2[gen] = cache.Bfp_Mw2_Mw2_mfprime2_mf2(gen, Mw);
663  Bfp_Mw2_mqprime2_mq2[gen] = cache.Bfp_Mw2_Mw2_mfprime2_mf2(gen + 3, Mw);
664  B1p_Mw2_ml2_mlprime2[gen] = cache.B1p_Mw2_Mw2_mf2_mfprime2(gen, Mw);
665  B1p_Mw2_mq2_mqprime2[gen] = cache.B1p_Mw2_Mw2_mf2_mfprime2(gen + 3, Mw);
666  B1p_Mw2_mlprime2_ml2[gen] = cache.B1p_Mw2_Mw2_mfprime2_mf2(gen, Mw);
667  B1p_Mw2_mqprime2_mq2[gen] = cache.B1p_Mw2_Mw2_mfprime2_mf2(gen + 3, Mw);
668  }
669  } else {
670  for (int gen = 0; gen < 3; gen++) {
671  Bf_Mw2_mlprime2_ml2[gen] = cache.getPV().Bf(mu2, Mw2, ml2[2 * gen + 1], ml2[2 * gen]);
672  Bf_Mw2_mqprime2_mq2[gen] = cache.getPV().Bf(mu2, Mw2, mq2[2 * gen + 1], mq2[2 * gen]);
673  Bfp_Mw2_mlprime2_ml2[gen] = cache.getPV().Bfp(mu2, Mw2, ml2[2 * gen + 1], ml2[2 * gen]);
674  Bfp_Mw2_mqprime2_mq2[gen] = cache.getPV().Bfp(mu2, Mw2, mq2[2 * gen + 1], mq2[2 * gen]);
675  B1p_Mw2_ml2_mlprime2[gen] = cache.getPV().B1p(mu2, Mw2, ml2[2 * gen], ml2[2 * gen + 1]);
676  B1p_Mw2_mq2_mqprime2[gen] = cache.getPV().B1p(mu2, Mw2, mq2[2 * gen], mq2[2 * gen + 1]);
677  B1p_Mw2_mlprime2_ml2[gen] = cache.getPV().B1p(mu2, Mw2, ml2[2 * gen + 1], ml2[2 * gen]);
678  B1p_Mw2_mqprime2_mq2[gen] = cache.getPV().B1p(mu2, Mw2, mq2[2 * gen + 1], mq2[2 * gen]);
679  }
680  }
681 
682  gslpp::complex Sigma(0.0, 0.0, false);
683  double mf2, mfprime2;
684  for (int gen = 0; gen < 3; gen++) {
685  mf2 = ml2[2 * gen];
686  mfprime2 = ml2[2 * gen + 1];
687  Sigma += -(Bf_Mw2_mlprime2_ml2[gen] + Mw2 * Bfp_Mw2_mlprime2_ml2[gen]);
688  Sigma += mfprime2 * B1p_Mw2_ml2_mlprime2[gen] + mf2 * B1p_Mw2_mlprime2_ml2[gen];
689  //
690  mf2 = mq2[2 * gen];
691  mfprime2 = mq2[2 * gen + 1];
692  Sigma += -3.0 * (Bf_Mw2_mqprime2_mq2[gen] + Mw2 * Bfp_Mw2_mqprime2_mq2[gen]);
693  Sigma += 3.0 * (mfprime2 * B1p_Mw2_mq2_mqprime2[gen] + mf2 * B1p_Mw2_mqprime2_mq2[gen]);
694  }
695  return Sigma;
696 }
697 
698 gslpp::complex EWSMOneLoopEW::SigmabarPrime_ZZ_bos_Mz2(const double mu, const double Mw_i) const
699 {
700  double mu2 = mu*mu;
701  double Mw = Mw_i;
702  double Mw2 = Mw*Mw;
703  double Mz = cache.getSM().getMz();
704  double Mz2 = Mz*Mz;
705  double mh = cache.getSM().getMHl();
706  double mh2 = mh*mh;
707  double cW2 = cache.getSM().cW2(Mw);
708  double cW4 = cW2*cW2;
709  double rw = mh2 / Mw2;
710  double rz = mh2 / Mz2;
711 
712  /* Loop functions */
713  double A0_Mw2, A0_Mz2, A0_mh2;
714  gslpp::complex B0_Mz2_Mw2_Mw2, B0_Mz2_mh2_Mz2;
715  gslpp::complex B0p_Mz2_Mw2_Mw2, B0p_Mz2_mh2_Mz2;
716  if (mu == Mz) {
717  A0_Mw2 = cache.A0_Mz2_Mw2(Mw);
718  A0_Mz2 = cache.A0_Mz2_Mz2();
719  A0_mh2 = cache.A0_Mz2_mh2();
720  B0_Mz2_Mw2_Mw2 = cache.B0_Mz2_Mz2_Mw2_Mw2(Mw);
721  B0_Mz2_mh2_Mz2 = cache.B0_Mz2_Mz2_mh2_Mz2();
722  B0p_Mz2_Mw2_Mw2 = cache.B0p_Mz2_Mz2_Mw2_Mw2(Mw);
723  B0p_Mz2_mh2_Mz2 = cache.B0p_Mz2_Mz2_mh2_Mz2();
724  } else {
725  A0_Mw2 = cache.getPV().A0(mu2, Mw2);
726  A0_Mz2 = cache.getPV().A0(mu2, Mz2);
727  A0_mh2 = cache.getPV().A0(mu2, mh2);
728  B0_Mz2_Mw2_Mw2 = cache.getPV().B0(mu2, Mz2, Mw2, Mw2);
729  B0_Mz2_mh2_Mz2 = cache.getPV().B0(mu2, Mz2, mh2, Mz2);
730  B0p_Mz2_Mw2_Mw2 = cache.getPV().B0p(mu2, Mz2, Mw2, Mw2);
731  B0p_Mz2_mh2_Mz2 = cache.getPV().B0p(mu2, Mz2, mh2, Mz2);
732  }
733 
734  gslpp::complex Sigma(0.0, 0.0, false);
735  Sigma = (1.0 / 4.0 / cW2 + 8.0 / 3.0 - 17.0 / 3.0 * cW2) * B0_Mz2_Mw2_Mw2
736  + (1.0 / 12.0 / cW2 + 4.0 / 3.0 - 17.0 / 3.0 * cW2 - 4.0 * cW4) * Mz2 * B0p_Mz2_Mw2_Mw2
737  + rw / 6.0 * (1.0 - rz / 2.0) * B0_Mz2_mh2_Mz2
738  + (1.0 - rz / 3.0 + rz * rz / 12.0) * Mz2 / cW2 * B0p_Mz2_mh2_Mz2
739  + (1.0 + 4.0 * cW2) / 3.0 / cW2 * A0_Mw2 / Mz2
740  - (1.0 - rz) / 12.0 / cW2 * (A0_Mz2 - A0_mh2) / Mz2
741  + 2.0 / 9.0 / cW2 - 10.0 / 9.0 + 4.0 / 3.0 * cW2;
742  Sigma *= cW2;
743  return Sigma;
744 }
745 
746 gslpp::complex EWSMOneLoopEW::SigmabarPrime_ZZ_fer_Mz2(const double mu, const double Mw_i) const
747 {
748  double ml2[6], mq2[6];
749  for (int i = 0; i < 6; i++) {
750  ml2[i] = cache.mf2(cache.getSM().getLeptons((QCD::lepton) i));
751  mq2[i] = cache.mf2(cache.getSM().getQuarks((QCD::quark) i), mu);
752  }
753  double mu2 = mu*mu;
754  double Mw = Mw_i;
755  double Mz = cache.getSM().getMz();
756  double Mz2 = Mz*Mz;
757 
758  /* Loop functions */
759  gslpp::complex Bf_Mz2_ml2_ml2[6], Bf_Mz2_mq2_mq2[6];
760  gslpp::complex Bfp_Mz2_ml2_ml2[6], Bfp_Mz2_mq2_mq2[6];
761  gslpp::complex B0p_Mz2_ml2_ml2[6], B0p_Mz2_mq2_mq2[6];
762  if (mu == Mz) {
763  for (int i = 0; i < 6; i++) {
764  Bf_Mz2_ml2_ml2[i] = cache.Bf_Mz2_Mz2_mf2_mf2(cache.getSM().getLeptons((QCD::lepton) i));
765  Bf_Mz2_mq2_mq2[i] = cache.Bf_Mz2_Mz2_mf2_mf2(cache.getSM().getQuarks((QCD::quark) i));
766  Bfp_Mz2_ml2_ml2[i] = cache.Bfp_Mz2_Mz2_mf2_mf2(cache.getSM().getLeptons((QCD::lepton) i));
767  Bfp_Mz2_mq2_mq2[i] = cache.Bfp_Mz2_Mz2_mf2_mf2(cache.getSM().getQuarks((QCD::quark) i));
768  B0p_Mz2_ml2_ml2[i] = cache.B0p_Mz2_Mz2_mf2_mf2(cache.getSM().getLeptons((QCD::lepton) i));
769  B0p_Mz2_mq2_mq2[i] = cache.B0p_Mz2_Mz2_mf2_mf2(cache.getSM().getQuarks((QCD::quark) i));
770  }
771  } else {
772  for (int i = 0; i < 6; i++) {
773  Bf_Mz2_ml2_ml2[i] = cache.getPV().Bf(mu2, Mz2, ml2[i], ml2[i]);
774  Bf_Mz2_mq2_mq2[i] = cache.getPV().Bf(mu2, Mz2, mq2[i], mq2[i]);
775  Bfp_Mz2_ml2_ml2[i] = cache.getPV().Bfp(mu2, Mz2, ml2[i], ml2[i]);
776  Bfp_Mz2_mq2_mq2[i] = cache.getPV().Bfp(mu2, Mz2, mq2[i], mq2[i]);
777  B0p_Mz2_ml2_ml2[i] = cache.getPV().B0p(mu2, Mz2, ml2[i], ml2[i]);
778  B0p_Mz2_mq2_mq2[i] = cache.getPV().B0p(mu2, Mz2, mq2[i], mq2[i]);
779  }
780  }
781 
782  gslpp::complex Sigma(0.0, 0.0, false);
783  double mf2, vf2, af2;
784  for (int i = 0; i < 6; i++) {
785  mf2 = ml2[i];
786  vf2 = pow(cache.v_f(cache.getSM().getLeptons((QCD::lepton) i), Mw), 2.0);
787  af2 = pow(cache.a_f(cache.getSM().getLeptons((QCD::lepton) i)), 2.0);
788  Sigma += -(vf2 + af2)*(Bf_Mz2_ml2_ml2[i] + Mz2 * Bfp_Mz2_ml2_ml2[i])
789  - 2.0 * af2 * mf2 * B0p_Mz2_ml2_ml2[i];
790  //
791  mf2 = mq2[i];
792  vf2 = pow(cache.v_f(cache.getSM().getQuarks((QCD::quark) i), Mw), 2.0);
793  af2 = pow(cache.a_f(cache.getSM().getQuarks((QCD::quark) i)), 2.0);
794  Sigma += -3.0 * (vf2 + af2)*(Bf_Mz2_mq2_mq2[i] + Mz2 * Bfp_Mz2_mq2_mq2[i])
795  - 6.0 * af2 * mf2 * B0p_Mz2_mq2_mq2[i];
796  }
797  return Sigma;
798 }
799 
800 
802 
803 double EWSMOneLoopEW::DeltaRhobar(const double mu, const double Mw_i) const
804 {
805  double Mw = Mw_i;
806  double Mz = cache.getSM().getMz();
807  return ( (SigmabarWW_bos(mu, Mw*Mw, Mw).real() + SigmabarWW_fer(mu, Mw*Mw, Mw).real()
808  - SigmabarZZ_bos(mu, Mz*Mz, Mw).real() - SigmabarZZ_fer(mu, Mz*Mz, Mw).real())
809  / Mw / Mw);
810 }
811 
812 double EWSMOneLoopEW::DeltaRhobarW(const double mu, const double Mw_i) const
813 {
814  double Mw = Mw_i;
815  return ( (SigmabarWW_bos(mu, 0.0, Mw).real() + SigmabarWW_fer(mu, 0.0, Mw).real()
816  - SigmabarWW_bos(mu, Mw*Mw, Mw).real() - SigmabarWW_fer(mu, Mw*Mw, Mw).real())
817  / Mw / Mw);
818 }
819 
820 
822 
823 double EWSMOneLoopEW::TEST_DeltaRhobar_bos(const double Mw_i) const
824 {
825  double Mz = cache.getSM().getMz();
826  double mh = cache.getSM().getMHl();
827  double Mw = Mw_i;
828  double sW2 = cache.getSM().sW2(Mw);
829  double cW2 = cache.getSM().cW2(Mw);
830  double cW4 = cW2*cW2;
831  double rw = pow(mh / Mw, 2.0);
832  double rz = pow(mh / Mz, 2.0);
833 
834  /* Logarithm and one-loop functions */
835  double log_cW2 = cache.log_cW2(Mw);
836 
837  /* B0 functions for mu=Mw */
838  gslpp::complex B0_Mw2_Mz2_Mw2_Mw2 = cache.B0_Mz2_Mz2_Mw2_Mw2(Mw) + log_cW2;
839  gslpp::complex B0_Mw2_Mz2_mh2_Mz2 = cache.B0_Mz2_Mz2_mh2_Mz2() + log_cW2;
840  gslpp::complex B0_Mw2_Mw2_Mz2_Mw2 = cache.B0_Mz2_Mw2_Mz2_Mw2(Mw) + log_cW2;
841  gslpp::complex B0_Mw2_Mw2_mh2_Mw2 = cache.B0_Mz2_Mw2_mh2_Mw2(Mw) + log_cW2;
842 
843  double DRhobar;
844  DRhobar = -(1.0 / 12.0 / cW2 + 4.0 / 3.0 - 17.0 / 3.0 * cW2 - 4.0 * cW4)
845  *(B0_Mw2_Mz2_Mw2_Mw2.real() - 1.0 / cW2 * B0_Mw2_Mw2_Mz2_Mw2.real())
846  + (1.0 - 1.0 / 3.0 * rw + 1.0 / 12.0 * rw * rw) * B0_Mw2_Mw2_mh2_Mw2.real()
847  - (1.0 - 1.0 / 3.0 * rz + 1.0 / 12.0 * rz * rz) / cW2 * B0_Mw2_Mz2_mh2_Mz2.real()
848  + 1.0 / 12.0 * sW2 * rw * rw * (log(rw) - 1.0)
849  - (1.0 / 12.0 / cW4 + 1.0 / 2.0 / cW2 - 2.0 + 1.0 / 12.0 * rw) * log_cW2
850  - 1.0 / 12.0 / cW4 - 19.0 / 36.0 / cW2 - 133.0 / 18.0 + 8.0 * cW2;
851  return DRhobar;
852 }
853 
854 double EWSMOneLoopEW::TEST_DeltaRhobarW_bos(const double Mw_i) const
855 {
856  double Mw = Mw_i;
857  double sW2 = cache.getSM().sW2(Mw);
858  double cW2 = cache.getSM().cW2(Mw);
859  double cW4 = cW2*cW2;
860  double mh = cache.getSM().getMHl();
861  double rw = pow(mh / Mw, 2.0);
862 
863  /* Logarithm and one-loop functions */
864  double log_cW2 = cache.log_cW2(Mw);
865 
866  /* B0 functions for mu=Mw */
867  gslpp::complex B0_Mw2_Mz2_Mw2 = cache.B0_Mz2_Mw2_Mz2_Mw2(Mw) + log_cW2;
868  gslpp::complex B0_Mw2_mh2_Mw2 = cache.B0_Mz2_Mw2_mh2_Mw2(Mw) + log_cW2;
869 
870  double DRhobarW;
871  DRhobarW = -(1.0 / 12.0 / cW4 + 4.0 / 3.0 / cW2 - 17.0 / 3.0 - 4.0 * cW2) * B0_Mw2_Mz2_Mw2.real()
872  - (1.0 - 1.0 / 3.0 * rw + 1.0 / 12.0 * rw * rw) * B0_Mw2_mh2_Mw2.real()
873  + (3.0 / 4.0 / (1.0 - rw) + 1.0 / 4.0 - 1.0 / 12.0 * rw) * rw * log(rw)
874  + (1.0 / 12.0 / cW4 + 17.0 / 12.0 / cW2 - 3.0 / sW2 + 1.0 / 4.0) * log_cW2
875  + 1.0 / 12.0 / cW4 + 11.0 / 8.0 / cW2 + 139.0 / 36.0 - 177.0 / 24.0 * cW2
876  + 5.0 / 8.0 * cW4 - 1.0 / 12.0 * rw * (7.0 / 2.0 - rw);
877  return DRhobarW;
878 }
879 
880 
882 
883 gslpp::complex EWSMOneLoopEW::FZa_0(const double s, const double Mw_i) const
884 {
885  double Mw = Mw_i;
886  double Mz = cache.getSM().getMz();
887  double Rz = Mz * Mz / s;
888 
889  /* Logarithm and three-point one-loop functions */
890  double log_Rz;
891  gslpp::complex C0_s_0_Mz2_0;
892  if (s == Mz * Mz) {
893  log_Rz = 0.0;
894  C0_s_0_Mz2_0 = cache.C0_Mz2_0_Mz2_0();
895  } else if (s == Mw * Mw) {
896  log_Rz = -cache.log_cW2(Mw);
897  C0_s_0_Mz2_0 = cache.C0_Mw2_0_Mz2_0(Mw);
898  } else {
899  log_Rz = log(Rz);
900  C0_s_0_Mz2_0 = cache.getPV().C0(s, 0.0, Mz*Mz, 0.0);
901  }
902 
903  gslpp::complex FZa(0.0, 0.0, false);
904  FZa = 2.0 * pow((Rz + 1.0), 2.0) * s * C0_s_0_Mz2_0
905  - (2.0 * Rz + 3.0)*(log_Rz + M_PI * gslpp::complex::i()) - 2.0 * Rz - 7.0 / 2.0;
906  return FZa;
907 }
908 
909 gslpp::complex EWSMOneLoopEW::FWa_0(const double s, const double Mw_i) const
910 {
911  double Mw = Mw_i;
912  double Mz = cache.getSM().getMz();
913  double Rw = Mw * Mw / s;
914 
915  /* Logarithm and three-point one-loop functions */
916  double log_Rw;
917  gslpp::complex C0_s_0_Mw2_0;
918  if (s == Mz * Mz) {
919  log_Rw = cache.log_cW2(Mw);
920  C0_s_0_Mw2_0 = cache.C0_Mz2_0_Mw2_0(Mw);
921  } else {
922  log_Rw = log(Rw);
923  C0_s_0_Mw2_0 = cache.getPV().C0(s, 0.0, Mw*Mw, 0.0);
924  }
925 
926  gslpp::complex FWa(0.0, 0.0, false);
927  FWa = 2.0 * pow((Rw + 1.0), 2.0) * s * C0_s_0_Mw2_0
928  - (2.0 * Rw + 3.0)*(log_Rw + M_PI * gslpp::complex::i()) - 2.0 * Rw - 7.0 / 2.0;
929  return FWa;
930 }
931 
933 {
934  return ( gslpp::complex(0.0, 0.0, false));
935 }
936 
937 gslpp::complex EWSMOneLoopEW::FWn_0(const double s, const double Mw_i) const
938 {
939  double Mw = Mw_i;
940  double Mw2 = Mw*Mw;
941  double Mz = cache.getSM().getMz();
942  double Rw = Mw * Mw / s;
943 
944  /* Two- and three-point one-loop functions */
945  gslpp::complex B0_Mw_s_Mw2_Mw2;
946  gslpp::complex C0_s_Mw2_0_Mw2;
947  if (s == Mz * Mz) {
948  B0_Mw_s_Mw2_Mw2 = cache.B0_Mw2_Mz2_Mw2_Mw2(Mw);
949  C0_s_Mw2_0_Mw2 = cache.C0_Mz2_Mw2_0_Mw2(Mw);
950  } else {
951  B0_Mw_s_Mw2_Mw2 = cache.getPV().B0(Mw2, s, Mw2, Mw2);
952  C0_s_Mw2_0_Mw2 = cache.getPV().C0(s, Mw2, 0.0, Mw2);
953  }
954 
955  gslpp::complex FWn(0.0, 0.0, false);
956  FWn = -2.0 * (Rw + 2.0) * Mw * Mw * C0_s_Mw2_0_Mw2
957  - (2.0 * Rw + 7.0 / 3.0 - 3.0 / 2.0 / Rw - 1.0 / 12.0 / Rw / Rw) * B0_Mw_s_Mw2_Mw2
958  + 2.0 * Rw + 9.0 / 2.0 - 11.0 / 18.0 / Rw + 1.0 / 18.0 / Rw / Rw;
959  return FWn;
960 }
961 
962 gslpp::complex EWSMOneLoopEW::FWa_t(const double s, const double Mw_i) const
963 {
964  double Mw = Mw_i;
965  double Mw2 = Mw*Mw;
966  double Mz = cache.getSM().getMz();
967  double Rw = Mw * Mw / s;
968  double Mt = cache.getSM().getMtpole();
969  double Mt2 = Mt*Mt;
970  double wt = Mt2 / Mw2;
971 
972  /* Logarithm and two- and three-point one-loop functions */
973  double log_wt = -2.0 * cache.logMZtoMTOP() - cache.log_cW2(Mw);
974  double log_Rw;
975  gslpp::complex B0_Mw2_s_Mt2_Mt2;
976  gslpp::complex C0_s_Mt2_Mw2_Mt2, C0_s_0_Mw2_0;
977  if (s == Mz * Mz) {
978  log_Rw = cache.log_cW2(Mw);
979  B0_Mw2_s_Mt2_Mt2 = cache.B0_Mw2_Mz2_Mt2_Mt2(Mw);
980  C0_s_Mt2_Mw2_Mt2 = cache.C0_Mz2_Mt2_Mw2_Mt2(Mw);
981  C0_s_0_Mw2_0 = cache.C0_Mz2_0_Mw2_0(Mw);
982  } else {
983  log_Rw = log(Rw);
984  B0_Mw2_s_Mt2_Mt2 = cache.getPV().B0(Mw2, s, Mt2, Mt2);
985  C0_s_Mt2_Mw2_Mt2 = cache.getPV().C0(s, Mt2, Mw2, Mt2);
986  C0_s_0_Mw2_0 = cache.getPV().C0(s, 0.0, Mw2, 0.0);
987  }
988 
989  gslpp::complex FWa(0.0, 0.0, false);
990  FWa = 2.0 * (Rw + 1.0)*(Rw + 1.0) * s * (C0_s_Mt2_Mw2_Mt2 - C0_s_0_Mw2_0)
991  + (2.0 * Rw + 3.0)*(-B0_Mw2_s_Mt2_Mt2 + log_Rw + M_PI * gslpp::complex::i() + 2.0)
992  - wt * ((3.0 * Rw + 2.0 - wt - wt * wt * Rw) * Mw * Mw * C0_s_Mt2_Mw2_Mt2
993  + (Rw + 1.0 / 2.0 + wt * Rw)*(1.0 - B0_Mw2_s_Mt2_Mt2)
994  - (2.0 * Rw + 1.0 / 2.0 - 2.0 / (wt - 1.0)
995  + 3.0 / 2.0 / (wt - 1.0) / (wt - 1.0) + wt * Rw) * log_wt
996  + 3.0 / 2.0 / (wt - 1.0) + 3.0 / 4.0);
997  return FWa;
998 }
999 
1000 gslpp::complex EWSMOneLoopEW::FbarWa_t(const double s, const double Mw_i) const
1001 {
1002  double Mw = Mw_i;
1003  double Mw2 = Mw*Mw;
1004  double Mz = cache.getSM().getMz();
1005  double Rw = Mw * Mw / s;
1006  double Mt = cache.getSM().getMtpole();
1007  double Mt2 = Mt*Mt;
1008  double wt = Mt2 / Mw2;
1009 
1010  /* Logarithm and two- and three-point one-loop functions */
1011  double log_wt = -2.0 * cache.logMZtoMTOP() - cache.log_cW2(Mw);
1012  gslpp::complex B0_Mw2_s_Mt2_Mt2;
1013  gslpp::complex C0_s_Mt2_Mw2_Mt2;
1014  if (s == Mz * Mz) {
1015  B0_Mw2_s_Mt2_Mt2 = cache.B0_Mw2_Mz2_Mt2_Mt2(Mw);
1016  C0_s_Mt2_Mw2_Mt2 = cache.C0_Mz2_Mt2_Mw2_Mt2(Mw);
1017  } else {
1018  B0_Mw2_s_Mt2_Mt2 = cache.getPV().B0(Mw2, s, Mt2, Mt2);
1019  C0_s_Mt2_Mw2_Mt2 = cache.getPV().C0(s, Mt2, Mw2, Mt2);
1020  }
1021 
1022  gslpp::complex FbarWa(0.0, 0.0, false);
1023  FbarWa = -wt * ((Rw + 2.0 - wt * (2.0 - wt) * Rw) * Mw * Mw * C0_s_Mt2_Mw2_Mt2
1024  - (1.0 / 2.0 - Rw + wt * Rw)*(-B0_Mw2_s_Mt2_Mt2 + 1.0)
1025  + wt * Rw * log_wt);
1026  return FbarWa;
1027 }
1028 
1029 gslpp::complex EWSMOneLoopEW::FWn_t(const double s, const double Mw_i) const
1030 {
1031  double Mw = Mw_i;
1032  double Mw2 = Mw*Mw;
1033  double Mz = cache.getSM().getMz();
1034  double Rw = Mw * Mw / s;
1035  double Mt = cache.getSM().getMtpole();
1036  double Mt2 = Mt*Mt;
1037  double wt = Mt2 / Mw2;
1038 
1039  /* Logarithm and two- and three-point one-loop functions */
1040  double log_wt = -2.0 * cache.logMZtoMTOP() - cache.log_cW2(Mw);
1041  gslpp::complex B0_Mw2_s_Mw2_Mw2;
1042  gslpp::complex C0_s_Mw2_Mt2_Mw2, C0_s_Mw2_0_Mw2;
1043  if (s == Mz * Mz) {
1044  B0_Mw2_s_Mw2_Mw2 = cache.B0_Mw2_Mz2_Mw2_Mw2(Mw);
1045  C0_s_Mw2_Mt2_Mw2 = cache.C0_Mz2_Mw2_Mt2_Mw2(Mw);
1046  C0_s_Mw2_0_Mw2 = cache.C0_Mz2_Mw2_0_Mw2(Mw);
1047  } else {
1048  B0_Mw2_s_Mw2_Mw2 = cache.getPV().B0(Mw2, s, Mw2, Mw2);
1049  C0_s_Mw2_Mt2_Mw2 = cache.getPV().C0(s, Mw2, Mt2, Mw2);
1050  C0_s_Mw2_0_Mw2 = cache.getPV().C0(s, Mw2, 0.0, Mw2);
1051  }
1052 
1053  gslpp::complex FWn(0.0, 0.0, false);
1054  FWn = -2.0 * (Rw + 2.0) * Mw * Mw * (C0_s_Mw2_Mt2_Mw2 - C0_s_Mw2_0_Mw2)
1055  + wt * ((3.0 * Rw + 5.0 / 2.0 - 2.0 / Rw - wt * (2.0 - 1.0 / 2.0 / Rw)
1056  + wt * wt * (1.0 / 2.0 - Rw)) * Mw * Mw * C0_s_Mw2_Mt2_Mw2
1057  + (Rw + 1.0 - 1.0 / 4.0 / Rw - wt * (1.0 / 2.0 - Rw))*(B0_Mw2_s_Mw2_Mw2 - 1.0)
1058  + (2.0 * Rw + 1.0 / 2.0 - 2.0 / (wt - 1.0)
1059  + 3.0 / 2.0 / (wt - 1.0) / (wt - 1.0) - wt * (1.0 / 2.0 - Rw)) * log_wt
1060  - 3.0 / 2.0 / (wt - 1.0) + 1.0 / 4.0
1061  - 1.0 / 2.0 / Rw);
1062  return FWn;
1063 }
1064 
1065 gslpp::complex EWSMOneLoopEW::FZ(const double s, const double Mw_i) const
1066 {
1067  return ( FZa_0(s, Mw_i));
1068 }
1069 
1070 gslpp::complex EWSMOneLoopEW::FW(const double s, const Particle f, const double Mw_i) const
1071 {
1072  double Mw = Mw_i;
1073  double cW2 = cache.getSM().cW2(Mw);
1074 
1075  if (f.is("LEPTON")) {
1076  QCD::lepton lprime;
1077  if (f.is("NEUTRINO_1"))
1078  lprime = StandardModel::ELECTRON;
1079  else if (f.is("NEUTRINO_2"))
1080  lprime = StandardModel::MU;
1081  else if (f.is("NEUTRINO_3"))
1082  lprime = StandardModel::TAU;
1083  else if (f.is("ELECTRON"))
1084  lprime = StandardModel::NEUTRINO_1;
1085  else if (f.is("MU"))
1086  lprime = StandardModel::NEUTRINO_2;
1087  else if (f.is("TAU"))
1088  lprime = StandardModel::NEUTRINO_3;
1089  else
1090  throw std::runtime_error("EWSMOneLoopEW::FW(): " + f.getName() + " is not allowed");
1091  return ( cW2 * FWn_0(s, Mw) - cache.sigma_f(cache.getSM().getLeptons(lprime), Mw) / 2.0 * FWa_0(s, Mw)
1092  - FbarWa_0(s) / 2.0);
1093  } else if (f.is("QUARK")) {
1094  QCD::quark qprime;
1095  if (f.is("UP"))
1096  qprime = QCD::DOWN;
1097  else if (f.is("DOWN"))
1098  qprime = QCD::UP;
1099  else if (f.is("CHARM"))
1100  qprime = QCD::STRANGE;
1101  else if (f.is("STRANGE"))
1102  qprime = QCD::CHARM;
1103  else if (f.is("BOTTOM"))
1104  qprime = QCD::TOP;
1105  else
1106  throw std::runtime_error("EWSMOneLoopEW::FW(): TOP is not allowed");
1107  gslpp::complex FW(0.0, 0.0, false);
1108  FW = cW2 * FWn_0(s, Mw) - cache.sigma_f(cache.getSM().getQuarks(qprime), Mw) / 2.0 * FWa_0(s, Mw)
1109  - FbarWa_0(s) / 2.0;
1110  if (f.is("BOTTOM"))
1111  FW += cW2 * FWn_t(s, Mw) - cache.sigma_f(cache.getSM().getQuarks(qprime), Mw) / 2.0 * FWa_t(s, Mw)
1112  - FbarWa_t(s, Mw) / 2.0;
1113  return FW;
1114  } else
1115  throw std::runtime_error("EWSMOneLoopEW::FW_q(): Wrong argument");
1116 }
1117 
1118 
1120 
1121 gslpp::complex EWSMOneLoopEW::TEST_FWn(const double s, const double mf, const double Mw_i) const
1122 {
1123  double Mw = Mw_i;
1124  double Mw2 = Mw*Mw;
1125  double Rw = Mw2 / s;
1126  double mf2 = mf*mf;
1127  double wf = mf2 / Mw2;
1128 
1129  /* Logarithm and two- and three-point one-loop functions */
1130  double log_wf = log(wf);
1131  double A0_Mw2 = cache.getPV().A0(Mw2, Mw2);
1132  double A0_mf2 = cache.getPV().A0(Mw2, mf2);
1133  gslpp::complex B0_Mw2_s_Mw2_Mw2 = cache.getPV().B0(Mw2, s, Mw2, Mw2);
1134  gslpp::complex B0_Mw2_0_mf2_Mw2 = cache.getPV().B0(Mw2, 0.0, mf2, Mw2);
1135  gslpp::complex C0_s_Mw2_mf2_Mw2 = cache.getPV().C0(s, Mw2, mf2, Mw2);
1136  //gslpp::complex C0_s_Mw2_0_Mw2 = cache.getPV().C0(s, Mw2, 0.0, Mw2);
1137 
1138  gslpp::complex FWn(0.0, 0.0, false);
1139  /* Eq.(5.586) in Bardin and Passarino's book */
1140  FWn = ((2.0 + wf)*(1.0 - wf)*(1.0 - wf) * Rw + 4.0 - 5.0 / 2.0 * wf + 2.0 * wf * wf
1141  - wf * wf * wf / 2.0 + wf * (2.0 - wf / 2.0) / Rw) * Mw * Mw * C0_s_Mw2_mf2_Mw2
1142  - (-(2.0 + wf)*(1.0 - wf) * Rw - 3.0 + 3.0 / 2.0 * wf - wf * wf / 2.0)
1143  *(B0_Mw2_s_Mw2_Mw2 - B0_Mw2_0_mf2_Mw2)
1144  - (2.0 / 3.0 - wf / 2.0 + (3.0 / 2.0 - wf / 4.0) / Rw + 1.0 / 12.0 / Rw / Rw) * B0_Mw2_s_Mw2_Mw2
1145  - A0_mf2 / Mw / Mw - (2.0 / 3.0 + 1.0 / 6.0 / Rw) * A0_Mw2 / Mw / Mw
1146  - 2.0 / 3.0 - wf / 2.0 + (4.0 / 9.0 + wf / 4.0) / Rw - 1.0 / 18.0 / Rw / Rw;
1147 
1148  /* Eq.(5.500) in Bardin and Passarino's book */
1149  double wW;
1150  if (mf == 0.0) {
1151  wW = 3.0 / 2.0;
1152  } else {
1153  wW = 5.0 / 4.0 * wf + 3.0 * (1.0 - wf / 2.0) * wf * wf / (wf - 1.0) / (wf - 1.0) * log_wf
1154  - 3.0 / 2.0 / (wf - 1.0);
1155  }
1156 
1157  return ( -FWn + wW);
1158 }
1159 
1160 
1161 
1162 
1163 
QCD::TAU
Definition: QCD.h:316
EWSMcache::mf2
double mf2(const Particle f, const double mu=0.0, const orders order=FULLNNLO) const
The mass squared of an SM fermion.
Definition: EWSMcache.h:257
QCD::NEUTRINO_3
Definition: QCD.h:315
EWSMOneLoopEW::FbarWa_0
gslpp::complex FbarWa_0(const double s) const
The form factor .
Definition: EWSMOneLoopEW.cpp:932
StandardModel::cW2
virtual double cW2(const double Mw_i) const
The square of the cosine of the weak mixing angle in the on-shell scheme, denoted as .
Definition: StandardModel.cpp:989
EWSMcache::C0_Mz2_0_Mw2_0
gslpp::complex C0_Mz2_0_Mw2_0(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:957
PVfunctions::A0
double A0(const double mu2, const double m2) const
.
Definition: PVfunctions.cpp:23
EWSMcache::C0_Mz2_Mt2_Mw2_Mt2
gslpp::complex C0_Mz2_Mt2_Mw2_Mt2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:942
EWSMcache::B0p_Mz2_Mz2_mf2_mf2
gslpp::complex B0p_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
Definition: EWSMcache.cpp:596
PVfunctions::B1p
gslpp::complex B1p(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:356
Particle::is
bool is(std::string name_i) const
Definition: Particle.cpp:23
Particle
A class for particles.
Definition: Particle.h:26
EWSMOneLoopEW::DeltaAlpha_l
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
Definition: EWSMOneLoopEW.cpp:19
EWSMcache::Bfp_Mz2_Mz2_mf2_mf2
gslpp::complex Bfp_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
Definition: EWSMcache.cpp:885
PVfunctions::Bf
gslpp::complex Bf(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:265
EWSMOneLoopEW::DeltaRbar_rem
double DeltaRbar_rem(const double Mw_i) const
.
Definition: EWSMOneLoopEW.cpp:73
EWSMOneLoopEW::PibarGammaGamma_fer
gslpp::complex PibarGammaGamma_fer(const double mu, const double s, const Particle f) const
The fermionic contribution to the self-energy of the photon in the Unitary gauge, associated with loo...
Definition: EWSMOneLoopEW.cpp:485
EWSMOneLoopEW::DeltaRho
double DeltaRho(const double Mw_i) const
Leading one-loop contribution of to , denoted as .
Definition: EWSMOneLoopEW.cpp:43
EWSMcache::getPV
const PVfunctions getPV() const
A get method to access the member reference to the object of type StandardModel passed to the constru...
Definition: EWSMcache.h:106
EWSMcache::Bf_Mz2_0_mfprime2_mf2
gslpp::complex Bf_Mz2_0_mfprime2_mf2(const int gen) const
A cache method.
Definition: EWSMcache.cpp:831
EWSMcache::C0_Mz2_Mw2_0_Mw2
gslpp::complex C0_Mz2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:972
EWSMOneLoopEW::SigmabarZZ_fer
gslpp::complex SigmabarZZ_fer(const double mu, const double s, const double Mw_i) const
The fermionic contribution to the self-energy of the boson in the Unitary gauge, .
Definition: EWSMOneLoopEW.cpp:399
EWSMOneLoopEW::TEST_DeltaRhobarW_bos
double TEST_DeltaRhobarW_bos(const double Mw_i) const
A test function.
Definition: EWSMOneLoopEW.cpp:854
EWSMcache::C0_Mw2_Mw2_0_Mz2
gslpp::complex C0_Mw2_Mw2_0_Mz2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:987
QCD::UP
Definition: QCD.h:324
EWSMcache::Bf_Mz2_Mz2_mf2_mf2
gslpp::complex Bf_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
Definition: EWSMcache.cpp:773
EWSMOneLoopEW::PibarZgamma_fer
gslpp::complex PibarZgamma_fer(const double mu, const double s, const double Mw_i) const
The fermionic contribution to the self-energy of the - mixing in the Unitary gauge,...
Definition: EWSMOneLoopEW.cpp:541
QCD::CHARM
Definition: QCD.h:326
EWSMcache::Bf_Mz2_0_mf2_mf2
gslpp::complex Bf_Mz2_0_mf2_mf2(const Particle f) const
A cache method.
Definition: EWSMcache.cpp:788
EWSMOneLoopEW::FbarWa_t
gslpp::complex FbarWa_t(const double s, const double Mw_i) const
The form factor .
Definition: EWSMOneLoopEW.cpp:1000
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
EWSMcache::B0_Mz2_Mz2_Mw2_Mw2
gslpp::complex B0_Mz2_Mz2_Mw2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:326
QCD::NEUTRINO_2
Definition: QCD.h:313
gslpp::log
complex log(const complex &z)
Definition: gslpp_complex.cpp:342
EWSMOneLoopEW::deltaKappa_rem_f
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
Definition: EWSMOneLoopEW.cpp:143
EWSMcache::B0_Mz2_Mz2_mf2_mf2
gslpp::complex B0_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
Definition: EWSMcache.cpp:476
QCD::ELECTRON
Definition: QCD.h:312
EWSMOneLoopEW::deltaRho_rem_f
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
Definition: EWSMOneLoopEW.cpp:113
EWSMOneLoopEW::SigmabarWW_fer
gslpp::complex SigmabarWW_fer(const double mu, const double s, const double Mw_i) const
The fermionic contribution to the self-energy of the boson in the Unitary gauge, .
Definition: EWSMOneLoopEW.cpp:287
StandardModel::sW2
virtual double sW2(const double Mw_i) const
The square of the sine of the weak mixing angle in the on-shell scheme, denoted as .
Definition: StandardModel.cpp:1000
EWSMcache::B0p_Mz2_0_Mz2_Mw2
gslpp::complex B0p_Mz2_0_Mz2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:521
EWSMcache::A0_Mz2_Mw2
double A0_Mz2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:197
EWSMcache::B0_Mz2_Mw2_0_Mw2
gslpp::complex B0_Mz2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:371
EWSMcache::A0_Mw2_Mz2
double A0_Mw2_Mz2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:225
EWSMcache::getSM
const StandardModel & getSM() const
Definition: EWSMcache.h:56
EWSMcache::sigma_f
double sigma_f(const Particle f, const double Mw_i) const
.
Definition: EWSMcache.h:312
EWSMOneLoopEW::deltaRho_rem_tmp
gslpp::complex deltaRho_rem_tmp(const gslpp::complex u_f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
Definition: EWSMOneLoopEW.cpp:91
EWSMOneLoopEW::SigmabarPrime_ZZ_fer_Mz2
gslpp::complex SigmabarPrime_ZZ_fer_Mz2(const double mu, const double Mw_i) const
The derivative of the fermionic contribution to the self-energy of the boson for in the Unitary gau...
Definition: EWSMOneLoopEW.cpp:746
EWSMcache::A0_Mz2_mh2
double A0_Mz2_mh2() const
A cache method.
Definition: EWSMcache.cpp:211
EWSMOneLoopEW::SigmabarPrime_WW_fer_Mw2
gslpp::complex SigmabarPrime_WW_fer_Mw2(const double mu, const double Mw_i) const
The derivative of the fermionic contribution to the self-energy of the boson for in the Unitary gau...
Definition: EWSMOneLoopEW.cpp:642
EWSMcache::B1_Mz2_Mw2_mfprime2_mf2
gslpp::complex B1_Mz2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:692
EWSMOneLoopEW::TEST_FWn
gslpp::complex TEST_FWn(const double s, const double mf, const double Mw_i) const
A test function for with a finite fermion mass.
Definition: EWSMOneLoopEW.cpp:1121
EWSMOneLoopEW::FWn_0
gslpp::complex FWn_0(const double s, const double Mw_i) const
The form factor .
Definition: EWSMOneLoopEW.cpp:937
EWSMcache::B1p_Mw2_Mw2_mfprime2_mf2
gslpp::complex B1p_Mw2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:746
PVfunctions::C0
gslpp::complex C0(const double p2, const double m02, const double m12, const double m22) const
.
Definition: PVfunctions.cpp:469
EWSMOneLoopEW.h
QCD::TOP
Definition: QCD.h:328
EWSMOneLoopEW::FZ
gslpp::complex FZ(const double s, const double Mw_i) const
The unified form factor .
Definition: EWSMOneLoopEW.cpp:1065
EWSMOneLoopEW::deltaKappa_rem_tmp
gslpp::complex deltaKappa_rem_tmp(const double deltaf, const gslpp::complex uf, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
Definition: EWSMOneLoopEW.cpp:124
gslpp::pow
complex pow(const complex &z1, const complex &z2)
Definition: gslpp_complex.cpp:395
EWSMcache::B0_Mw2_Mw2_Mz2_Mw2
gslpp::complex B0_Mw2_Mw2_Mz2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:431
EWSMOneLoopEW::rho_GammaW
double rho_GammaW(const Particle fi, const Particle fj, const double Mw_i) const
EW radiative corrections to the width of , denoted as .
Definition: EWSMOneLoopEW.cpp:190
EWSMcache::C0_Mz2_0_Mz2_0
gslpp::complex C0_Mz2_0_Mz2_0() const
A cache method.
Definition: EWSMcache.cpp:1017
gslpp::complex::i
static const complex & i()
Definition: gslpp_complex.cpp:154
EWSMcache::B1_Mz2_Mw2_mf2_mfprime2
gslpp::complex B1_Mz2_Mw2_mf2_mfprime2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:665
EWSMcache
A class for cache variables used in computing radiative corrections to the EW precision observables.
Definition: EWSMcache.h:40
QCD::getMtpole
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:588
EWSMOneLoopEW::rho_GammaW_tmp
double rho_GammaW_tmp(const double Qi, const double Qj, const double Mw_i) const
EW radiative corrections to the widths of , denoted as .
Definition: EWSMOneLoopEW.cpp:155
EWSMcache::B0_Mz2_Mw2_mh2_Mw2
gslpp::complex B0_Mz2_Mw2_mh2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:281
EWSMcache::C0_Mw2_0_Mz2_0
gslpp::complex C0_Mw2_0_Mz2_0(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:1002
EWSMcache::B1_Mz2_0_mf2_mfprime2
gslpp::complex B1_Mz2_0_mf2_mfprime2(const int gen) const
A cache method.
Definition: EWSMcache.cpp:611
EWSMcache::A0_Mz2_Mz2
double A0_Mz2_Mz2() const
A cache method.
Definition: EWSMcache.cpp:253
EWSMcache::a_f
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
Definition: EWSMcache.h:301
PVfunctions::B0p
gslpp::complex B0p(const double muIR2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:276
EWSMOneLoopEW::DeltaRhobarW
double DeltaRhobarW(const double mu, const double Mw_i) const
.
Definition: EWSMOneLoopEW.cpp:812
QCD::getQuarks
Particle getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:534
EWSMOneLoopEW::SigmabarPrime_ZZ_bos_Mz2
gslpp::complex SigmabarPrime_ZZ_bos_Mz2(const double mu, const double Mw_i) const
The derivative of the bosonic contribution to the self-energy of the boson for in the Unitary gauge...
Definition: EWSMOneLoopEW.cpp:698
EWSMcache::Bf_Mz2_Mw2_mfprime2_mf2
gslpp::complex Bf_Mz2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:805
QCD::quark
quark
An enum type for quarks.
Definition: QCD.h:323
EWSMcache::delta_f
double delta_f(const Particle f, const double Mw_i) const
.
Definition: EWSMcache.h:323
EWSMcache::A0_Mw2_mh2
double A0_Mw2_mh2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:239
EWSMOneLoopEW::FW
gslpp::complex FW(const double s, const Particle f, const double Mw_i) const
The unified form factor for .
Definition: EWSMOneLoopEW.cpp:1070
EWSMOneLoopEW::SigmabarWW_bos
gslpp::complex SigmabarWW_bos(const double mu, const double s, const double Mw_i) const
The bosonic contribution to the self-energy of the boson in the Unitary gauge, .
Definition: EWSMOneLoopEW.cpp:203
EWSMcache::B0p_Mw2_Mw2_0_Mw2
gslpp::complex B0p_Mw2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:581
EWSMOneLoopEW::DeltaAlpha_t
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
Definition: EWSMOneLoopEW.cpp:35
EWSMcache::B0_Mw2_Mw2_mh2_Mw2
gslpp::complex B0_Mw2_Mw2_mh2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:446
EWSMcache::B0_Mw2_Mz2_Mt2_Mt2
gslpp::complex B0_Mw2_Mz2_Mt2_Mt2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:311
EWSMOneLoopEW::SigmabarPrime_WW_bos_Mw2
gslpp::complex SigmabarPrime_WW_bos_Mw2(const double mu, const double Mw_i) const
The derivative of the bosonic contribution to the self-energy of the boson for in the Unitary gauge...
Definition: EWSMOneLoopEW.cpp:589
EWSMcache::C0_Mz2_Mw2_Mt2_Mw2
gslpp::complex C0_Mz2_Mw2_Mt2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:927
EWSMcache::logMZtoMTOP
double logMZtoMTOP() const
A cache method.
Definition: EWSMcache.cpp:112
EWSMcache::B0p_Mz2_Mz2_Mw2_Mw2
gslpp::complex B0p_Mz2_Mz2_Mw2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:536
EWSMcache::log_cW2
double log_cW2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:140
EWSMOneLoopEW::FWa_0
gslpp::complex FWa_0(const double s, const double Mw_i) const
The form factor .
Definition: EWSMOneLoopEW.cpp:909
EWSMcache::B0_Mw2_Mz2_Mw2_Mw2
gslpp::complex B0_Mw2_Mz2_Mw2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:416
StandardModel::getMz
double getMz() const
A get method to access the mass of the boson .
Definition: StandardModel.h:718
EWSMcache::A0_Mw2_Mw2
double A0_Mw2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:267
EWSMOneLoopEW::DeltaR_rem
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
Definition: EWSMOneLoopEW.cpp:49
EWSMcache::B0_Mz2_0_Mz2_Mw2
gslpp::complex B0_Mz2_0_Mz2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:386
Mw
An observable class for the -boson mass.
Definition: Mw.h:22
EWSMcache::B0_Mz2_Mz2_mh2_Mz2
gslpp::complex B0_Mz2_Mz2_mh2_Mz2() const
A cache method.
Definition: EWSMcache.cpp:341
EWSMOneLoopEW::FWn_t
gslpp::complex FWn_t(const double s, const double Mw_i) const
The form factor .
Definition: EWSMOneLoopEW.cpp:1029
EWSMcache::B0_Mz2_0_mh2_Mw2
gslpp::complex B0_Mz2_0_mh2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:296
QCD::STRANGE
Definition: QCD.h:327
EWSMcache::B0_Mz2_0_0_Mw2
gslpp::complex B0_Mz2_0_0_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:401
gslpp::complex::real
const double & real() const
Definition: gslpp_complex.cpp:53
EWSMcache::B1_Mz2_0_mfprime2_mf2
gslpp::complex B1_Mz2_0_mfprime2_mf2(const int gen) const
A cache method.
Definition: EWSMcache.cpp:638
EWSMOneLoopEW::cache
const EWSMcache & cache
A reference to an object of type EWSMcache.
Definition: EWSMOneLoopEW.h:846
EWSMcache::B0p_Mw2_Mw2_mh2_Mw2
gslpp::complex B0p_Mw2_Mw2_mh2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:566
PVfunctions::Bfp
gslpp::complex Bfp(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:458
EWSMcache::B0p_Mw2_Mw2_Mz2_Mw2
gslpp::complex B0p_Mw2_Mw2_Mz2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:551
EWSMOneLoopEW::FZa_0
gslpp::complex FZa_0(const double s, const double Mw_i) const
The form factor .
Definition: EWSMOneLoopEW.cpp:883
EWSMOneLoopEW::PibarGammaGamma_bos
gslpp::complex PibarGammaGamma_bos(const double mu, const double s, const double Mw_i) const
The bosonic contribution to the self-energy of the photon in the Unitary gauge, .
Definition: EWSMOneLoopEW.cpp:452
EWSMOneLoopEW::SigmabarZZ_bos
gslpp::complex SigmabarZZ_bos(const double mu, const double s, const double Mw_i) const
The bosonic contribution to the self-energy of the boson in the Unitary gauge, .
Definition: EWSMOneLoopEW.cpp:348
StandardModel::getMHl
virtual double getMHl() const
A get method to retrieve the Higgs mass .
Definition: StandardModel.h:765
PVfunctions::B0
gslpp::complex B0(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:41
EWSMcache::Q_f
double Q_f(const Particle f) const
The charge of an SM fermion .
Definition: EWSMcache.h:268
EWSMcache::B1p_Mw2_Mw2_mf2_mfprime2
gslpp::complex B1p_Mw2_Mw2_mf2_mfprime2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:719
PVfunctions::B1
gslpp::complex B1(const double mu2, const double p2, const double m02, const double m12) const
.
Definition: PVfunctions.cpp:120
EWSMcache::B0p_Mz2_0_mh2_Mw2
gslpp::complex B0p_Mz2_0_mh2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:491
EWSMcache::Bf_Mw2_Mw2_mfprime2_mf2
gslpp::complex Bf_Mw2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:858
QCD::DOWN
Definition: QCD.h:325
EWSMOneLoopEW::TEST_DeltaRhobar_bos
double TEST_DeltaRhobar_bos(const double Mw_i) const
A test function.
Definition: EWSMOneLoopEW.cpp:823
EWSMOneLoopEW::FWa_t
gslpp::complex FWa_t(const double s, const double Mw_i) const
The form factor .
Definition: EWSMOneLoopEW.cpp:962
EWSMOneLoopEW::PibarZgamma_bos
gslpp::complex PibarZgamma_bos(const double mu, const double s, const double Mw_i) const
The bosonic contribution to the self-energy of the - mixing in the Unitary gauge,...
Definition: EWSMOneLoopEW.cpp:534
StandardModel::getAle
double getAle() const
A get method to retrieve the fine-structure constant .
Definition: StandardModel.h:745
EWSMcache::v_f
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
Definition: EWSMcache.h:290
EWSMcache::B0p_Mz2_Mz2_mh2_Mz2
gslpp::complex B0p_Mz2_Mz2_mh2_Mz2() const
A cache method.
Definition: EWSMcache.cpp:506
EWSMcache::B0_Mw2_Mw2_0_Mw2
gslpp::complex B0_Mw2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:461
QCD::NEUTRINO_1
Definition: QCD.h:311
QCD::MU
Definition: QCD.h:314
EWSMcache::B0_Mz2_Mw2_Mz2_Mw2
gslpp::complex B0_Mz2_Mw2_Mz2_Mw2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:356
EWSMOneLoopEW::EWSMOneLoopEW
EWSMOneLoopEW(const EWSMcache &cache_i)
Constructor.
Definition: EWSMOneLoopEW.cpp:11
QCD::lepton
lepton
An enum type for leptons.
Definition: QCD.h:310
Particle::getName
std::string getName() const
Definition: Particle.h:147
EWSMOneLoopEW::DeltaRhobar
double DeltaRhobar(const double mu, const double Mw_i) const
.
Definition: EWSMOneLoopEW.cpp:803
EWSMcache::Bfp_Mw2_Mw2_mfprime2_mf2
gslpp::complex Bfp_Mw2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:900
StandardModel::getLeptons
Particle getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
Definition: StandardModel.h:709