a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
EWSMTwoLoopEW Class Reference

A class for \(O(\alpha^2)\) two-loop corrections to the EW precision observables. More...

#include <EWSMTwoLoopEW.h>

Detailed Description

A class for \(O(\alpha^2)\) two-loop corrections to the EW precision observables.

Author
HEPfit Collaboration

This class handles two-loop EW contributions of \(O(\alpha^2)\) to the following quantities, which are relevant to the EW precision observables:

  • \(\Delta\alpha_{\mathrm{lept}}(M_Z^2)\)   (with DeltaAlpha_l()),
  • \(\Delta\alpha_{\mathrm{top}}(M_Z^2)\)   (with DeltaAlpha_t()),
  • \(\Delta\rho\)       (with DeltaRho()),
  • \(\Delta r_{\mathrm{rem}}\)   (with DeltaR_rem()),
  • \(\delta\rho_{\mathrm{rem}}^{f}\)   (with deltaRho_rem_l() and deltaRho_rem_q()),
  • \(\delta\kappa_{\mathrm{rem}}^{f}\)   (with deltaKappa_rem_l() and deltaKappa_rem_q()),

and the \(O(\alpha^2)\) corrections to \(\Delta\rho\) and to \(Zb\bar{b}\):

  • \(\rho^{(2)}\)       (with rho_2()),
  • \(\tau^{(2)}\)       (with tau_2()).

See also the description of EWSM class for their definitions. The \(O(\alpha^2)\) two-loop EW contributions to the vacuum polarization amplitudes of the gauge bosons were calculated in [32], [31], [120], [121], [110], [109] and [107] with large- \(m_t\) expansion. In the current class, the \(O(\alpha^2(m_t^4/m_Z^4 + m_t^2/M_Z^2))\) corrections to \(\Delta\rho\), \(\Delta r_{\mathrm{rem}}\), \(\delta\rho_{\mathrm{rem}}^{f}\) and \(\delta\kappa_{\mathrm{rem}}^{f}\) and the \(O(\alpha^2 m_t^4/M_Z^4)\) corrections to \(Zb\bar{b}\), denoted by \(\rho^{(2)}\) and \(\tau^{(2)}\), are computed with the auxiliary functions defined as private members. In [110], the former corrections were calculated in the MSbar scheme in order to undertake resummations correctly. In subsequent papers [109] and [107], the resultant two-loop contributions were rewritten in terms of parameters in the on-shell scheme by taking into account additional contributions, which correspond to the member functions with the word "Add".

Definition at line 57 of file EWSMTwoLoopEW.h.

Public Member Functions

double DeltaAlpha_l (const double s) const
 Leptonic contribution of \(O(\alpha^2)\) to the electromagnetic coupling \(\alpha\), denoted as \(\Delta\alpha_{\mathrm{lept}}^{\alpha^2}(s)\). More...
 
double DeltaAlpha_t (const double s) const
 Top-quark contribution of \(O(\alpha^2)\) to the electromagnetic coupling \(\alpha\), denoted as \(\Delta\alpha_{\mathrm{top}}^{\alpha^2}(s)\). More...
 
gslpp::complex deltaKappa_rem_f (const Particle f, const double Mw_i) const
 Remainder contribution of \(O(\alpha^2)\) to the effective couplings \(\kappa_Z^f\), denoted as \(\delta\kappa_{\mathrm{rem}}^{f,\, \alpha^2}\). More...
 
double DeltaR_rem (const double Mw_i) const
 Remainder contribution of \(O(\alpha^2)\) to \(\Delta r\), denoted as \(\Delta r_{\mathrm{rem}}^{\alpha^2}\). More...
 
double DeltaRho (const double Mw_i) const
 Leading two-loop contribution of \(O(\alpha^2)\) to \(\Delta\rho\), denoted as \(\Delta\rho^{\alpha^2}\). More...
 
gslpp::complex deltaRho_rem_f (const Particle f, const double Mw_i) const
 Remainder contribution of \(O(\alpha^2)\) to the effective couplings \(\rho_Z^f\), denoted as \(\delta\rho_{\mathrm{rem}}^{f,\, \alpha^2}\). More...
 
 EWSMTwoLoopEW (const EWSMcache &cache_i)
 Constructor. More...
 
double rho_2 () const
 The function \(\rho^{(2)}\). More...
 
double tau_2 () const
 The function \(\tau^{(2)}\). More...
 

Private Member Functions

double deltaEoverE2 () const
 The auxiliary function \((\delta e/e)^{(2)}\). More...
 
double DeltaEta2 (const double Mw_i) const
 The auxiliary function \(\Delta\hat{\eta}^{(2)}\). More...
 
gslpp::complex DeltaEta2Add_f (const Particle f, const double Mw_i) const
 The auxiliary function \(\Delta\bar{\eta}_{\rm add}^{(2)}\) for \(Z\to f\bar{f}\). More...
 
gslpp::complex DeltaEta2Add_tmp (const double I3f, const double Qf, const double Mw_i) const
 The auxiliary function \(\Delta\bar{\eta}_{\rm add}^{(2)}\). More...
 
gslpp::complex DeltaEtaf1 (const double I3f, const double Qf, const double Mw_i) const
 The auxiliary function \(\Delta\bar{\eta}^{(1)}_f\). More...
 
double DeltaKappa2 (const double Mw_i) const
 The auxiliary function \(\Delta\hat{\kappa}^{(2)}\). More...
 
gslpp::complex DeltaKappa2Add_f (const Particle f, const double Mw_i) const
 The auxiliary function \(\Delta\bar{\kappa}_{\rm add}^{(2)}\) for \(Z\to f\bar{f}\). More...
 
gslpp::complex DeltaKappa2Add_tmp (const double I3f, const double Qf, const double Mw_i) const
 The auxiliary function \(\Delta\bar{\kappa}_{\rm add}^{(2)}\). More...
 
double DeltaRho2 (const double Mw_i) const
 The auxiliary function \(\Delta\hat{\rho}^{(2)}\). More...
 
double DeltaRho2Add (const double Mw_i) const
 The auxiliary function \(\Delta\bar{\rho}_{\mathrm{add}}^{(2)}\). More...
 
double DeltaRw2 (const double Mw_i) const
 The auxiliary function \(\Delta \hat{r}_W^{(2)}\). More...
 
double f0 (const double a) const
 The auxiliary function \(f(a,0)\). More...
 
double f1 (const double a) const
 The auxiliary function \(f(a,1)\). More...
 
double f2Add (const double Mw_i) const
 The auxiliary function \(\bar{f}_{\rm add}^{(2)}\). More...
 
gslpp::complex FV (const double x) const
 The auxiliary function \(f(x)\). More...
 
double g (const double a) const
 The auxiliary function \(g(a)\). More...
 
gslpp::complex GV (const double x) const
 The auxiliary function \(g(x)\). More...
 
double Lambda (const double x) const
 The auxiliary function \(\Lambda(x)\). More...
 
double phi (const double x) const
 The auxiliary function \(\phi(x)\). More...
 
gslpp::complex Vadd (const double I3f, const double Qf, const double Mw_i) const
 The auxiliary function \(V_{\rm add}\). More...
 
gslpp::complex Vfi (const double I3f, const double Qf, const double q2, const double Mw_i) const
 The auxiliary function \({\cal V}_{fi}(q^2)\). More...
 

Private Attributes

const EWSMcachecache
 A reference to an object of type EWSMcache. More...
 
const EWSMOneLoopEW myOneLoopEW
 An object of type EWSMOneLoopEW. More...
 

Constructor & Destructor Documentation

◆ EWSMTwoLoopEW()

EWSMTwoLoopEW::EWSMTwoLoopEW ( const EWSMcache cache_i)

Constructor.

Parameters
[in]cache_ia reference to an object of type EWSMcache

Definition at line 15 of file EWSMTwoLoopEW.cpp.

16 : cache(cache_i), myOneLoopEW(cache_i)
17 {
18 }

Member Function Documentation

◆ DeltaAlpha_l()

double EWSMTwoLoopEW::DeltaAlpha_l ( const double  s) const

Leptonic contribution of \(O(\alpha^2)\) to the electromagnetic coupling \(\alpha\), denoted as \(\Delta\alpha_{\mathrm{lept}}^{\alpha^2}(s)\).

The expressions used here can be found in [169].

Parameters
[in]sinvariant mass squared
Returns
\(\Delta\alpha_{\mathrm{lept}}^{\alpha^2}(s)\)
Attention
This function is valid in the limit of \(s\gg m_l^2\).

Definition at line 23 of file EWSMTwoLoopEW.cpp.

24 {
28  double log_l[3];
29  if (s == cache.getSM().getMz() * cache.getSM().getMz()) {
30  log_l[0] = 2.0 * cache.logMZtoME();
31  log_l[1] = 2.0 * cache.logMZtoMMU();
32  log_l[2] = 2.0 * cache.logMZtoMTAU();
33  } else {
34  log_l[0] = log(xl[0]);
35  log_l[1] = log(xl[1]);
36  log_l[2] = log(xl[2]);
37  }
38 
39  double twoLoop[3];
40  for (int i = 0; i < 3; i++) {
41  twoLoop[i] = -5.0 / 24.0 + cache.getZeta3() + log_l[i] / 4.0
42  + 3.0 / xl[i] * log_l[i];
43  }
44 
45  return ( pow(cache.getSM().getAle() / M_PI, 2.0)
46  *(twoLoop[0] + twoLoop[1] + twoLoop[2]));
47 }

◆ DeltaAlpha_t()

double EWSMTwoLoopEW::DeltaAlpha_t ( const double  s) const

Top-quark contribution of \(O(\alpha^2)\) to the electromagnetic coupling \(\alpha\), denoted as \(\Delta\alpha_{\mathrm{top}}^{\alpha^2}(s)\).

This contribution is not implemented, since it is tiny and negligible.

Parameters
[in]sinvariant mass squared
Returns
\(\Delta\alpha_{\mathrm{top}}^{\alpha^2}(s)=0\)

Definition at line 49 of file EWSMTwoLoopEW.cpp.

50 {
51  return (0.0);
52 }

◆ deltaEoverE2()

double EWSMTwoLoopEW::deltaEoverE2 ( ) const
private

The auxiliary function \((\delta e/e)^{(2)}\).

See [107].

Returns
\(\displaystyle\bigg(\frac{\delta e}{e}\bigg)^{(2)}\)

Definition at line 345 of file EWSMTwoLoopEW.cpp.

346 {
347  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
348  double mh = cache.getSM().getMHl(), mh2 = mh*mh;
349  double ht = mh2 / Mt2;
350  double ht2 = ht*ht, ht3 = ht2*ht;
351  double mu = Mt; // renormalization scale
352 
353  double dEoE2;
354  if (mh < 0.3 * Mt) {
355  dEoE2 = 61.0 / 72.0 - 16.0 * sqrt(ht) * M_PI / 27.0 - 13.0 / 18.0 * log(Mt2 / mu / mu);
356  } else {
357  dEoE2 = (231.0 - 32.0 * ht) / 216.0 - 2.0 / 27.0 * (4.0 - ht) * sqrt(ht) * g(ht)
358  + 2.0 * (6.0 + 27.0 * ht - 10.0 * ht2 + ht3) / 27.0 / (ht - 4.0) * log(ht)
359  - 13.0 / 18.0 * log(Mt2 / mu / mu)
360  - 4.0 * (ht - 1.0) / 9.0 / (ht - 4.0) / ht * phi(ht / 4.0);
361  }
362  return dEoE2;
363 }

◆ DeltaEta2()

double EWSMTwoLoopEW::DeltaEta2 ( const double  Mw_i) const
private

The auxiliary function \(\Delta\hat{\eta}^{(2)}\).

See [107].

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\hat{\eta}^{(2)}\)

Definition at line 383 of file EWSMTwoLoopEW.cpp.

384 {
385  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
386  double Mw = Mw_i, Mw2 = Mw*Mw;
387  double cW2 = cache.getSM().cW2(Mw);
388  double cW4 = cW2*cW2, cW6 = cW4*cW2;
389  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
390  double mh = cache.getSM().getMHl(), mh2 = mh*mh;
391  double zt = Mz2 / Mt2;
392  double zt2 = zt*zt, zt3 = zt2*zt;
393  double ht = mh2 / Mt2;
394  double ht2 = ht*ht, ht3 = ht2*ht, ht4 = ht3*ht, ht5 = ht4*ht;
395  double mu = Mt; // renormalization scale
396 
397  double dEta2;
398  if (mh < 0.57 * Mt) {
399  double B0_Mt2_Mz2_Mw2_Mw2 = cache.getPV().B0(Mt2, Mz2, Mw2, Mw2).real();
400  double B0_Mt2_Mz2_mh2_Mz2 = cache.getPV().B0(Mt2, Mz2, mh2, Mz2).real();
401  dEta2 = (ht3 - 6.0 * ht2 * zt + 11.0 * ht * zt2) / 9.0 / cW2 / (ht - 4.0 * zt) / zt2
402  + (49.0 - 289.0 * cW2 - 349.0 * cW4 + 292.0 * cW6) / 216.0 / cW2 / (1.0 - 4.0 * cW2)
403  + (1.0 + 18.0 * cW2 - 16.0 * cW4) / 12.0 / (1.0 - 4.0 * cW2) * log(cW2)
404  - (17.0 - 40.0 * cW2 + 32.0 * cW4) / 54.0 / cW2 * (sqrt(ht) * M_PI - 2.0)
405  + (11.0 * ht2 * zt - 2.0 * ht3 - 24.0 * ht * zt2 + 24.0 * zt3)
406  / 18.0 / cW2 / (ht - 4.0 * zt) / zt2 * log(ht)
407  + (1.0 - 4.0 * cW2 + 44.0 * cW4 - 32.0 * cW6) / 24.0 / cW2 / (1.0 - 4.0 * cW2)
408  * B0_Mt2_Mz2_Mw2_Mw2
409  + (13.0 * ht2 * zt - 2.0 * ht3 - 32.0 * ht * zt2 + 36.0 * zt3)
410  / 18.0 / cW2 / (ht - 4.0 * zt) / zt2 * B0_Mt2_Mz2_mh2_Mz2
411  - (17.0 - 34.0 * cW2 + 26.0 * cW4) / 36.0 / cW2 * log(Mt2 / mu / mu)
412  + (ht * (2.0 * ht - 5.0 * zt) / 18.0 / cW2 / zt / (ht - 4.0 * zt)
413  + (10.0 - 39.0 * cW2 - 70.0 * cW4 + 48.0 * cW6) / 36.0 / cW2 / (4.0 * cW2 - 1.0))
414  * log(zt);
415  } else {
416  double B0_Mt2_Mz2_Mw2_Mw2 = cache.getPV().B0(Mt2, Mz2, Mw2, Mw2).real();
417  dEta2 = (-17.0 + 40.0 * cW2 - 32.0 * cW4) * ht / 216.0 / cW2
418  + 5.0 / 144.0 / cW2 / (ht - 4.0)
419  + (707.0 - 4720.0 * cW2 + 5900.0 * cW4 - 3696.0 * cW6) / 864.0 / cW2 / (1.0 - 4.0 * cW2)
420  + (10.0 / 27.0 - 17.0 / 108.0 / cW2 - 8.0 * cW2 / 27.0)*(1.0 - ht / 4.0) * sqrt(ht) * g(ht)
421  + (1.0 + 18.0 * cW2 - 16.0 * cW4) / 12.0 / (1.0 - 4.0 * cW2) * log(cW2)
422  + (4.0 - ht) / 12.0 / cW2 / ht * Lambda(ht)
423  + (2.0 - 7.0 * cW2 - 70.0 * cW4 + 48.0 * cW6) / 36.0 / cW2 / (4.0 * cW2 - 1.0) * log(zt)
424  + (1.0 - 4.0 * cW2 + 44.0 * cW4 - 32.0 * cW6) / 24.0 / cW2 / (1.0 - 4.0 * cW2) * B0_Mt2_Mz2_Mw2_Mw2
425  - (17.0 - 34.0 * cW2 + 26.0 * cW4) / 36.0 / cW2 * log(Mt2 / mu / mu)
426  + ((4.0 * cW2 - 5.0)*(6.0 + 27.0 * ht - 10.0 * ht2 + ht3) / 54.0 / (ht - 4.0)
427  - (1152.0 + 606.0 * ht + 1467.0 * ht2 - 1097.0 * ht3 + 238.0 * ht4 - 17.0 * ht5)
428  / 432.0 / cW2 / (ht - 4.0) / (ht - 4.0) / ht) * log(ht)
429  + ((5.0 - 4.0 * cW2)*(ht - 1.0) / 9.0 / (ht - 4.0) / ht
430  - (384.0 + 10.0 * ht - 238.0 * ht2 + 63.0 * ht3 - 3.0 * ht4)
431  / 144.0 / cW2 / (ht - 4.0) / (ht - 4.0) / ht2) * phi(ht / 4.0);
432  }
433  return dEta2;
434 }

◆ DeltaEta2Add_f()

gslpp::complex EWSMTwoLoopEW::DeltaEta2Add_f ( const Particle  f,
const double  Mw_i 
) const
private

The auxiliary function \(\Delta\bar{\eta}_{\rm add}^{(2)}\) for \(Z\to f\bar{f}\).

See [107].

Parameters
[in]fa lepton or quark
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\bar{\eta}_{\rm add}^{(2)}\)

Definition at line 461 of file EWSMTwoLoopEW.cpp.

462 {
463  double I3f = cache.I3_f(f);
464  double Qf = cache.Q_f(f);
465  return DeltaEta2Add_tmp(I3f, Qf, Mw_i);
466 }

◆ DeltaEta2Add_tmp()

gslpp::complex EWSMTwoLoopEW::DeltaEta2Add_tmp ( const double  I3f,
const double  Qf,
const double  Mw_i 
) const
private

The auxiliary function \(\Delta\bar{\eta}_{\rm add}^{(2)}\).

This functions is used in DeltaEta2Add_l() and DeltaEta2Add_q(). See [107].

Parameters
[in]I3fthe isospin of a final-state fermion
[in]Qfthe electric charge of a final-state fermion
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\bar{\eta}_{\rm add}^{(2)}\)

Definition at line 436 of file EWSMTwoLoopEW.cpp.

438 {
439  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
440  double Mw = Mw_i, Mw2 = Mw*Mw;
441  double cW2 = cache.getSM().cW2(Mw);
442  double cW4 = cW2*cW2, cW6 = cW4*cW2;
443  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
444  double zt = Mz2 / Mt2;
445  double mu = Mt; // renormalization scale
446 
447  double B0_Mt2_Mz2_Mw2_Mw2 = cache.getPV().B0(Mt2, Mz2, Mw2, Mw2).real();
448 
449  gslpp::complex dEta2add = 16.0 * M_PI * M_PI * DeltaEtaf1(I3f, Qf, Mw_i) + Vadd(I3f, Qf, Mw_i)
450  - (197.0 - 1378.0 * cW2 + 1064.0 * cW4) / 27.0 / (1.0 - 4.0 * cW2)
451  - (1.0 + 16.0 * cW2 - 20.0 * cW4 + 48.0 * cW6) / 3.0 / (1.0 - 4.0 * cW2)
452  * B0_Mt2_Mz2_Mw2_Mw2
453  - 2.0 * cW2 * (1.0 + 26.0 * cW2 + 24.0 * cW4) / 3.0 / (1.0 - 4.0 * cW2)
454  * log(cW2)
455  + (41.0 / 3.0 - 46.0 * cW2 / 3.0) * log(Mt2 / mu / mu)
456  + 2.0 * (50.0 - 283.0 * cW2 + 242.0 * cW4 - 72.0 * cW6)
457  / 9.0 / (1.0 - 4.0 * cW2) * log(zt);
458  return dEta2add;
459 }

◆ DeltaEtaf1()

gslpp::complex EWSMTwoLoopEW::DeltaEtaf1 ( const double  I3f,
const double  Qf,
const double  Mw_i 
) const
private

The auxiliary function \(\Delta\bar{\eta}^{(1)}_f\).

This functions is used in DeltaEta2Add_tmp(). See [108] and [107].

Parameters
[in]I3fthe isospin of a final-state fermion
[in]Qfthe electric charge of a final-state fermion
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\bar{\eta}^{(1)}_f\)

Definition at line 551 of file EWSMTwoLoopEW.cpp.

553 {
554  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
555  double Mw = Mw_i;
556  double cW2 = cache.getSM().cW2(Mw);
557 
560 
561  gslpp::complex dEtaf1 = 1.0 / 16.0 / M_PI / M_PI
562  * (-SigmaPrime_ZZ / cW2 - 4.0 * cW2 * log(cW2) + Vfi(I3f, Qf, Mz2, Mw));
563  return dEtaf1;
564 }

◆ DeltaKappa2()

double EWSMTwoLoopEW::DeltaKappa2 ( const double  Mw_i) const
private

The auxiliary function \(\Delta\hat{\kappa}^{(2)}\).

See [107].

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\hat{\kappa}^{(2)}\)

Definition at line 468 of file EWSMTwoLoopEW.cpp.

469 {
470  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
471  double Mw = Mw_i, Mw2 = Mw*Mw;
472  double cW2 = cache.getSM().cW2(Mw), sW2 = cache.getSM().sW2(Mw);
473  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
474  double mh = cache.getSM().getMHl(), mh2 = mh*mh;
475  double zt = Mz2 / Mt2;
476  double ht = mh2 / Mt2;
477  double ht2 = ht*ht, ht3 = ht2*ht;
478  double mu = Mt; // renormalization scale
479 
480  double B0_Mt2_Mz2_Mw2_Mw2 = cache.getPV().B0(Mt2, Mz2, Mw2, Mw2).real();
481 
482  double dKappa2;
483  if (mh < 0.57 * Mt) {
484  dKappa2 = (-175.0 + 366.0 * sW2) / 432.0
485  + (3.0 / 8.0 - sW2 / 3.0) * B0_Mt2_Mz2_Mw2_Mw2 - cW2 / 6.0 * log(cW2)
486  - 2.0 * M_PI / 27.0 * sqrt(ht)*(8.0 * sW2 - 3.0)
487  - (1.0 / 4.0 + 2.0 / 9.0 * sW2) * log(Mt2 / mu / mu)
488  + (3.0 * sW2 - 2.0) / 18.0 * log(zt);
489  } else {
490  dKappa2 = (-211.0 + 24.0 * ht + 462.0 * sW2 - 64.0 * ht * sW2) / 432.0
491  + (3.0 / 8.0 - sW2 / 3.0) * B0_Mt2_Mz2_Mw2_Mw2
492  - cW2 / 6.0 * log(cW2)
493  + (ht - 4.0) * sqrt(ht)*(8.0 * sW2 - 3.0) * g(ht) / 108.0
494  - (6.0 + 27.0 * ht - 10.0 * ht2 + ht3)*(3.0 - 8.0 * sW2)
495  / 108.0 / (ht - 4.0) * log(ht)
496  - (1.0 / 4.0 + 2.0 / 9.0 * sW2) * log(Mt2 / mu / mu)
497  + (3.0 * sW2 - 2.0) / 18.0 * log(zt)
498  + (ht - 1.0)*(8.0 * sW2 - 3.0) / 18.0 / (4.0 - ht) / ht * phi(ht / 4.0);
499  }
500  return dKappa2;
501 }

◆ DeltaKappa2Add_f()

gslpp::complex EWSMTwoLoopEW::DeltaKappa2Add_f ( const Particle  f,
const double  Mw_i 
) const
private

The auxiliary function \(\Delta\bar{\kappa}_{\rm add}^{(2)}\) for \(Z\to f\bar{f}\).

See [107].

Parameters
[in]fa lepton or quark
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\bar{\kappa}_{\rm add}^{(2)}\)

Definition at line 529 of file EWSMTwoLoopEW.cpp.

530 {
531  double I3f = cache.I3_f(f);
532  double Qf = cache.Q_f(f);
533  return DeltaKappa2Add_tmp(I3f, Qf, Mw_i);
534 }

◆ DeltaKappa2Add_tmp()

gslpp::complex EWSMTwoLoopEW::DeltaKappa2Add_tmp ( const double  I3f,
const double  Qf,
const double  Mw_i 
) const
private

The auxiliary function \(\Delta\bar{\kappa}_{\rm add}^{(2)}\).

This functions is used in DeltaKappa2Add_l() and DeltaKappa2Add_q(). See [107].

Parameters
[in]I3fthe isospin of a final-state fermion
[in]Qfthe electric charge of a final-state fermion
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\bar{\kappa}_{\rm add}^{(2)}\)

Definition at line 503 of file EWSMTwoLoopEW.cpp.

505 {
506  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
507  double Mw = Mw_i;
508  double cW2 = cache.getSM().cW2(Mw);
509  double cW4 = cW2*cW2;
510  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
511  double zt = Mz2 / Mt2;
512  double mu = Mt; // renormalization scale
513 
515 
516  gslpp::complex dKappa2add = -238.0 * cW2 / 27.0 + 8.0 * cW4
517  - 2.0 * cW2 * sqrt(4.0 * cW2 - 1.0)*(3.0 + 4.0 * cW2)
518  * atan(1.0 / sqrt(4.0 * cW2 - 1.0))
519  - 16.0 / 9.0 * cW2 * log(zt)
520  + (1.0 - 12.0 * I3f * Qf + 8.0 * Qf * Qf - 8.0 * cW4 * Qf * Qf)
521  / 4.0 / cW2 * FV(1)
522  + 4.0 * cW2 * GV(1.0 / cW2) - 7.0 * cW2 * log(cW2)
523  - 17.0 / 3.0 * cW2 * log(mu * mu / Mz2)
524  + cW2 * (1.0 - 2.0 * Qf * I3f) * FV(1.0 / cW2)
525  - i * 80.0 / 9.0 * M_PI;
526  return dKappa2add;
527 }

◆ deltaKappa_rem_f()

gslpp::complex EWSMTwoLoopEW::deltaKappa_rem_f ( const Particle  f,
const double  Mw_i 
) const

Remainder contribution of \(O(\alpha^2)\) to the effective couplings \(\kappa_Z^f\), denoted as \(\delta\kappa_{\mathrm{rem}}^{f,\, \alpha^2}\).

This function handles the \(O(\alpha^2)\) remainder contribution to \(\kappa_{Z}^{f}\) in the on-shell scheme, which was calculated in [107] :

\[ \delta\kappa_{\rm rem}^{f,\, \alpha^2} = 3 (X_t^{\alpha})^2 \left[ 16\, {\it zt}\,c_W^2\, \Delta\hat{k}^{(2)} + 4\, {\it zt}\,c_W^2\, \Delta\bar{k}_{\rm add}^{(2)} \right], \]

where the definitions of the symbols can be read from the codes below.

Parameters
[in]fa lepton or quark
[in]Mw_ithe \(W\)-boson mass
Returns
\(\delta\kappa_{\mathrm{rem}}^{f,\, \alpha^2}\)

Definition at line 115 of file EWSMTwoLoopEW.cpp.

116 {
117  if (f.is("TOP")) return ( gslpp::complex(0.0, 0.0, false));
118 
119  gslpp::complex dKappa = gslpp::complex(0.0, 0.0, false);
120 
121 #ifdef EW_SUBLEADING_ALPHA2
122  /* O(\alpha^2 Mt^4/Mz^4 + \alpha^2 Mt^2/Mz^2) */
123  double Mz = cache.getSM().getMz();
124  double Mw = Mw_i;
125  double cW2 = cache.getSM().cW2(Mw);
126  double zt = Mz * Mz / cache.getSM().getMtpole() / cache.getSM().getMtpole();
127  dKappa += 3.0 * pow(cache.Xt_alpha(Mw), 2.0)
128  *(16.0 * zt * cW2 * DeltaKappa2(Mw) + 4.0 * zt * cW2 * DeltaKappa2Add_f(f, Mw));
129 #endif
130 
131  return dKappa;
132 }

◆ DeltaR_rem()

double EWSMTwoLoopEW::DeltaR_rem ( const double  Mw_i) const

Remainder contribution of \(O(\alpha^2)\) to \(\Delta r\), denoted as \(\Delta r_{\mathrm{rem}}^{\alpha^2}\).

This function handles the remainder two-loop EW contribution of \(O(\alpha^2(m_t^4/m_Z^4 + m_t^2/M_Z^2))\) to \(\Delta r\) in the on-shell scheme. The expression can be found in [110], [109] and [107] :

\[ \Delta r_{\rm rem}^{\alpha^2} = 3\left(\frac{\alpha}{4\pi s_W^2}\right)^2 \frac{m_t^2}{M_W^2} \left[ \Delta \hat{r}_W^{(2)} + s_W^2 \bigg(\frac{\delta e}{e}\bigg)^{(2)} + \frac{1}{4}\, \bar{f}_{\rm add}^{(2)} \right], \]

where the definitions of the symbols can be read from the codes below.

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta r_{\mathrm{rem}}^{\alpha^2}\)

Definition at line 81 of file EWSMTwoLoopEW.cpp.

82 {
83  double DeltaRrem = 0.0;
84 
85 #ifdef EW_SUBLEADING_ALPHA2
86  /* O(\alpha^2 Mt^4/Mz^4 + \alpha^2 Mt^2/Mz^2) */
87  double Mw = Mw_i;
88  double sW2 = cache.getSM().sW2(Mw);
89  DeltaRrem += 3.0 * pow(cache.getSM().getAle() * cache.getSM().getMtpole() / 4.0 / M_PI / sW2 / Mw, 2.0)
90  *(DeltaRw2(Mw) + sW2 * deltaEoverE2() + f2Add(Mw) / 4.0);
91 #endif
92 
93  return DeltaRrem;
94 }

◆ DeltaRho()

double EWSMTwoLoopEW::DeltaRho ( const double  Mw_i) const

Leading two-loop contribution of \(O(\alpha^2)\) to \(\Delta\rho\), denoted as \(\Delta\rho^{\alpha^2}\).

This function handles the leading irreducible two-loop EW contribution of \(O(\alpha^2(m_t^4/m_Z^4 + m_t^2/M_Z^2))\) to \(\Delta\rho\) in the on-shell scheme. The expression can be found in [110] and [109] :

\[ \Delta\rho^{\alpha^2} = 3 (X_t^{\alpha})^2 \left( \Delta\hat{\rho}^{(2)} + 4\, {\it zt}\, c_W^2 \Delta\bar{\rho}_{\mathrm{add}}^{(2)} \right) - \left(\frac{\alpha}{4\pi}\right)^2 \frac{c_W^2}{s_W^2} \left[ \mathrm{Re}\Pi^{\mathrm{fer}}_{Z\gamma}(M_Z^2) \right]^2, \]

where the definitions of the symbols can be read from the codes below, and the last term originates from the \(Z\)- \(\gamma\) mixing (see, e.g., Chapter 6 of [33]).

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\rho^{\alpha^2}\)

Definition at line 54 of file EWSMTwoLoopEW.cpp.

55 {
56  double Mz = cache.getSM().getMz();
57  double Mw = Mw_i;
58  double sW2 = cache.getSM().sW2(Mw);
59  double cW2 = cache.getSM().cW2(Mw);
60 
61  double DeltaRho = 0.0;
62 
63 #ifndef EW_SUBLEADING_ALPHA2
64  /* O(\alpha^2 Mt^4/Mz^4) */
65  DeltaRho += 3.0 * rho_2();
66  DeltaRho *= pow(cache.Xt_alpha(Mw), 2.0);
67 #else
68  /* O(\alpha^2 Mt^4/Mz^4 + \alpha^2 Mt^2/Mz^2) */
69  double zt = Mz * Mz / cache.getSM().getMtpole() / cache.getSM().getMtpole();
70  DeltaRho += 3.0 * pow(cache.Xt_alpha(Mw), 2.0)
71  *(DeltaRho2(Mw) + 4.0 * zt * cW2 * DeltaRho2Add(Mw));
72 #endif
73 
74  /* add O(alpha^2) contribution from the Z-gamma mixing */
75  DeltaRho += -pow(cache.getSM().getAle() / 4.0 / M_PI, 2.0) * cW2 / sW2
76  * pow(myOneLoopEW.PibarZgamma_fer(Mz, Mz*Mz, Mw).real(), 2.0);
77 
78  return DeltaRho;
79 }

◆ DeltaRho2()

double EWSMTwoLoopEW::DeltaRho2 ( const double  Mw_i) const
private

The auxiliary function \(\Delta\hat{\rho}^{(2)}\).

See [110].

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\hat{\rho}^{(2)}\)

Definition at line 203 of file EWSMTwoLoopEW.cpp.

204 {
205  double Mt = cache.getSM().getMtpole();
206  double mh = cache.getSM().getMHl();
207  double ht = mh * mh / Mt / Mt;
208 
209  double rho2;
210  if (mh < 3.8 * Mt) {
211  rho2 = -15.642 + 0.036382 * Mt + pow(ht, 1.0 / 4.0)*(2.301 - 0.01343 * Mt)
212  + sqrt(ht)*(0.01809 * Mt - 9.953) + ht * (5.687 - 0.01568 * Mt)
213  + pow(ht, 3.0 / 2.0)*(0.005369 * Mt - 1.647)
214  + ht * ht * (0.1852 - 0.000646 * Mt);
215  } else {
216  double Mz = cache.getSM().getMz();
217  double Mw = Mw_i;
218  double Mz2 = Mz*Mz, Mw2 = Mw*Mw, Mt2 = Mt*Mt;
219  double cW2 = cache.getSM().cW2(Mw), sW2 = cache.getSM().sW2(Mw);
220  double cW4 = cW2*cW2, cW6 = cW4*cW2;
221  double zt = Mz * Mz / Mt / Mt;
222  double ht2 = ht*ht, ht3 = ht2*ht, ht4 = ht3*ht, ht5 = ht4*ht, ht6 = ht5*ht;
223  double mu = Mt; // renormalization scale
224 
225  double B0_Mt2_Mz2_Mw2_Mw2 = cache.getPV().B0(Mt2, Mz2, Mw2, Mw2).real();
226  double B0_Mt2_Mw2_Mw2_Mz2 = cache.getPV().B0(Mt2, Mw2, Mw2, Mz2).real();
227  double Li21mht = cache.getPolyLog().Li2(1.0 - ht).real();
228 
229  return ( 25.0 - 4.0 * ht + (1.0 / 2.0 - 1.0 / ht) * M_PI * M_PI
230  + (ht - 4.0) * sqrt(ht) * g(ht) / 2.0
231  + (-6.0 - 6.0 * ht + ht2 / 2.0) * log(ht)
232  + (6.0 / ht - 15.0 + 12.0 * ht - 3.0 * ht2) * Li21mht
233  + 3.0 / 2.0 * (-10.0 + 6.0 * ht - ht2) * phi(ht / 4.0)
234  + zt * (1.0 / (54.0 * cW2 * (ht - 4.0) * ht)
235  *(-1776.0 * cW4
236  + (72.0 - 6250.0 * cW2 - 3056.0 * cW4 + 3696.0 * cW6) * ht
237  + (-18.0 + 1283.0 * cW2 + 1371.0 * cW4 - 1436.0 * cW6) * ht2
238  + (68.0 * cW2 - 124.0 * cW4 + 128.0 * cW6) * ht3)
239  + (6.0 * cW2 * ht - 37.0 * cW2 - 119.0 * ht2 + 56.0 * cW2 * ht2)
240  * M_PI * M_PI / 27.0 / ht2
241  + (32.0 * cW4 / 3.0 - 2.0 / 3.0 - 12.0 * cW2) * B0_Mt2_Mz2_Mw2_Mw2
242  + (20.0 / 3.0 + 1.0 / 3.0 / cW2 - 8.0 * cW2) * B0_Mt2_Mw2_Mw2_Mz2
243  + (17.0 - 58.0 * cW2 + 32.0 * cW4)*(4.0 - ht) * sqrt(ht) * g(ht) / 27.0
244  - 40.0 * sW2 * (4.0 - ht) * Lambda(ht) / 3.0 / ht
245  + 2.0 * cW2 * (37.0 - 6.0 * ht - 12.0 * ht2 - 22.0 * ht3 + 9.0 * ht4)
246  * Li21mht / 9.0 / ht2
247  - (1.0 + 14.0 * cW2 + 16.0 * cW4) * log(cW2) / 3.0
248  + (11520.0 - 15072.0 * cW2
249  - (7170.0 - 8928.0 * cW2 - 768.0 * cW4) * ht
250  + (3411.0 - 7062.0 * cW2 + 3264.0 * cW4) * ht2
251  - (1259.0 - 3547.0 * cW2 + 2144.0 * cW4) * ht3
252  + (238.0 - 758.0 * cW2 + 448.0 * cW4) * ht4
253  - (17.0 - 58.0 * cW2 + 32.0 * cW4) * ht5)
254  * log(ht) / 27.0 / (ht - 4.0) / (ht - 4.0) / ht
255  + 8.0 / 9.0 * (4.0 - 26.0 * cW2 - 5.0 * cW4) * log(Mt * Mt / mu / mu)
256  + (3.0 + 5.0 * cW2 - 26.0 * cW4 - 48.0 * cW6) * log(zt) / 9.0 / cW2
257  + (3840.0 * sW2 - (4310.0 - 4224.0 * cW2 - 256.0 * cW4) * ht
258  + (1706.0 - 1312.0 * cW2 - 320.0 * cW4) * ht2
259  - (315.0 + 476.0 * cW2 - 64.0 * cW4) * ht3
260  + (24.0 + 454.0 * cW2) * ht4 - 112.0 * cW2 * ht5
261  + 9.0 * cW2 * ht6)
262  * phi(ht / 4.0) / 9.0 / (ht - 4.0) / (ht - 4.0) / ht2));
263  }
264  return rho2;
265 }

◆ DeltaRho2Add()

double EWSMTwoLoopEW::DeltaRho2Add ( const double  Mw_i) const
private

The auxiliary function \(\Delta\bar{\rho}_{\mathrm{add}}^{(2)}\).

See [109].

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta\bar{\rho}_{\mathrm{add}}^{(2)}\)

Definition at line 267 of file EWSMTwoLoopEW.cpp.

268 {
269  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
270  double Mw = Mw_i, Mw2 = Mw*Mw;
271  double cW2 = cache.getSM().cW2(Mw);
272  double cW4 = cW2*cW2, cW6 = cW4*cW2;
273  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
274  double zt = Mz2 / Mt2;
275  double mu = Mt; // renormalization scale
276 
277  double B0_Mt2_Mz2_Mw2_Mw2 = cache.getPV().B0(Mt2, Mz2, Mw2, Mw2).real();
278  double B0_Mt2_Mw2_0_Mw2 = cache.getPV().B0(Mt2, Mw2, 0.0, Mw2).real();
279  double B0_Mt2_Mw2_Mw2_Mz2 = cache.getPV().B0(Mt2, Mw2, Mw2, Mz2).real();
280 
281  double dRho2add = 542.0 / 27.0 - 2.0 / 3.0 / cW2 - 800.0 * cW2 / 27.0
282  + 1.0 / 3.0 * (1.0 + 26.0 * cW2 + 24.0 * cW4) * B0_Mt2_Mz2_Mw2_Mw2
283  + 4.0 * cW2 * B0_Mt2_Mw2_0_Mw2
284  - (11.0 / 3.0 + 1.0 / 3.0 / cW2 + 4.0 * cW2) * B0_Mt2_Mw2_Mw2_Mz2
285  - (2.0 / 3.0 + 4.0 * cW2 / 3.0 - 8.0 * cW4) * log(cW2)
286  + (1.0 / cW2 - 38.0 / 3.0 + 34.0 * cW2 / 3.0) * log(Mt2 / mu / mu)
287  + 2.0 * (3.0 - 62.0 * cW2 + 74.0 * cW4 + 36.0 * cW6) * log(zt) / 9.0 / cW2;
288  return dRho2add;
289 }

◆ deltaRho_rem_f()

gslpp::complex EWSMTwoLoopEW::deltaRho_rem_f ( const Particle  f,
const double  Mw_i 
) const

Remainder contribution of \(O(\alpha^2)\) to the effective couplings \(\rho_Z^f\), denoted as \(\delta\rho_{\mathrm{rem}}^{f,\, \alpha^2}\).

This function handles the \(O(\alpha^2)\) remainder contribution to \(\rho_{Z}^{f}\) in the on-shell scheme, which was calculated in [107] :

\[ \delta\rho_{\rm rem}^{f,\, \alpha^2} = 3 (X_t^{\alpha})^2 \left[ 16\, {\it zt}\,c_W^2\, \Delta\hat{\eta}^{(2)} + 4\, {\it zt}\,c_W^2\, \Delta\bar{\eta}_{\rm add}^{(2)} \right], \]

where the definitions of the symbols can be read from the codes below.

Parameters
[in]fa lepton or quark
[in]Mw_ithe \(W\)-boson mass
Returns
\(\delta\rho_{\mathrm{rem}}^{f,\, \alpha^2}\)

Definition at line 96 of file EWSMTwoLoopEW.cpp.

97 {
98  if (f.is("TOP")) return ( gslpp::complex(0.0, 0.0, false));
99 
100  gslpp::complex dRho = gslpp::complex(0.0, 0.0, false);
101 
102 #ifdef EW_SUBLEADING_ALPHA2
103  /* O(\alpha^2 Mt^4/Mz^4 + \alpha^2 Mt^2/Mz^2) */
104  double Mz = cache.getSM().getMz();
105  double Mw = Mw_i;
106  double cW2 = cache.getSM().cW2(Mw);
107  double zt = Mz * Mz / cache.getSM().getMtpole() / cache.getSM().getMtpole();
108  dRho += 3.0 * pow(cache.Xt_alpha(Mw), 2.0)
109  *(16.0 * zt * cW2 * DeltaEta2(Mw) + 4.0 * zt * cW2 * DeltaEta2Add_f(f, Mw));
110 #endif
111 
112  return dRho;
113 }

◆ DeltaRw2()

double EWSMTwoLoopEW::DeltaRw2 ( const double  Mw_i) const
private

The auxiliary function \(\Delta \hat{r}_W^{(2)}\).

See [110].

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\Delta \hat{r}_W^{(2)}\)

Definition at line 291 of file EWSMTwoLoopEW.cpp.

292 {
293  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
294  double Mw = Mw_i, Mw2 = Mw*Mw;
295  double cW2 = cache.getSM().cW2(Mw), sW2 = cache.getSM().sW2(Mw);
296  double cW4 = cW2*cW2, cW6 = cW4*cW2;
297  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
298  double mh = cache.getSM().getMHl(), mh2 = mh*mh;
299  double zt = Mz2 / Mt2;
300  double zt2 = zt*zt;
301  double ht = mh2 / Mt2;
302  double ht2 = ht*ht, ht3 = ht2*ht, ht4 = ht3*ht, ht5 = ht4*ht;
303  double mu = Mt; // renormalization scale
304 
305  double dRw2;
306  if (mh < 0.3 * Mt) {
307  double B0_Mt2_Mw2_mh2_Mw2 = cache.getPV().B0(Mt2, Mw2, mh2, Mw2).real();
308  double B0_Mt2_Mw2_Mw2_Mz2 = cache.getPV().B0(Mt2, Mw2, Mw2, Mz2).real();
309  dRw2 = -13.0 / 144.0 - 1.0 / 48.0 / cW4 - 41.0 / 96.0 / cW2 + 61.0 * cW2 / 72.0
310  + (7.0 - 16.0 * cW2) / 27.0 * M_PI * sqrt(ht) - M_PI * M_PI / 36.0
311  - 5.0 * ht2 / 144.0 / cW4 / zt2 + 35.0 * ht / 288.0 / cW2 / zt
312  + 5.0 / 12.0 * (1.0 + ht2 / 12.0 / cW4 / zt2 - ht / 3.0 / cW2 / zt) * B0_Mt2_Mw2_mh2_Mw2
313  + (1.0 + 20.0 * cW2 - 24.0 * cW4) / 48.0 / cW4 * B0_Mt2_Mw2_Mw2_Mz2
314  - (5.0 * sW2 * ht2 + 3.0 * ht * zt + 48.0 * cW2 * ht * zt - 60.0 * cW4 * ht * zt
315  - 3.0 * cW2 * zt2 - 8.0 * cW4 * zt2 + 20.0 * cW6 * zt2) * log(cW2)
316  / 144.0 / cW2 / sW2 / zt / (ht - cW2 * zt)
317  + 5.0 * ht * (ht2 - 4.0 * cW2 * ht * zt + 12.0 * cW4 * zt2) * log(ht)
318  / 144.0 / cW4 / zt2 / (ht - cW2 * zt)
319  + (17.0 / 36.0 - 13.0 * cW2 / 18.0) * log(Mt2 / mu / mu)
320  - (5.0 * cW2 * ht2 - 3.0 * ht * zt - 60.0 * cW2 * ht * zt + 60.0 * cW4 * ht * zt
321  + (3.0 * cW2 + 60.0 * cW4 - 20.0 * cW6) * zt2) * log(zt)
322  / 144.0 / cW4 / zt / (ht - cW2 * zt);
323  } else {
324  double B0_Mt2_Mw2_Mw2_Mz2 = cache.getPV().B0(Mt2, Mw2, Mw2, Mz2).real();
325  dRw2 = -121.0 / 288.0 - 1.0 / 48.0 / cW4 - 41.0 / 96.0 / cW2 + 77.0 * cW2 / 12.0
326  + 19.0 / 72.0 / ht + (41.0 / 216.0 - 4.0 * cW2 / 27.0) * ht
327  - (19.0 + 21.0 * ht) * M_PI * M_PI / 432.0 / ht2
328  - (1.0 / 2.0 - 1.0 / 48.0 / cW4 - 5.0 / 12.0 / cW2) * B0_Mt2_Mw2_Mw2_Mz2
329  + (16.0 * cW2 - 7.0) / 216.0 * (ht - 4.0) * sqrt(ht) * g(ht)
330  - (1.0 / 12.0 - 1.0 / 3.0 / ht) * Lambda(ht)
331  + (19.0 + 21.0 * ht - 12.0 * ht2 - 31.0 * ht3 + 9.0 * ht4) / 72.0 / ht2
332  * cache.getPolyLog().Li2(1.0 - ht).real()
333  - (1.0 + 21.0 * cW2 - 25.0 * cW4) * log(cW2) / 48.0 / cW2 / sW2
334  + (17.0 / 36.0 - 13.0 * cW2 / 18.0) * log(Mt2 / mu / mu)
335  + (1.0 + 20.0 * cW2 - 25.0 * cW4) * log(zt) / 48.0 / cW4
336  + (372.0 + (96.0 * cW2 - 213.0) * ht + (432.0 * cW2 - 318.0) * ht2
337  + (97.0 - 160.0 * cW2) * ht3 - (7.0 - 16.0 * cW2) * ht4)
338  / 216.0 / (ht - 4.0) / ht * log(ht)
339  + (96.0 - (384.0 - 64.0 * cW2) * ht - (2.0 + 64.0 * cW2) * ht2 + 231.0 * ht3
340  - 85.0 * ht4 + 9.0 * ht5) / 144.0 / (ht - 4.0) / ht2 * phi(ht / 4.0);
341  }
342  return dRw2;
343 }

◆ f0()

double EWSMTwoLoopEW::f0 ( const double  a) const
private

The auxiliary function \(f(a,0)\).

See [120] and [121].

Parameters
[in]athe ratio \(a=(m_h/m_t)^2\)
Returns
\(f(a,0)\)

Definition at line 180 of file EWSMTwoLoopEW.cpp.

181 {
182  if (a >= 0.0)
183  return ( cache.getPolyLog().Li2(1.0 - a).real()); // 1-a<1
184  else
185  throw std::runtime_error("Out of range in EWSMTwoLoopEW::f0()");
186 }

◆ f1()

double EWSMTwoLoopEW::f1 ( const double  a) const
private

The auxiliary function \(f(a,1)\).

See [120] and [121].

Parameters
[in]athe ratio \(a=(m_h/m_t)^2\)
Returns
\(f(a,1)\)

Definition at line 188 of file EWSMTwoLoopEW.cpp.

189 {
190  if (a >= 0.0 && a <= 4.0) {
191  double y = 4.0 / a;
192  double phi = 2.0 * asin(sqrt(a / 4.0));
193  return ( -2.0 / sqrt(y - 1.0) * cache.getClausen().Cl2(phi));
194  } else if (a > 4.0) {
195  double y = 4.0 / a; // 0<y<1
196  double xi = (sqrt(1.0 - y) - 1.0) / (sqrt(1.0 - y) + 1.0); // -1<xi<0
197  return ( -1.0 / sqrt(1.0 - y)*(cache.getPolyLog().Li2(xi).real()
198  - cache.getPolyLog().Li2(1.0 / xi).real()));
199  } else
200  throw std::runtime_error("Out of range in EWSMTwoLoopEW::f1()");
201 }

◆ f2Add()

double EWSMTwoLoopEW::f2Add ( const double  Mw_i) const
private

The auxiliary function \(\bar{f}_{\rm add}^{(2)}\).

See [109].

Parameters
[in]Mw_ithe \(W\)-boson mass
Returns
\(\bar{f}_{\rm add}^{(2)}\)

Definition at line 365 of file EWSMTwoLoopEW.cpp.

366 {
367  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
368  double Mw = Mw_i, Mw2 = Mw*Mw;
369  double cW2 = cache.getSM().cW2(Mw), sW2 = cache.getSM().sW2(Mw);
370  double Mt = cache.getSM().getMtpole(), Mt2 = Mt*Mt;
371  double zt = Mz2 / Mt2;
372 
373  double B0_Mt2_Mw2_0_Mw2 = cache.getPV().B0(Mt2, Mw2, 0.0, Mw2).real();
374  double B0_Mt2_Mw2_Mw2_Mz2 = cache.getPV().B0(Mt2, Mw2, Mw2, Mz2).real();
375 
376  double f2a = 10.0 / 3.0 + 1.0 / 3.0 / cW2 + 4.0 * cW2 * B0_Mt2_Mw2_0_Mw2
377  - (11.0 / 3.0 + 1.0 / 3.0 / cW2 + 4.0 * cW2) * B0_Mt2_Mw2_Mw2_Mz2
378  + (11.0 - 8.0 * cW2) * log(cW2) / 6.0 / sW2
379  - (11.0 / 3.0 + 1.0 / 3.0 / cW2) * log(zt);
380  return f2a;
381 }

◆ FV()

gslpp::complex EWSMTwoLoopEW::FV ( const double  x) const
private

The auxiliary function \(f(x)\).

This function is used in Vadd() and Vfi(). See [108].

Parameters
[in]xa real variable
Returns
\(f(x)\)
Attention
This function is valid for \(x>0\).

Definition at line 607 of file EWSMTwoLoopEW.cpp.

608 {
609  if (x <= 0.0)
610  throw std::runtime_error("Out of range in EWSMTwoLoopEW::FV()");
611 
613 
614  return ( i * M_PI * (2.0 / x + 3.0 - 2.0 * (1.0 + 1.0 / x)*(1.0 + 1.0 / x) * log(1.0 + x))
615  + 2.0 / x + 7.0 / 2.0 - (3.0 + 2.0 / x) * log(x)
616  + (1.0 + 1.0 / x)*(1.0 + 1.0 / x)
617  *(2.0 * cache.getPolyLog().Li2(1.0 / (1.0 + x))
618  - M_PI * M_PI / 3.0 + pow(log(1.0 + x), 2.0)));
619 }

◆ g()

double EWSMTwoLoopEW::g ( const double  a) const
private

The auxiliary function \(g(a)\).

See [120] and [121].

Parameters
[in]athe ratio \(a=(m_h/m_t)^2\)
Returns
\(g(a)\)

Definition at line 167 of file EWSMTwoLoopEW.cpp.

168 {
169  if (a >= 0.0 && a <= 4.0) {
170  double phi = 2.0 * asin(sqrt(a / 4.0));
171  return ( sqrt(4.0 - a)*(M_PI - phi));
172  } else if (a > 4.0) {
173  double y = 4.0 / a;
174  double xi = (sqrt(1.0 - y) - 1.0) / (sqrt(1.0 - y) + 1.0);
175  return ( sqrt(a - 4.0) * log(-xi));
176  } else
177  throw std::runtime_error("Out of range in EWSMTwoLoopEW::g()");
178 }

◆ GV()

gslpp::complex EWSMTwoLoopEW::GV ( const double  x) const
private

The auxiliary function \(g(x)\).

This function is used in Vadd() and Vfi(). See [108].

Parameters
[in]xa real variable
Returns
\(g(x)\)
Attention
This function is valid for \(0<x<4\).

Definition at line 621 of file EWSMTwoLoopEW.cpp.

622 {
623  if (x <= 0.0 || x >= 4.0)
624  throw std::runtime_error("Out of range in EWSMTwoLoopEW::GV()");
625 
626  double atanX = atan(sqrt(x / (4.0 - x)));
627 
628  return ( (sqrt((4.0 - x) / x) * atanX - 1.0)*(1.0 / x + 1.0 / 2.0) + 9.0 / 8.0
629  + 1.0 / 2.0 / x - (1.0 + 1.0 / 2.0 / x)*4.0 / x * atanX * atanX);
630 }

◆ Lambda()

double EWSMTwoLoopEW::Lambda ( const double  x) const
private

The auxiliary function \(\Lambda(x)\).

This functions is used in DeltaRho2(), DeltaRw2() and DeltaEta2(). See [110] and [107].

Parameters
[in]xa real variable
Returns
\(\Lambda(x)\)
Attention
This function is valid for \(x\geq 0\).

Definition at line 584 of file EWSMTwoLoopEW.cpp.

585 {
586  if (x >= 0.0 && x <= 4.0) {
587  return ( -1.0 / 2.0 / sqrt(x) * g(x) + M_PI / 2.0 * sqrt(4.0 / x - 1.0));
588  } else if (x > 4.0) {
589  return ( -1.0 / 2.0 / sqrt(x) * g(x));
590  } else
591  throw std::runtime_error("Out of range in EWSMTwoLoopEW::Lambda()");
592 }

◆ phi()

double EWSMTwoLoopEW::phi ( const double  x) const
private

The auxiliary function \(\phi(x)\).

This functions is used in DeltaRho2(), DeltaRw2(), deltaEoverE2(), DeltaEta2() and DeltaKappa2(). See [110] and [107].

Parameters
[in]xa real variable
Returns
\(\phi(x)\)
Attention
This function is valid for \(x\geq 0\).

Definition at line 594 of file EWSMTwoLoopEW.cpp.

595 {
596  if (x >= 0.0 && x <= 1.0) {
597  return ( 4.0 * sqrt(x / (1.0 - x)) * cache.getClausen().Cl2(2.0 * asin(sqrt(x))));
598  } else if (x > 1.0) {
599  double lambda = sqrt(1.0 - 1.0 / x);
600  return ( 1.0 / lambda * (-4.0 * cache.getPolyLog().Li2((1.0 - lambda) / 2.0).real()
601  + 2.0 * pow(log((1.0 - lambda) / 2.0), 2.0)
602  - pow(log(4.0 * x), 2.0) + M_PI * M_PI / 3.0));
603  } else
604  throw std::runtime_error("Out of range in EWSMTwoLoopEW::phi()");
605 }

◆ rho_2()

double EWSMTwoLoopEW::rho_2 ( ) const

The function \(\rho^{(2)}\).

This function parameterize the \(O(\alpha^2 m_t^4/M_Z^4)\) contribution to \(\Delta\rho\):

\[ \Delta\rho^{\alpha^2} = 3 (X_t^{\alpha})^2\rho^{(2)}, \]

where the expression of \(\rho^{(2)}\) can be found in [120] and [121] (see also [32] and [31]).

Returns
\(\rho^{(2)}\)

Definition at line 137 of file EWSMTwoLoopEW.cpp.

138 {
139  double a = cache.getSM().getMHl() * cache.getSM().getMHl() / cache.getSM().getMtpole() / cache.getSM().getMtpole();
140  if (a <= 0.0) throw std::runtime_error("a is out of range in EWSMTwoLoopEW::rho_2");
141  double g_a = g(a);
142  double f_a_0 = f0(a); // f(a,0)
143  double f_a_1 = f1(a); // f(a,1)
144  double log_a = -2.0 * cache.logMTOPtoMH();
145  return ( 25.0 - 4.0 * a + 0.5 * (a * a - 12.0 * a - 12.0) * log_a
146  + (a - 2.0) / 2.0 / a * M_PI * M_PI + 0.5 * (a - 4.0) * sqrt(a) * g_a
147  - 3.0 / a * (a - 1.0)*(a - 1.0)*(a - 2.0) * f_a_0
148  + 3.0 * (a * a - 6.0 * a + 10.0) * f_a_1);
149 }

◆ tau_2()

double EWSMTwoLoopEW::tau_2 ( ) const

The function \(\tau^{(2)}\).

This function parmeterize the \(O(\alpha^2 m_t^4/M_Z^4)\) contribution to the \(Zb\bar{b}\) vertex (see EWSM::taub()), where the expression of \(\tau^{(2)}\) can be found in [120] and [121] (see also [32] and [31]).

Returns
\(\tau^{(2)}\)

Definition at line 151 of file EWSMTwoLoopEW.cpp.

152 {
153  double a = cache.getSM().getMHl() * cache.getSM().getMHl() / cache.getSM().getMtpole() / cache.getSM().getMtpole();
154  if (a <= 0.0) throw std::runtime_error("a is out of range in EWSMTwoLoopEW::tau_2");
155  double g_a = g(a);
156  double f_a_0 = f0(a); // f(a,0)
157  double f_a_1 = f1(a); // f(a,1)
158  double log_a = -2.0 * cache.logMTOPtoMH();
159  return ( 9.0 - 13.0 / 4.0 * a - 2.0 * a * a - a / 4.0 * (19.0 + 6.0 * a) * log_a
160  - a * a / 4.0 * (7.0 - 6.0 * a) * log_a * log_a
161  - (1.0 / 4.0 + 7.0 / 2.0 * a * a - 3.0 * a * a * a) * M_PI * M_PI / 6.0
162  + (a / 2.0 - 2.0) * sqrt(a) * g_a
163  + (a - 1.0)*(a - 1.0)*(4.0 * a - 7.0 / 4.0) * f_a_0
164  - (a * a * a - 33.0 / 4.0 * a * a + 18.0 * a - 7.0) * f_a_1);
165 }

◆ Vadd()

gslpp::complex EWSMTwoLoopEW::Vadd ( const double  I3f,
const double  Qf,
const double  Mw_i 
) const
private

The auxiliary function \(V_{\rm add}\).

This functions is used in DeltaEta2Add_tmp(). See [107].

Parameters
[in]I3fthe isospin of a final-state fermion
[in]Qfthe electric charge of a final-state fermion
[in]Mw_ithe \(W\)-boson mass
Returns
\(V_{\rm add}\)

Definition at line 536 of file EWSMTwoLoopEW.cpp.

538 {
539  double Mw = Mw_i, Mw2 = Mw*Mw;
540  double cW2 = cache.getSM().cW2(Mw), sW2 = cache.getSM().sW2(Mw);
541  double Mt = cache.getSM().getMtpole();
542  double mu = Mt; // renormalization scale
543 
544  gslpp::complex V = 8.0 * cW2 * log(Mw2 / mu / mu)
545  + 3.0 * (2.0 * I3f * Qf - 4.0 * sW2 * Qf * Qf) * FV(1.0)
546  - 16.0 * cW2 * GV(1.0 / cW2)
547  + (1.0 - 4.0 * cW2 - 4.0 * (1.0 - 2.0 * cW2) * I3f * Qf) * FV(1.0 / cW2);
548  return V;
549 }

◆ Vfi()

gslpp::complex EWSMTwoLoopEW::Vfi ( const double  I3f,
const double  Qf,
const double  q2,
const double  Mw_i 
) const
private

The auxiliary function \({\cal V}_{fi}(q^2)\).

This function is used in DeltaEtaf1(). See [108].

Parameters
[in]I3fthe isospin of a final-state fermion
[in]Qfthe electric charge of a final-state fermion
[in]q2invariant mass squared
[in]Mw_ithe \(W\)-boson mass
Returns
\({\cal V}_{fi}(q^2)\)

Definition at line 566 of file EWSMTwoLoopEW.cpp.

568 {
571  double I3aQaQa = I3i * Qi * Qi + I3f * Qf*Qf;
572  double I3aQa = I3i * Qi + I3f*Qf;
573  double QaQa = Qi * Qi + Qf*Qf;
574  double Mz = cache.getSM().getMz(), Mz2 = Mz*Mz;
575  double Mw = Mw_i, Mw2 = Mw*Mw;
576  double cW2 = cache.getSM().cW2(Mw), sW2 = cache.getSM().sW2(Mw);
577 
578  gslpp::complex V = (1.0 - sW2 * (2.0 - 2.0 * I3aQaQa)) * FV(q2 / Mw2)
579  + 8.0 * cW2 * GV(q2 / Mw2)
580  - (1.0 - 6.0 * sW2 * I3aQa + 6.0 * sW2 * QaQa) / 2.0 / cW2 * FV(q2 / Mz2);
581  return V;
582 }

Member Data Documentation

◆ cache

const EWSMcache& EWSMTwoLoopEW::cache
private

A reference to an object of type EWSMcache.

Definition at line 207 of file EWSMTwoLoopEW.h.

◆ myOneLoopEW

const EWSMOneLoopEW EWSMTwoLoopEW::myOneLoopEW
private

An object of type EWSMOneLoopEW.

Definition at line 208 of file EWSMTwoLoopEW.h.


The documentation for this class was generated from the following files:
QCD::TAU
Definition: QCD.h:316
EWSMTwoLoopEW::deltaEoverE2
double deltaEoverE2() const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:345
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
EWSMTwoLoopEW::DeltaKappa2Add_f
gslpp::complex DeltaKappa2Add_f(const Particle f, const double Mw_i) const
The auxiliary function for .
Definition: EWSMTwoLoopEW.cpp:529
EWSMcache::I3_f
double I3_f(const Particle f) const
The isospin of an SM fermion .
Definition: EWSMcache.h:278
EWSMTwoLoopEW::phi
double phi(const double x) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:594
Particle::is
bool is(std::string name_i) const
Definition: Particle.cpp:23
EWSMcache::logMTOPtoMH
double logMTOPtoMH() const
A cache method.
Definition: EWSMcache.cpp:126
EWSMTwoLoopEW::rho_2
double rho_2() const
The function .
Definition: EWSMTwoLoopEW.cpp:137
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
EWSMTwoLoopEW::Lambda
double Lambda(const double x) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:584
EWSMcache::getZeta3
double getZeta3() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:146
EWSMTwoLoopEW::g
double g(const double a) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:167
EWSMTwoLoopEW::myOneLoopEW
const EWSMOneLoopEW myOneLoopEW
An object of type EWSMOneLoopEW.
Definition: EWSMTwoLoopEW.h:208
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
Polylogarithms::Li2
gslpp::complex Li2(const double x) const
The dilogarithm with a real argument, .
Definition: Polylogarithms.cpp:22
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
gslpp::log
complex log(const complex &z)
Definition: gslpp_complex.cpp:342
QCD::ELECTRON
Definition: QCD.h:312
EWSMTwoLoopEW::GV
gslpp::complex GV(const double x) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:621
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
EWSMTwoLoopEW::DeltaRw2
double DeltaRw2(const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:291
EWSMcache::getSM
const StandardModel & getSM() const
Definition: EWSMcache.h:56
EWSMTwoLoopEW::f0
double f0(const double a) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:180
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::logMZtoMMU
double logMZtoMMU() const
A cache method.
Definition: EWSMcache.cpp:84
EWSMcache::getClausen
const ClausenFunctions getClausen() const
A get method to access the member object of type ClausenFunctions.
Definition: EWSMcache.h:124
ClausenFunctions::Cl2
double Cl2(const double phi) const
The Clausen function of index 2, .
Definition: ClausenFunctions.cpp:21
EWSMcache::mf
double mf(const Particle f, const double mu=0.0, const orders order=FULLNNLO) const
The mass of an SM fermion.
Definition: EWSMcache.cpp:49
gslpp::pow
complex pow(const complex &z1, const complex &z2)
Definition: gslpp_complex.cpp:395
gslpp::sqrt
complex sqrt(const complex &z)
Definition: gslpp_complex.cpp:385
EWSMTwoLoopEW::f2Add
double f2Add(const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:365
gslpp::complex::i
static const complex & i()
Definition: gslpp_complex.cpp:154
QCD::getMtpole
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:588
EWSMTwoLoopEW::DeltaEtaf1
gslpp::complex DeltaEtaf1(const double I3f, const double Qf, const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:551
EWSMTwoLoopEW::DeltaKappa2
double DeltaKappa2(const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:468
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
EWSMTwoLoopEW::DeltaKappa2Add_tmp
gslpp::complex DeltaKappa2Add_tmp(const double I3f, const double Qf, const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:503
EWSMcache::getPolyLog
const Polylogarithms getPolyLog() const
A get method to access the member object of type Polylogarithms.
Definition: EWSMcache.h:115
EWSMTwoLoopEW::DeltaRho2
double DeltaRho2(const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:203
EWSMTwoLoopEW::f1
double f1(const double a) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:188
EWSMTwoLoopEW::DeltaRho
double DeltaRho(const double Mw_i) const
Leading two-loop contribution of to , denoted as .
Definition: EWSMTwoLoopEW.cpp:54
EWSMcache::logMZtoMTAU
double logMZtoMTAU() const
A cache method.
Definition: EWSMcache.cpp:98
EWSMTwoLoopEW::FV
gslpp::complex FV(const double x) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:607
StandardModel::getMz
double getMz() const
A get method to access the mass of the boson .
Definition: StandardModel.h:718
EWSMTwoLoopEW::cache
const EWSMcache & cache
A reference to an object of type EWSMcache.
Definition: EWSMTwoLoopEW.h:207
Mw
An observable class for the -boson mass.
Definition: Mw.h:22
gslpp::complex::real
const double & real() const
Definition: gslpp_complex.cpp:53
EWSMTwoLoopEW::DeltaEta2Add_f
gslpp::complex DeltaEta2Add_f(const Particle f, const double Mw_i) const
The auxiliary function for .
Definition: EWSMTwoLoopEW.cpp:461
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::logMZtoME
double logMZtoME() const
A cache method.
Definition: EWSMcache.cpp:70
EWSMTwoLoopEW::Vfi
gslpp::complex Vfi(const double I3f, const double Qf, const double q2, const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:566
EWSMTwoLoopEW::Vadd
gslpp::complex Vadd(const double I3f, const double Qf, const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:536
EWSMTwoLoopEW::DeltaEta2
double DeltaEta2(const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:383
EWSMcache::Xt_alpha
double Xt_alpha(const double Mw_i) const
The quantity with the coupling .
Definition: EWSMcache.h:355
StandardModel::getAle
double getAle() const
A get method to retrieve the fine-structure constant .
Definition: StandardModel.h:745
QCD::MU
Definition: QCD.h:314
EWSMTwoLoopEW::DeltaEta2Add_tmp
gslpp::complex DeltaEta2Add_tmp(const double I3f, const double Qf, const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:436
StandardModel::getLeptons
Particle getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
Definition: StandardModel.h:709
EWSMTwoLoopEW::DeltaRho2Add
double DeltaRho2Add(const double Mw_i) const
The auxiliary function .
Definition: EWSMTwoLoopEW.cpp:267