EWSMTwoLoopQCD Class Reference

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

#include <EWSMTwoLoopQCD.h>

Collaboration diagram for EWSMTwoLoopQCD:
[legend]

Detailed Description

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

Author
HEPfit Collaboration

This class handles two-loop QCD contributions of \(O(\alpha\alpha_s)\) 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()).

See also the description of EWSM class for their definitions. The above quantities are computed with the auxiliary functions:

and

  • \(F_1(x)\)   (with F1()),
  • \(V_1(r)\)   (with V1()),
  • \(V'_1(r)\)   (with V1prime()),
  • \(A_1(r)\)   (with A1()),
  • \(A'_1(r)\)   (with A1prime()).

The \(O(\alpha\alpha_s)\) two-loop QCD contributions to the vacuum polarization amplitudes of the gauge bosons were calculated in [71], [72], [104], [87], [102], [103] and [70].

Definition at line 55 of file EWSMTwoLoopQCD.h.

Public Member Functions

double A1 (const double r) const
 The function \(A_1(r)\). More...
 
double A1prime (const double r) const
 The derivative of the function \(A_1(r)\). More...
 
double DeltaAlpha_l (const double s) const
 Leptonic contribution of \(O(\alpha\alpha_s)\) to the electromagnetic coupling \(\alpha\), denoted as \(\Delta\alpha_{\mathrm{lept}}^{\alpha\alpha_s}(s)\). More...
 
double DeltaAlpha_t (const double s) const
 Top-quark contribution of \(O(\alpha\alpha_s)\) to the electromagnetic coupling \(\alpha\), denoted as \(\Delta\alpha_{\mathrm{top}}^{\alpha\alpha_s}(s)\). More...
 
gslpp::complex deltaKappa_rem_f (const Particle f, const double Mw_i) const
 Remainder contribution of \(O(\alpha\alpha_s)\) to the effective couplings \(\kappa_Z^f\), denoted as \(\delta\kappa_{\mathrm{rem}}^{f,\, \alpha\alpha_s}\). More...
 
gslpp::complex DeltaKappa_tb (const double Mw_i) const
 Heavy-quark contribution to \(\kappa_Z^f\), denoted as \(\Delta\kappa^{tb}\). More...
 
gslpp::complex DeltaKappa_ud (const double Mw_i) const
 Light-quark contribution to \(\kappa_Z^f\), denoted as \(\Delta\kappa^{ud}\). More...
 
double deltaQCD_2 () const
 The function \(\delta^{\mathrm{QCD}}_2\). More...
 
double DeltaR_rem (const double Mw_i) const
 Remainder contribution of \(O(\alpha\alpha_s)\) to \(\Delta r\), denoted as \(\Delta r_{\mathrm{rem}}^{\alpha\alpha_s^2}\). More...
 
double DeltaR_tb (const double Mw_i) const
 Heavy-quark contribution to \(\Delta r\), denoted as \(\Delta r^{tb}\). More...
 
double DeltaR_ud (const double Mw_i) const
 Light-quark contribution to \(\Delta r\), not including \(\Delta\alpha^{l+5q}(M_Z^2)\), denoted as \(\Delta r^{ud}\). More...
 
double DeltaRho (const double Mw_i) const
 Leading two-loop QCD contribution of \(O(\alpha\alpha_s)\) to \(\Delta\rho\), denoted as \(\Delta\rho^{\alpha\alpha_s}\). More...
 
gslpp::complex deltaRho_rem_f (const Particle f, const double Mw_i) const
 Remainder contribution of \(O(\alpha\alpha_s)\) to the effective couplings \(\rho_Z^f\), denoted as \(\delta\rho_{\mathrm{rem}}^{f,\, \alpha\alpha_s}\). More...
 
double DeltaRho_tb (const double Mw_i) const
 Heavy-quark contribution to \(\rho_Z^f\), denoted as \(\Delta\rho^{tb}\). More...
 
double DeltaRho_ud (const double Mw_i) const
 Light-quark contribution to \(\rho_Z^f\), denoted as \(\Delta\rho^{ud}\). More...
 
 EWSMTwoLoopQCD (const EWSMcache &cache_i)
 Constructor. More...
 
double F1 (const double x, const double Mw_i) const
 The function \(F_1(x)\). More...
 
double V1 (const double r) const
 The function \(V_1(r)\). More...
 
double V1prime (const double r) const
 The derivative of the function \(V_1(r)\). More...
 

Private Attributes

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

Constructor & Destructor Documentation

EWSMTwoLoopQCD::EWSMTwoLoopQCD ( const EWSMcache cache_i)

Constructor.

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

Definition at line 12 of file EWSMTwoLoopQCD.cpp.

13 : cache(cache_i)
14 {
15 }
const EWSMcache & cache
A reference to an object of type EWSMcache.

Member Function Documentation

double EWSMTwoLoopQCD::A1 ( const double  r) const

The function \(A_1(r)\).

The expression for \(A_1(r)\) can be found in [104] and [87]. See also Chapter 8 of [31].

Parameters
[in]rthe ratio \(r=s/(4m_t^2)\)
Returns
\(A_1(r)\)
Attention
This function is valid for \(0 \leq r < 1\).

Definition at line 163 of file EWSMTwoLoopQCD.cpp.

164 {
165  if (r < 0.0 || r >= 1.0) throw std::runtime_error("r is out of range in EWSMTwoLoopQCD::A1");
166 
167  /* Zeta functions */
168  double zeta_2 = cache.getZeta2();
169  double zeta_3 = cache.getZeta3();
170 
171  if (r == 0.0) return (3.0 * (7.0 / 4.0 - zeta_2 - 2.0 * zeta_3));
172 
173  double Mz = cache.getSM().getMz();
174  double Mt = cache.getSM().getMtpole();
175 
176  /* Logarithms etc */
177  double Phi, gamma, h;
178  if (r == Mz * Mz / 4.0 / Mt / Mt) {
179  Phi = cache.Phi_QCD2();
180  gamma = cache.gamma_QCD2();
181  h = cache.h_QCD2();
182  } else {
183  Phi = asin(sqrt(r));
184  gamma = log(2.0 * sqrt(r));
185  h = log(2.0 * sqrt(1.0 - r));
186  }
187 
188  /* Clausen functions */
189  double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
190  if (r == Mz * Mz / 4.0 / Mt / Mt) {
191  Cl3_2Phi = cache.Cl3_2Phi();
192  Cl3_4Phi = cache.Cl3_4Phi();
193  Cl2_2Phi = cache.Cl2_2Phi();
194  Cl2_4Phi = cache.Cl2_4Phi();
195  } else {
196  ClausenFunctions* myClausen;
197  myClausen = new ClausenFunctions();
198  Cl3_2Phi = myClausen->Cl3(2.0 * Phi);
199  Cl3_4Phi = myClausen->Cl3(4.0 * Phi);
200  Cl2_2Phi = myClausen->Cl2(2.0 * Phi);
201  Cl2_4Phi = myClausen->Cl2(4.0 * Phi);
202  delete myClausen;
203  }
204 
205  double A1;
206  A1 = 4.0 * (r - 3.0 / 2.0 + 1.0 / 2.0 / r)*(2.0 * Cl3_2Phi - Cl3_4Phi
207  + 8.0 / 3.0 * Phi * (Cl2_2Phi - Cl2_4Phi) - 4.0 / 3.0 * Phi * Phi * (gamma + 2.0 * h))
208  + sqrt(1.0 / r - 1.0)*(8.0 / 3.0 * (r - 1.0)
209  *(-Cl2_2Phi + Cl2_4Phi + 2.0 * Phi * (gamma + 2.0 * h))
210  - 2.0 * Phi * (r - 3.0 + 1.0 / 4.0 / r))
211  + 8.0 * Phi * Phi * (r - 11.0 / 12.0 + 5.0 / 48.0 / r + 1.0 / 32.0 / r / r)
212  - 3.0 * zeta_2 + 13.0 / 6.0 + (-2.0 * zeta_3 + 1.0 / 4.0) / r;
213  return A1;
214 }
double gamma_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:400
double getZeta3() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:146
const EWSMcache & cache
A reference to an object of type EWSMcache.
double A1(const double r) const
The function .
double Cl2(const double phi) const
The Clausen function of index 2, .
double Cl3_2Phi() const
The constant .
Definition: EWSMcache.h:462
double Cl3_4Phi() const
The constant .
Definition: EWSMcache.h:474
double Phi_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:390
double getZeta2() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:137
double Cl2_2Phi() const
The constant .
Definition: EWSMcache.h:438
double Cl2_4Phi() const
The constant .
Definition: EWSMcache.h:450
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
complex log(const complex &z)
double Cl3(const double phi) const
The Clausen function of index 3, .
A class for the Clausen functions.
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double h_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:410
complex sqrt(const complex &z)
double EWSMTwoLoopQCD::A1prime ( const double  r) const

The derivative of the function \(A_1(r)\).

The expression for \(A'_1(r)\) has been derived from \(A_1(r)\) in [104] and [87].

Parameters
[in]rthe ratio \(r=s/(4m_t^2)\)
Returns
\(A'_1(r)\)
Attention
This function is valid for \(0 \leq r < 1\).

Definition at line 309 of file EWSMTwoLoopQCD.cpp.

310 {
311  if (r < 0.0 || r >= 1.0) throw std::runtime_error("r is out of range in EWSMTwoLoopQCD::A1prime");
312 
313  /* Zeta functions */
314  double zeta_2 = cache.getZeta2();
315  double zeta_3 = cache.getZeta3();
316 
317  if (r == 0.0) return (3.0 * (7.0 / 4.0 - zeta_2 - 2.0 * zeta_3));
318 
319  double Mz = cache.getSM().getMz();
320  double Mt = cache.getSM().getMtpole();
321 
322  /* Logarithms etc */
323  double Phi, gamma, h;
324  if (r == Mz * Mz / 4.0 / Mt / Mt) {
325  Phi = cache.Phi_QCD2();
326  gamma = cache.gamma_QCD2();
327  h = cache.h_QCD2();
328  } else {
329  Phi = asin(sqrt(r));
330  gamma = log(2.0 * sqrt(r));
331  h = log(2.0 * sqrt(1.0 - r));
332  }
333 
334  /* Clausen functions */
335  double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
336  if (r == Mz * Mz / 4.0 / Mt / Mt) {
337  Cl3_2Phi = cache.Cl3_2Phi();
338  Cl3_4Phi = cache.Cl3_4Phi();
339  Cl2_2Phi = cache.Cl2_2Phi();
340  Cl2_4Phi = cache.Cl2_4Phi();
341  } else {
342  ClausenFunctions* myClausen;
343  myClausen = new ClausenFunctions();
344  Cl3_2Phi = myClausen->Cl3(2.0 * Phi);
345  Cl3_4Phi = myClausen->Cl3(4.0 * Phi);
346  Cl2_2Phi = myClausen->Cl2(2.0 * Phi);
347  Cl2_4Phi = myClausen->Cl2(4.0 * Phi);
348  delete myClausen;
349  }
350 
351  /* for Bprime and Dprime below */
352  gsl_complex OneMinusE2Iphi = gsl_complex_rect(1.0 - cos(2.0 * Phi), -sin(2.0 * Phi));
353  gsl_complex OneMinusE4Iphi = gsl_complex_rect(1.0 - cos(4.0 * Phi), -sin(4.0 * Phi));
354  double log_real;
355  if (r == Mz * Mz / 4.0 / Mt / Mt) {
356  log_real = cache.logV1primeAndA1prime();
357  } else {
358  log_real = GSL_REAL(gsl_complex_log(OneMinusE2Iphi))
359  - 2.0 * GSL_REAL(gsl_complex_log(OneMinusE4Iphi));
360  }
361 
362  double PhiPrime = 1.0 / 2.0 / sqrt(r * (1.0 - r));
363  double Phi2Prime = Phi / sqrt(r * (1.0 - r));
364  double gammaPrime = 1.0 / 2.0 / r;
365  double hPrime = -1.0 / 2.0 / (1.0 - r);
366 
367  // A1(r) = 4.0*A*B + C*D + E
368  double A = r - 3.0 / 2.0 + 1.0 / 2.0 / r;
369  double Aprime = 1.0 - 1.0 / 2.0 / r / r;
370  double B = 2.0 * Cl3_2Phi - Cl3_4Phi + 8.0 / 3.0 * Phi * (Cl2_2Phi - Cl2_4Phi)
371  - 4.0 / 3.0 * Phi * Phi * (gamma + 2.0 * h);
372  double Bprime = -2.0 / sqrt(r * (1.0 - r))*(Cl2_2Phi - Cl2_4Phi)
373  + 8.0 / 3.0 * PhiPrime * (Cl2_2Phi - Cl2_4Phi)
374  + 8.0 / 3.0 * Phi * (-log_real / sqrt(r * (1.0 - r)))
375  - 4.0 / 3.0 * Phi2Prime * (gamma + 2.0 * h)
376  - 4.0 / 3.0 * Phi * Phi * (gammaPrime + 2.0 * hPrime);
377  double C = sqrt(1.0 / r - 1.0);
378  double Cprime = -1.0 / 2.0 / r / sqrt(r * (1.0 - r));
379  double D = 8.0 / 3.0 * (r - 1.0)*(-Cl2_2Phi + Cl2_4Phi + 2.0 * Phi * (gamma + 2.0 * h))
380  - 2.0 * Phi * (r - 3.0 + 1.0 / 4.0 / r);
381  double Dprime = 8.0 / 3.0 * (-Cl2_2Phi + Cl2_4Phi + 2.0 * Phi * (gamma + 2.0 * h))
382  + 8.0 / 3.0 * (r - 1.0)*(log_real / sqrt(r * (1.0 - r))
383  + 2.0 * PhiPrime * (gamma + 2.0 * h)
384  + 2.0 * Phi * (gammaPrime + 2.0 * hPrime))
385  - 2.0 * PhiPrime * (r - 3.0 + 1.0 / 4.0 / r)
386  - 2.0 * Phi * (1.0 - 1.0 / 4.0 / r / r);
387  double Eprime = 8.0 * Phi2Prime * (r - 11.0 / 12.0 + 5.0 / 48.0 / r + 1.0 / 32.0 / r / r)
388  + 8.0 * Phi * Phi * (1.0 - 5.0 / 48.0 / r / r - 1.0 / 16.0 / r / r / r)
389  - (-2.0 * zeta_3 + 1.0 / 4.0) / r / r;
390  return (4.0 * Aprime * B + 4.0 * A * Bprime + Cprime * D + C * Dprime + Eprime);
391 
392  /* TEST: Exact - Expansion */
393  //std::cout << "A1:"
394  // << (4.0*Aprime*B + 4.0*A*Bprime + Cprime*D + C*Dprime + Eprime)
395  // - (4.0*zeta_3 - 49.0/18.0 + 1378.0/405.0*r )
396  // << std::endl;
397 
398  /* Expansion for r << 1 */
399  //return (4.0*zeta_3 - 49.0/18.0 + 1378.0/405.0*r);
400 }
complex cos(const complex &z)
double gamma_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:400
double getZeta3() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:146
const EWSMcache & cache
A reference to an object of type EWSMcache.
double Cl2(const double phi) const
The Clausen function of index 2, .
double Cl3_2Phi() const
The constant .
Definition: EWSMcache.h:462
double Cl3_4Phi() const
The constant .
Definition: EWSMcache.h:474
double Phi_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:390
double getZeta2() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:137
double Cl2_2Phi() const
The constant .
Definition: EWSMcache.h:438
double Cl2_4Phi() const
The constant .
Definition: EWSMcache.h:450
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
complex log(const complex &z)
double logV1primeAndA1prime() const
A logarithm appearing in the functions and for two-loop QCD contribution.
Definition: EWSMcache.h:422
double Cl3(const double phi) const
The Clausen function of index 3, .
complex sin(const complex &z)
A class for the Clausen functions.
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double h_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:410
complex sqrt(const complex &z)
double EWSMTwoLoopQCD::DeltaAlpha_l ( const double  s) const

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

This contribution vanishes at \(O(\alpha\alpha_s)\).

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

Definition at line 20 of file EWSMTwoLoopQCD.cpp.

21 {
22  return (0.0);
23 }
double EWSMTwoLoopQCD::DeltaAlpha_t ( const double  s) const

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

A simple numerical formula presented in [105] has been employed.

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

Definition at line 25 of file EWSMTwoLoopQCD.cpp.

26 {
27  double xt = s / cache.getSM().getMtpole() / cache.getSM().getMtpole();
28  double als;
29  if (s == cache.getSM().getMz() * cache.getSM().getMz())
30  als = cache.getSM().getAlsMz();
31  else
32  als = cache.Als(sqrt(s), FULLNNLO);
33  double tmp = (5.062 + xt * 0.8315) * als / M_PI;
34  tmp *= -4.0 / 45.0 * cache.getSM().getAle() / M_PI*xt;
35  return tmp;
36 }
const EWSMcache & cache
A reference to an object of type EWSMcache.
double Als(const double mu, const orders order) const
The strong coupling .
Definition: EWSMcache.h:366
double getAle() const
A get method to retrieve the fine-structure constant .
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double getAlsMz() const
A get method to access the value of .
complex sqrt(const complex &z)
gslpp::complex EWSMTwoLoopQCD::deltaKappa_rem_f ( const Particle  f,
const double  Mw_i 
) const

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

The \(O(\alpha\alpha_s)\) remainder contribution to \(\kappa_{Z}^{f}\) is decomposed as

\[ \delta\kappa_{\mathrm{rem}}^{f,\,\alpha\alpha_s} = 2 \Delta\kappa^{ud} + \Delta\kappa^{tb} - \frac{c_W^2}{s_W^2}\Delta\rho^{\alpha\alpha_s}, \]

where \(\Delta\kappa^{ud}\) and \(\Delta\kappa^{tb}\) are associated with corrections to the self-energies of the gauge bosons with loops of a light-quark doublet and with those of the \(t\)- \(b\) doublet, respectively, and \((c_W^2/s_W^2)\Delta\rho^{\alpha\alpha_s}\) is the leading contribution of \(O(\alpha\alpha_s)\) to \(\kappa_{Z}^{f}\).

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

Definition at line 58 of file EWSMTwoLoopQCD.cpp.

59 {
60  if (f.is("TOP")) return ( gslpp::complex(0.0, 0.0, false));
61  double Mw = Mw_i;
62  return ( (2.0 * DeltaKappa_ud(Mw) + DeltaKappa_tb(Mw))
63  - cache.getSM().cW2(Mw) / cache.getSM().sW2(Mw) * DeltaRho(Mw));
64 }
gslpp::complex DeltaKappa_tb(const double Mw_i) const
Heavy-quark contribution to , denoted as .
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 ...
const EWSMcache & cache
A reference to an object of type EWSMcache.
gslpp::complex DeltaKappa_ud(const double Mw_i) const
Light-quark contribution to , denoted as .
bool is(std::string name_i) const
Definition: Particle.cpp:23
An observable class for the -boson mass.
Definition: Mw.h:22
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 ...
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
gslpp::complex EWSMTwoLoopQCD::DeltaKappa_tb ( const double  Mw_i) const

Heavy-quark contribution to \(\kappa_Z^f\), denoted as \(\Delta\kappa^{tb}\).

The quantity \(\Delta\kappa^{tb}\) is associated with \(O(\alpha\alpha_s)\) corrections to the self-energies of the gauge bosons with loops of the \(t\)- \(b\) doublet. The expression of \(\Delta\kappa^{tb}\) is given by

\[ \Delta\kappa^{tb} = \frac{\alpha\alpha_s(M_t^2)}{\pi^2} \frac{1}{4s_W^4} \Bigg\{ 4 c_W^2 w_t \Big[ v_t^2 V_1(r^Z_{4t}) + a_t^2A_1(r^Z_{4t}) - F_1(x^W_{t}) \Big] + 4s_W^2 \left( |Q_t| - 4s_W^2 Q_t^2 \right) z_t V_1(r^Z_{4t}) + \Big[ v_b^2 + a_b ^2 + s_W^2 \left( |Q_b| - 4s_W^2 Q_b^2 \right) \Big]\ln z_t \Bigg\} + i \frac{\alpha\alpha_s(M_Z^2)}{4\pi s_W^2} \left( \frac{1}{3} - \frac{4}{9}s_W^2 \right), \]

where the definitions of the symbols can be read from the codes below. See [104], [87], [102] and Chapter 8 of [31].

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

Definition at line 507 of file EWSMTwoLoopQCD.cpp.

508 {
509  double Mw = Mw_i;
510  double Mz = cache.getSM().getMz();
511  double sW2 = cache.getSM().sW2(Mw);
512  double cW2 = cache.getSM().cW2(Mw);
513  double Mt = cache.getSM().getMtpole();
514  double wt = Mt * Mt / Mw / Mw;
515  double zt = Mt * Mt / Mz / Mz;
516  double rZ4t = Mz * Mz / 4.0 / Mt / Mt;
517  double xWt = Mw * Mw / Mt / Mt;
518 
519  double vt = cache.v_f(cache.getSM().getQuarks(QCD::TOP), Mw);
520  double at = cache.a_f(cache.getSM().getQuarks(QCD::TOP));
521  double Qt = cache.Q_f(cache.getSM().getQuarks(QCD::TOP));
522  double vb = cache.v_f(cache.getSM().getQuarks(QCD::BOTTOM), Mw);
523  double ab = cache.a_f(cache.getSM().getQuarks(QCD::BOTTOM));
524  double Qb = cache.Q_f(cache.getSM().getQuarks(QCD::BOTTOM));
525 
526  /* Logarithm */
527  double log_zt = -2.0 * cache.logMZtoMTOP();
528 
529  gslpp::complex DeltaKappa(0.0, 0.0, false);
530  DeltaKappa = 4.0 * cW2 * wt * (vt * vt * V1(rZ4t) + at * at * A1(rZ4t) - F1(xWt, Mw))
531  + 4.0 * sW2 * (fabs(Qt) - 4.0 * sW2 * Qt * Qt) * zt * V1(rZ4t)
532  + (vb * vb + ab * ab + sW2 * (fabs(Qb) - 4.0 * sW2 * Qb * Qb)) * log_zt;
533  DeltaKappa += M_PI * sW2 * (1.0 / 3.0 - 4.0 / 9.0 * sW2)*(gslpp::complex::i());
534  DeltaKappa /= 4.0 * sW2*sW2;
535  DeltaKappa *= cache.getSM().getAle() * cache.alsMt() / M_PI / M_PI;
536  return DeltaKappa;
537 }
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 ...
const EWSMcache & cache
A reference to an object of type EWSMcache.
double A1(const double r) const
The function .
static const complex & i()
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
Definition: EWSMcache.h:301
double V1(const double r) const
The function .
double Q_f(const Particle f) const
The charge of an SM fermion .
Definition: EWSMcache.h:268
double alsMt() const
The strong coupling at NNLO.
Definition: EWSMcache.h:378
double logMZtoMTOP() const
A cache method.
Definition: EWSMcache.cpp:112
Definition: QCD.h:735
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
double getAle() const
A get method to retrieve the fine-structure constant .
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
An observable class for the -boson mass.
Definition: Mw.h:22
double F1(const double x, const double Mw_i) const
The function .
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 ...
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
Definition: EWSMcache.h:290
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
gslpp::complex EWSMTwoLoopQCD::DeltaKappa_ud ( const double  Mw_i) const

Light-quark contribution to \(\kappa_Z^f\), denoted as \(\Delta\kappa^{ud}\).

The quantity \(\Delta\kappa^{ud}\) is associated with \(O(\alpha\alpha_s)\) corrections to the self-energies of the gauge bosons with loops of the light-quark doublets. The expression of \(\Delta\kappa^{ud}\) is given by

\[ \Delta\kappa^{ud} = \frac{\alpha\alpha_s(M_Z^2)}{\pi^2} \frac{c_W^2}{4 s_W^4}\ln c_W^2 + i \frac{\alpha\alpha_s(M_Z^2)}{4\pi s_W^2} \left( 1 - \frac{20}{9}s_W^2 \right), \]

where the definitions of the symbols can be read from the codes below. See [104], [87], [102] and Chapter 8 of [31].

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

Definition at line 491 of file EWSMTwoLoopQCD.cpp.

492 {
493  double Mw = Mw_i;
494  double sW2 = cache.getSM().sW2(Mw);
495  double cW2 = cache.getSM().cW2(Mw);
496 
497  /* Logarithm */
498  double log_cW2 = cache.log_cW2(Mw);
499 
500  gslpp::complex DeltaKappa(0.0, 0.0, false);
501  DeltaKappa = cW2 / 4.0 / sW2 / sW2 * log_cW2
502  + M_PI / 4.0 / sW2 * (1.0 - 20.0 / 9.0 * sW2)*(gslpp::complex::i());
503  DeltaKappa *= cache.getSM().getAle() * cache.getSM().getAlsMz() / M_PI / M_PI;
504  return DeltaKappa;
505 }
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 ...
const EWSMcache & cache
A reference to an object of type EWSMcache.
static const complex & i()
double getAle() const
A get method to retrieve the fine-structure constant .
An observable class for the -boson mass.
Definition: Mw.h:22
double log_cW2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:140
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 ...
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double getAlsMz() const
A get method to access the value of .
double EWSMTwoLoopQCD::deltaQCD_2 ( ) const

The function \(\delta^{\mathrm{QCD}}_2\).

This function is associated with the leading two-loop QCD contribution of \(O(\alpha\alpha_s m_t^2/M_Z^2)\) to \(\Delta\rho\), as explained in the description of DeltaRho(). See [104], [87] and Chapter 8 of [31].

Returns
\(\delta^{\mathrm{QCD}}_2\)

Definition at line 69 of file EWSMTwoLoopQCD.cpp.

70 {
71  return ( -2.0 / 3.0 * (1.0 + 2.0 * cache.getZeta2()));
72 }
const EWSMcache & cache
A reference to an object of type EWSMcache.
double getZeta2() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:137
double EWSMTwoLoopQCD::DeltaR_rem ( const double  Mw_i) const

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

The \(O(\alpha\alpha_s)\) remainder contribution to \(\Delta r\) is decomposed as

\[ \Delta r_{\mathrm{rem}}^{\alpha\alpha_s} = 2 \Delta r^{ud} + \Delta r^{tb} + \frac{c_W^2}{s_W^2} \Delta\rho^{\alpha\alpha_s}, \]

where \(\Delta r^{ud}\) and \(\Delta r^{tb}\) are associated with corrections to the self-energies of the gauge bosons with loops of a light-quark doublet and with those of the \(t\)- \(b\) doublet, respectively, and \(\Delta\rho^{\alpha\alpha_s}\) is the leading contribution.

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

Definition at line 44 of file EWSMTwoLoopQCD.cpp.

45 {
46  double Mw = Mw_i;
47  return ( (2.0 * DeltaR_ud(Mw) + DeltaR_tb(Mw))
48  + cache.getSM().cW2(Mw) / cache.getSM().sW2(Mw) * DeltaRho(Mw));
49 }
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 ...
const EWSMcache & cache
A reference to an object of type EWSMcache.
double DeltaR_tb(const double Mw_i) const
Heavy-quark contribution to , denoted as .
double DeltaR_ud(const double Mw_i) const
Light-quark contribution to , not including , denoted as .
An observable class for the -boson mass.
Definition: Mw.h:22
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 ...
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double EWSMTwoLoopQCD::DeltaR_tb ( const double  Mw_i) const

Heavy-quark contribution to \(\Delta r\), denoted as \(\Delta r^{tb}\).

The quantity \(\Delta r^{tb}\) is associated with \(O(\alpha\alpha_s)\) corrections to the self-energies of the gauge bosons with loops of the \(t\)- \(b\) doublet. The expression of \(\Delta r^{tb}\) is given by

\[ \Delta r^{tb} = \frac{\alpha\alpha_s(M_t^2)}{\pi^2} \Bigg\{ Q_t^2 V_1'(0) + \frac{c_W^2}{s_W^4}\frac{w_t}{4}\left[ \zeta(2) + \frac{1}{2} \right] - \frac{z_t}{s_W^4} \Big[ v_t^2 V_1(r^Z_{4t}) + a_t^2\left[A_1(r^Z_{4t}) - A_1(0)\right] \Big] + \frac{c_W^2 - s_W^2}{s_W^4} w_t \Big[ F_1(x^W_{t}) - F_1(0) \Big] - \frac{v_ba_b}{2 s_W^4} \ln z_t \Bigg\}, \]

where the definitions of the symbols can be read from the codes below. See [104], [87], [102] and Chapter 8 of [31].

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

Definition at line 418 of file EWSMTwoLoopQCD.cpp.

419 {
420  double Mw = Mw_i;
421  double sW2 = cache.getSM().sW2(Mw);
422  double cW2 = cache.getSM().cW2(Mw);
423  double Mz = cache.getSM().getMz();
424  double Mt = cache.getSM().getMtpole();
425  double wt = Mt * Mt / Mw / Mw;
426  double zt = Mt * Mt / Mz / Mz;
427  double rZ4t = Mz * Mz / 4.0 / Mt / Mt;
428  double xWt = Mw * Mw / Mt / Mt;
429 
430  double vt = cache.v_f(cache.getSM().getQuarks(QCD::TOP), Mw);
431  double at = cache.a_f(cache.getSM().getQuarks(QCD::TOP));
432  double vb = cache.v_f(cache.getSM().getQuarks(QCD::BOTTOM), Mw);
433  double ab = cache.a_f(cache.getSM().getQuarks(QCD::BOTTOM));
434 
435  /* Zeta functions */
436  double zeta_2 = cache.getZeta2();
437 
438  /* Logarithm */
439  double log_zt = -2.0 * cache.logMZtoMTOP();
440 
441  double DeltaR;
442  DeltaR = pow(cache.Q_f(cache.getSM().getQuarks(QCD::TOP)), 2.0) * V1prime(0.0)
443  + cW2 / sW2 / sW2 * wt / 4.0 * (zeta_2 + 1.0 / 2.0)
444  - zt / sW2 / sW2 * (vt * vt * V1(rZ4t) + at * at * (A1(rZ4t) - A1(0.0)))
445  + (cW2 - sW2) / sW2 / sW2 * wt * (F1(xWt, Mw) - F1(0.0, Mw))
446  - vb * ab / 2.0 / sW2 / sW2*log_zt;
447  DeltaR *= cache.getSM().getAle() * cache.alsMt() / M_PI / M_PI;
448  return DeltaR;
449 }
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 ...
complex pow(const complex &z1, const complex &z2)
const EWSMcache & cache
A reference to an object of type EWSMcache.
double A1(const double r) const
The function .
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
Definition: EWSMcache.h:301
double V1(const double r) const
The function .
double Q_f(const Particle f) const
The charge of an SM fermion .
Definition: EWSMcache.h:268
double alsMt() const
The strong coupling at NNLO.
Definition: EWSMcache.h:378
double logMZtoMTOP() const
A cache method.
Definition: EWSMcache.cpp:112
Definition: QCD.h:735
double getZeta2() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:137
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
double getAle() const
A get method to retrieve the fine-structure constant .
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
An observable class for the -boson mass.
Definition: Mw.h:22
double V1prime(const double r) const
The derivative of the function .
double F1(const double x, const double Mw_i) const
The function .
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 ...
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
Definition: EWSMcache.h:290
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double EWSMTwoLoopQCD::DeltaR_ud ( const double  Mw_i) const

Light-quark contribution to \(\Delta r\), not including \(\Delta\alpha^{l+5q}(M_Z^2)\), denoted as \(\Delta r^{ud}\).

The quantity \(\Delta r^{ud}\) is associated with \(O(\alpha\alpha_s)\) corrections to the self-energies of the gauge bosons with loops of the light-quark doublets. The expression of \(\Delta r^{ud}\) is given by

\[ \Delta r^{ud} = - \frac{\alpha\alpha_s(M_Z^2)}{\pi^2}\frac{c_W^2 - s_W^2}{4s_W^4}\,\ln c_W^2. \]

See [104], [87], [102] and Chapter 8 of [31].

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

Definition at line 402 of file EWSMTwoLoopQCD.cpp.

403 {
404  double Mw = Mw_i;
405  double sW2 = cache.getSM().sW2(Mw);
406  double cW2 = cache.getSM().cW2(Mw);
407 
408  /* Logarithm */
409  double log_cW2 = cache.log_cW2(Mw);
410 
411  double DeltaR;
412  DeltaR = -log_cW2;
413  DeltaR *= (cW2 - sW2) / 4.0 / sW2 / sW2;
414  DeltaR *= cache.getSM().getAle() * cache.getSM().getAlsMz() / M_PI / M_PI;
415  return DeltaR;
416 }
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 ...
const EWSMcache & cache
A reference to an object of type EWSMcache.
double getAle() const
A get method to retrieve the fine-structure constant .
An observable class for the -boson mass.
Definition: Mw.h:22
double log_cW2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:140
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 ...
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double getAlsMz() const
A get method to access the value of .
double EWSMTwoLoopQCD::DeltaRho ( const double  Mw_i) const

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

The formula used here is given by

\[ \Delta\rho^{\alpha\alpha_s} = 3\,X_t^\alpha\frac{\alpha_s(m_t^2)}{\pi} \delta^{\mathrm{QCD}}_2, \]

where \(X_t^\alpha = \alpha\, m_t^2/(16\pi s_W^2 M_W^2)\), and \(\delta^{\mathrm{QCD}}_2\) is computed via deltaQCD_2(). See, e.g., Chapter 8 of [31]. This quantity contributes to \(\Delta r\) and the \(Zf\bar{f}\) effective couplings \(\rho_Z^f\) and \(\kappa_Z^f\). See also the description of EWSM class.

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

Definition at line 38 of file EWSMTwoLoopQCD.cpp.

39 {
40  double Mw = Mw_i;
41  return ( 3.0 * cache.Xt_alpha(Mw) * cache.alsMt() / M_PI * deltaQCD_2());
42 }
double deltaQCD_2() const
The function .
double Xt_alpha(const double Mw_i) const
The quantity with the coupling .
Definition: EWSMcache.h:355
const EWSMcache & cache
A reference to an object of type EWSMcache.
double alsMt() const
The strong coupling at NNLO.
Definition: EWSMcache.h:378
An observable class for the -boson mass.
Definition: Mw.h:22
gslpp::complex EWSMTwoLoopQCD::deltaRho_rem_f ( const Particle  f,
const double  Mw_i 
) const

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

The \(O(\alpha\alpha_s)\) remainder contribution to \(\rho_{Z}^{f}\) is decomposed as

\[ \delta\rho_{\mathrm{rem}}^{f,\,\alpha\alpha_s} = 2 \Delta\rho^{ud} + \Delta\rho^{tb} - \Delta\rho^{\alpha\alpha_s}, \]

where \(\Delta\rho^{ud}\) and \(\Delta\rho^{tb}\) are associated with corrections to the self-energies of the gauge bosons with loops of a light-quark doublet and with those of the \(t\)- \(b\) doublet, respectively, and \(\Delta\rho^{\alpha\alpha_s}\) is the leading contribution of \(O(\alpha\alpha_s)\) to \(\rho_{Z}^{f}\).

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

Definition at line 51 of file EWSMTwoLoopQCD.cpp.

52 {
53  if (f.is("TOP")) return ( gslpp::complex(0.0, 0.0, false));
54  double Mw = Mw_i;
55  return ( (2.0 * DeltaRho_ud(Mw) + DeltaRho_tb(Mw)) - DeltaRho(Mw));
56 }
double DeltaRho_ud(const double Mw_i) const
Light-quark contribution to , denoted as .
bool is(std::string name_i) const
Definition: Particle.cpp:23
An observable class for the -boson mass.
Definition: Mw.h:22
double DeltaRho_tb(const double Mw_i) const
Heavy-quark contribution to , denoted as .
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
double EWSMTwoLoopQCD::DeltaRho_tb ( const double  Mw_i) const

Heavy-quark contribution to \(\rho_Z^f\), denoted as \(\Delta\rho^{tb}\).

The quantity \(\Delta\rho^{tb}\) is associated with \(O(\alpha\alpha_s)\) corrections to the self-energies of the gauge bosons with loops of the \(t\)- \(b\) doublet. The expression of \(\Delta\rho^{tb}\) is given by

\[ \Delta\rho^{tb} = \frac{\alpha\alpha_s(M_t^2)}{\pi^2} \frac{1}{4s_W^2 c_W^2} \Big\{ - \left[ v_t^2 V_1'(r^Z_{4t}) + a_t^2 A_1'(r^Z_{4t}) \right] + 4 z_t \left[ v_t^2 V_1(r^Z_{4t}) + a_t^2 A_1(r^Z_{4t}) \right] + v_b^2 + a_b^2 - 4 z_t\, F_1(0) \Big\}, \]

where the definitions of the symbols can be read from the codes below. See [104], [87], [102] and Chapter 8 of [31].

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

Definition at line 467 of file EWSMTwoLoopQCD.cpp.

468 {
469  double Mw = Mw_i;
470  double Mz = cache.getSM().getMz();
471  double sW2 = cache.getSM().sW2(Mw);
472  double cW2 = cache.getSM().cW2(Mw);
473  double Mt = cache.getSM().getMtpole();
474  double zt = Mt * Mt / Mz / Mz;
475  double rZ4t = Mz * Mz / 4.0 / Mt / Mt;
476 
477  double vt = cache.v_f(cache.getSM().getQuarks(QCD::TOP), Mw);
478  double at = cache.a_f(cache.getSM().getQuarks(QCD::TOP));
479  double vb = cache.v_f(cache.getSM().getQuarks(QCD::BOTTOM), Mw);
480  double ab = cache.a_f(cache.getSM().getQuarks(QCD::BOTTOM));
481 
482  double DeltaRho;
483  DeltaRho = -(vt * vt * V1prime(rZ4t) + at * at * A1prime(rZ4t))
484  + 4.0 * zt * (vt * vt * V1(rZ4t) + at * at * A1(rZ4t))
485  + vb * vb + ab * ab - 4.0 * zt * F1(0.0, Mw);
486  DeltaRho /= 4.0 * sW2*cW2;
487  DeltaRho *= cache.getSM().getAle() * cache.alsMt() / M_PI / M_PI;
488  return DeltaRho;
489 }
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 ...
const EWSMcache & cache
A reference to an object of type EWSMcache.
double A1(const double r) const
The function .
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
Definition: EWSMcache.h:301
double V1(const double r) const
The function .
double alsMt() const
The strong coupling at NNLO.
Definition: EWSMcache.h:378
Definition: QCD.h:735
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
double A1prime(const double r) const
The derivative of the function .
double getAle() const
A get method to retrieve the fine-structure constant .
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
An observable class for the -boson mass.
Definition: Mw.h:22
double V1prime(const double r) const
The derivative of the function .
double F1(const double x, const double Mw_i) const
The function .
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 ...
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
Definition: EWSMcache.h:290
double getMz() const
A get method to access the mass of the boson .
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double EWSMTwoLoopQCD::DeltaRho_ud ( const double  Mw_i) const

Light-quark contribution to \(\rho_Z^f\), denoted as \(\Delta\rho^{ud}\).

The quantity \(\Delta\rho^{ud}\) is associated with \(O(\alpha\alpha_s)\) corrections to the self-energies of the gauge bosons with loops of the light-quark doublets. The expression of \(\Delta\rho^{ud}\) is given by

\[ \Delta\rho^{ud} = \frac{\alpha\alpha_s(M_Z^2)}{\pi^2} \frac{1}{4s_W^2 c_W^2} \left( v_u^2 + v_d^2 + a_u^2 + a_d^2 \right), \]

where the definitions of the symbols can be read from the codes below. See [104], [87], [102] and Chapter 8 of [31].

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

Definition at line 451 of file EWSMTwoLoopQCD.cpp.

452 {
453  double Mw = Mw_i;
454  double sW2 = cache.getSM().sW2(Mw);
455  double cW2 = cache.getSM().cW2(Mw);
456 
457  double DeltaRho;
458  DeltaRho = pow(cache.v_f(cache.getSM().getQuarks(QCD::UP), Mw), 2.0)
459  + pow(cache.v_f(cache.getSM().getQuarks(QCD::DOWN), Mw), 2.0)
460  + pow(cache.a_f(cache.getSM().getQuarks(QCD::UP)), 2.0)
461  + pow(cache.a_f(cache.getSM().getQuarks(QCD::TOP)), 2.0);
462  DeltaRho /= 4.0 * sW2*cW2;
463  DeltaRho *= cache.getSM().getAle() * cache.getSM().getAlsMz() / M_PI / M_PI;
464  return DeltaRho;
465 }
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 ...
complex pow(const complex &z1, const complex &z2)
const EWSMcache & cache
A reference to an object of type EWSMcache.
Definition: QCD.h:731
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
Definition: EWSMcache.h:301
Definition: QCD.h:735
Definition: QCD.h:732
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
double getAle() const
A get method to retrieve the fine-structure constant .
An observable class for the -boson mass.
Definition: Mw.h:22
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 ...
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
Definition: EWSMcache.h:290
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double getAlsMz() const
A get method to access the value of .
double EWSMTwoLoopQCD::F1 ( const double  x,
const double  Mw_i 
) const

The function \(F_1(x)\).

The expression for \(F_1(x)\) can be found in [104] and [87]. See also Chapter 8 of [31].

Parameters
[in]xthe ratio \(x=s/m_t^2\)
[in]Mw_ithe \(W\)-boson mass
Returns
\(F_1(x)\)
Attention
This function is valid for \(0 \leq x < 1\).

Definition at line 74 of file EWSMTwoLoopQCD.cpp.

75 {
76  if (x < 0.0 || x >= 1.0) throw std::runtime_error("x is out of range in EWSMTwoLoopQCD::F1");
77 
78  /* Zeta functions */
79  double zeta_2 = cache.getZeta2();
80  double zeta_3 = cache.getZeta3();
81 
82  if (x == 0.0) return (23.0 / 16.0 - zeta_2 / 2.0 - 3.0 / 2.0 * zeta_3);
83 
84  /* Dilogarithm and Trilogarithm */
85  double Li2_x, Li3_x, Li3_mx_1mx;
86  double Mw = Mw_i;
87  double Mt = cache.getSM().getMtpole();
88  if (x == Mw * Mw / Mt / Mt) {
89  Li2_x = cache.Li2_MW2toMTOP2(Mw);
90  Li3_x = cache.Li3_MW2toMTOP2(Mw);
91  Li3_mx_1mx = cache.Li3_for_F1(Mw);
92  } else {
93  Li2_x = cache.getPolyLog().Li2(x).real(); // x <= 1.0
94  Li3_x = cache.getPolyLog().Li3(x);
95  Li3_mx_1mx = cache.getPolyLog().Li3(-x / (1.0 - x));
96  }
97 
98  double b = log(1.0 - x);
99 
100  double F1;
101  F1 = (x - 3.0 / 2.0 + 1.0 / 2.0 / x / x)
102  *(-Li3_x - Li3_mx_1mx + b / 3.0 * (2.0 * Li2_x - zeta_2) + b * b * b / 6.0)
103  + 1.0 / 3.0 * (x + 1.0 / 2.0 - 1.0 / 2.0 / x) * Li2_x
104  + b * b / 6.0 * (x - 3.0 / 4.0 - 3.0 / 2.0 / x + 5.0 / 4.0 / x / x)
105  - b / 4.0 * (x - 5.0 / 2.0 + 2.0 / 3.0 / x + 5.0 / 6.0 / x / x)
106  + zeta_3 * (x - 3.0 / 2.0) + zeta_2 / 3.0 * (x - 7.0 / 4.0 - 1.0 / 2.0 / x)
107  + 13.0 / 12.0 - 5.0 / 24.0 / x;
108  return F1;
109 }
double Li3(const double x) const
The trilogarithm .
double getZeta3() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:146
const double & real() const
const EWSMcache & cache
A reference to an object of type EWSMcache.
double Li3_MW2toMTOP2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:168
gslpp::complex Li2(const double x) const
The dilogarithm with a real argument, .
double getZeta2() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:137
double Li2_MW2toMTOP2(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:154
double Li3_for_F1(const double Mw_i) const
A cache method.
Definition: EWSMcache.cpp:182
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
An observable class for the -boson mass.
Definition: Mw.h:22
complex log(const complex &z)
double F1(const double x, const double Mw_i) const
The function .
const Polylogarithms getPolyLog() const
A get method to access the member object of type Polylogarithms.
Definition: EWSMcache.h:115
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double EWSMTwoLoopQCD::V1 ( const double  r) const

The function \(V_1(r)\).

The expression for \(V_1(r)\) can be found in [104] and [87]. See also Chapter 8 of [31].

Parameters
[in]rthe ratio \(r=s/(4m_t^2)\)
Returns
\(V_1(r)\)
Attention
This function is valid for \(0 \leq r < 1\).

Definition at line 111 of file EWSMTwoLoopQCD.cpp.

112 {
113  if (r < 0.0 || r >= 1.0) throw std::runtime_error("r is out of range in EWSMTwoLoopQCD::V1");
114 
115  /* Zeta functions */
116  double zeta_3 = cache.getZeta3();
117 
118  if (r == 0.0) return (0.0);
119 
120  double Mz = cache.getSM().getMz();
121  double Mt = cache.getSM().getMtpole();
122 
123  /* Logarithms etc */
124  double Phi, gamma, h;
125  if (r == Mz * Mz / 4.0 / Mt / Mt) {
126  Phi = cache.Phi_QCD2();
127  gamma = cache.gamma_QCD2();
128  h = cache.h_QCD2();
129  } else {
130  Phi = asin(sqrt(r));
131  gamma = log(2.0 * sqrt(r));
132  h = log(2.0 * sqrt(1.0 - r));
133  }
134 
135  /* Clausen functions */
136  double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
137  if (r == Mz * Mz / 4.0 / Mt / Mt) {
138  Cl3_2Phi = cache.Cl3_2Phi();
139  Cl3_4Phi = cache.Cl3_4Phi();
140  Cl2_2Phi = cache.Cl2_2Phi();
141  Cl2_4Phi = cache.Cl2_4Phi();
142  } else {
143  ClausenFunctions* myClausen;
144  myClausen = new ClausenFunctions();
145  Cl3_2Phi = myClausen->Cl3(2.0 * Phi);
146  Cl3_4Phi = myClausen->Cl3(4.0 * Phi);
147  Cl2_2Phi = myClausen->Cl2(2.0 * Phi);
148  Cl2_4Phi = myClausen->Cl2(4.0 * Phi);
149  delete myClausen;
150  }
151 
152  double V1;
153  V1 = 4.0 * (r - 1.0 / 4.0 / r)
154  *(2.0 * Cl3_2Phi - Cl3_4Phi + 8.0 / 3.0 * Phi * (Cl2_2Phi - Cl2_4Phi)
155  - 4.0 / 3.0 * Phi * Phi * (gamma + 2.0 * h))
156  + sqrt(1.0 / r - 1.0)*(8.0 / 3.0 * (r + 1.0 / 2.0)
157  *(-Cl2_2Phi + Cl2_4Phi + 2.0 * Phi * (gamma + 2.0 * h))
158  - 2.0 * Phi * (r + 3.0 / 2.0))
159  + 8.0 * Phi * Phi * (r - 1.0 / 6.0 - 7.0 / 48.0 / r) + 13.0 / 6.0 + zeta_3 / r;
160  return V1;
161 }
double gamma_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:400
double getZeta3() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:146
const EWSMcache & cache
A reference to an object of type EWSMcache.
double Cl2(const double phi) const
The Clausen function of index 2, .
double Cl3_2Phi() const
The constant .
Definition: EWSMcache.h:462
double V1(const double r) const
The function .
double Cl3_4Phi() const
The constant .
Definition: EWSMcache.h:474
double Phi_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:390
double Cl2_2Phi() const
The constant .
Definition: EWSMcache.h:438
double Cl2_4Phi() const
The constant .
Definition: EWSMcache.h:450
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
complex log(const complex &z)
double Cl3(const double phi) const
The Clausen function of index 3, .
A class for the Clausen functions.
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double h_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:410
complex sqrt(const complex &z)
double EWSMTwoLoopQCD::V1prime ( const double  r) const

The derivative of the function \(V_1(r)\).

The expression for \(V'_1(r)\) has been derived from \(V_1(r)\) in [104] and [87].

Parameters
[in]rthe ratio \(r=s/(4m_t^2)\)
Returns
\(V'_1(r)\)
Attention
This function is valid for \(0 \leq r < 1\).

Definition at line 216 of file EWSMTwoLoopQCD.cpp.

217 {
218  if (r < 0.0 || r >= 1.0) throw std::runtime_error("r is out of range in EWSMTwoLoopQCD::V1prime");
219 
220  /* Zeta functions */
221  double zeta_3 = cache.getZeta3();
222 
223  if (r == 0.0) return (4.0 * zeta_3 - 5.0 / 6.0);
224 
225  double Mz = cache.getSM().getMz();
226  double Mt = cache.getSM().getMtpole();
227 
228  /* Logarithms etc */
229  double Phi, gamma, h;
230  if (r == Mz * Mz / 4.0 / Mt / Mt) {
231  Phi = cache.Phi_QCD2();
232  gamma = cache.gamma_QCD2();
233  h = cache.h_QCD2();
234  } else {
235  Phi = asin(sqrt(r));
236  gamma = log(2.0 * sqrt(r));
237  h = log(2.0 * sqrt(1.0 - r));
238  }
239 
240  /* Clausen functions */
241  double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
242  if (r == Mz * Mz / 4.0 / Mt / Mt) {
243  Cl3_2Phi = cache.Cl3_2Phi();
244  Cl3_4Phi = cache.Cl3_4Phi();
245  Cl2_2Phi = cache.Cl2_2Phi();
246  Cl2_4Phi = cache.Cl2_4Phi();
247  } else {
248  ClausenFunctions* myClausen;
249  myClausen = new ClausenFunctions();
250  Cl3_2Phi = myClausen->Cl3(2.0 * Phi);
251  Cl3_4Phi = myClausen->Cl3(4.0 * Phi);
252  Cl2_2Phi = myClausen->Cl2(2.0 * Phi);
253  Cl2_4Phi = myClausen->Cl2(4.0 * Phi);
254  delete myClausen;
255  }
256 
257  /* for Bprime and Dprime below */
258  gsl_complex OneMinusE2Iphi = gsl_complex_rect(1.0 - cos(2.0 * Phi), -sin(2.0 * Phi));
259  gsl_complex OneMinusE4Iphi = gsl_complex_rect(1.0 - cos(4.0 * Phi), -sin(4.0 * Phi));
260  double log_real;
261  if (r == Mz * Mz / 4.0 / Mt / Mt) {
262  log_real = cache.logV1primeAndA1prime();
263  } else {
264  log_real = GSL_REAL(gsl_complex_log(OneMinusE2Iphi))
265  - 2.0 * GSL_REAL(gsl_complex_log(OneMinusE4Iphi));
266  }
267 
268  double PhiPrime = 1.0 / 2.0 / sqrt(r * (1.0 - r));
269  double Phi2Prime = Phi / sqrt(r * (1.0 - r));
270  double gammaPrime = 1.0 / 2.0 / r;
271  double hPrime = -1.0 / 2.0 / (1.0 - r);
272 
273  // V1(r) = 4.0*A*B + C*D + E
274  double A = r - 1.0 / 4.0 / r;
275  double Aprime = 1.0 + 1.0 / 4.0 / r / r;
276  double B = 2.0 * Cl3_2Phi - Cl3_4Phi + 8.0 / 3.0 * Phi * (Cl2_2Phi - Cl2_4Phi)
277  - 4.0 / 3.0 * Phi * Phi * (gamma + 2.0 * h);
278  double Bprime = -2.0 / sqrt(r * (1.0 - r))*(Cl2_2Phi - Cl2_4Phi)
279  + 8.0 / 3.0 * PhiPrime * (Cl2_2Phi - Cl2_4Phi)
280  + 8.0 / 3.0 * Phi * (-log_real / sqrt(r * (1.0 - r)))
281  - 4.0 / 3.0 * Phi2Prime * (gamma + 2.0 * h)
282  - 4.0 / 3.0 * Phi * Phi * (gammaPrime + 2.0 * hPrime);
283  double C = sqrt(1.0 / r - 1.0);
284  double Cprime = -1.0 / 2.0 / r / sqrt(r * (1.0 - r));
285  double D = 8.0 / 3.0 * (r + 1.0 / 2.0)
286  *(-Cl2_2Phi + Cl2_4Phi + 2.0 * Phi * (gamma + 2.0 * h))
287  - 2.0 * Phi * (r + 3.0 / 2.0);
288  double Dprime = 8.0 / 3.0 * (-Cl2_2Phi + Cl2_4Phi + 2.0 * Phi * (gamma + 2.0 * h))
289  + 8.0 / 3.0 * (r + 1.0 / 2.0)
290  *(log_real / sqrt(r * (1.0 - r))
291  + 2.0 * PhiPrime * (gamma + 2.0 * h)
292  + 2.0 * Phi * (gammaPrime + 2.0 * hPrime))
293  - 2.0 * PhiPrime * (r + 3.0 / 2.0) - 2.0 * Phi;
294  double Eprime = 8.0 * Phi2Prime * (r - 1.0 / 6.0 - 7.0 / 48.0 / r)
295  + 8.0 * Phi * Phi * (1.0 + 7.0 / 48.0 / r / r) - zeta_3 / r / r;
296  return (4.0 * Aprime * B + 4.0 * A * Bprime + Cprime * D + C * Dprime + Eprime);
297 
298 
299  /* TEST: Exact - Expansion */
300  //std::cout << "V1: "
301  // << (4.0*Aprime*B + 4.0*A*Bprime + Cprime*D + C*Dprime + Eprime)
302  // - (4.0*zeta_3 - 5.0/6.0 + 656.0/81.0*r)
303  // << std::endl;
304 
305  /* Expansion for r << 1 */
306  //return (4.0*zeta_3 - 5.0/6.0 + 656.0/81.0*r);
307 }
complex cos(const complex &z)
double gamma_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:400
double getZeta3() const
A get method to access the value of the zeta function .
Definition: EWSMcache.h:146
const EWSMcache & cache
A reference to an object of type EWSMcache.
double Cl2(const double phi) const
The Clausen function of index 2, .
double Cl3_2Phi() const
The constant .
Definition: EWSMcache.h:462
double Cl3_4Phi() const
The constant .
Definition: EWSMcache.h:474
double Phi_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:390
double Cl2_2Phi() const
The constant .
Definition: EWSMcache.h:438
double Cl2_4Phi() const
The constant .
Definition: EWSMcache.h:450
double getMtpole() const
A get method to access the pole mass of the top quark.
Definition: QCD.h:923
complex log(const complex &z)
double logV1primeAndA1prime() const
A logarithm appearing in the functions and for two-loop QCD contribution.
Definition: EWSMcache.h:422
double Cl3(const double phi) const
The Clausen function of index 3, .
complex sin(const complex &z)
A class for the Clausen functions.
double getMz() const
A get method to access the mass of the boson .
const StandardModel & getSM() const
Definition: EWSMcache.h:56
double h_QCD2() const
The constant for two-loop QCD contribution.
Definition: EWSMcache.h:410
complex sqrt(const complex &z)

Member Data Documentation

const EWSMcache& EWSMTwoLoopQCD::cache
private

A reference to an object of type EWSMcache.

Definition at line 376 of file EWSMTwoLoopQCD.h.


The documentation for this class was generated from the following files: