9 #include <gsl/gsl_sf.h>
33 double tmp = (5.062 + xt * 0.8315) * als / M_PI;
76 if (x < 0.0 || x >= 1.0)
throw std::runtime_error(
"x is out of range in EWSMTwoLoopQCD::F1");
82 if (x == 0.0)
return (23.0 / 16.0 - zeta_2 / 2.0 - 3.0 / 2.0 * zeta_3);
85 double Li2_x, Li3_x, Li3_mx_1mx;
88 if (x ==
Mw *
Mw / Mt / Mt) {
98 double b =
log(1.0 - x);
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;
113 if (r < 0.0 || r >= 1.0)
throw std::runtime_error(
"r is out of range in EWSMTwoLoopQCD::V1");
118 if (r == 0.0)
return (0.0);
124 double Phi, gamma, h;
125 if (r == Mz * Mz / 4.0 / Mt / Mt) {
136 double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
137 if (r == Mz * Mz / 4.0 / Mt / Mt) {
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);
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;
165 if (r < 0.0 || r >= 1.0)
throw std::runtime_error(
"r is out of range in EWSMTwoLoopQCD::A1");
171 if (r == 0.0)
return (3.0 * (7.0 / 4.0 - zeta_2 - 2.0 * zeta_3));
177 double Phi, gamma, h;
178 if (r == Mz * Mz / 4.0 / Mt / Mt) {
189 double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
190 if (r == Mz * Mz / 4.0 / Mt / Mt) {
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);
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;
218 if (r < 0.0 || r >= 1.0)
throw std::runtime_error(
"r is out of range in EWSMTwoLoopQCD::V1prime");
223 if (r == 0.0)
return (4.0 * zeta_3 - 5.0 / 6.0);
229 double Phi, gamma, h;
230 if (r == Mz * Mz / 4.0 / Mt / Mt) {
241 double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
242 if (r == Mz * Mz / 4.0 / Mt / Mt) {
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);
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));
261 if (r == Mz * Mz / 4.0 / Mt / Mt) {
264 log_real = GSL_REAL(gsl_complex_log(OneMinusE2Iphi))
265 - 2.0 * GSL_REAL(gsl_complex_log(OneMinusE4Iphi));
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);
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);
311 if (r < 0.0 || r >= 1.0)
throw std::runtime_error(
"r is out of range in EWSMTwoLoopQCD::A1prime");
317 if (r == 0.0)
return (3.0 * (7.0 / 4.0 - zeta_2 - 2.0 * zeta_3));
323 double Phi, gamma, h;
324 if (r == Mz * Mz / 4.0 / Mt / Mt) {
335 double Cl3_2Phi, Cl3_4Phi, Cl2_2Phi, Cl2_4Phi;
336 if (r == Mz * Mz / 4.0 / Mt / Mt) {
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);
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));
355 if (r == Mz * Mz / 4.0 / Mt / Mt) {
358 log_real = GSL_REAL(gsl_complex_log(OneMinusE2Iphi))
359 - 2.0 * GSL_REAL(gsl_complex_log(OneMinusE4Iphi));
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);
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);
413 DeltaR *= (cW2 - sW2) / 4.0 / sW2 / sW2;
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;
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;
474 double zt = Mt * Mt / Mz / Mz;
475 double rZ4t = Mz * Mz / 4.0 / Mt / Mt;
484 + 4.0 * zt * (vt * vt *
V1(rZ4t) + at * at *
A1(rZ4t))
485 + vb * vb + ab * ab - 4.0 * zt *
F1(0.0,
Mw);
501 DeltaKappa = cW2 / 4.0 / sW2 / sW2 * log_cW2
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;
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;
534 DeltaKappa /= 4.0 * sW2*sW2;