a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
AmpDB2.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "AmpDB2.h"
9#include "EvolDF2.h"
10#include "HeffDF2.h"
11#include <chrono>
12
13AmpDB2::AmpDB2(const StandardModel &SM_i, int BMeson_i, bool flag_fixmub, bool flag_RI)
14 : mySM(SM_i), meMStoRI(5, 0.), coeffsMStoRI(3, 0.)
15{
16 BMeson = BMeson_i;
17 this->flag_resumz = true;
18 this->flag_fixmub = flag_fixmub;
19 this->flag_RI = flag_RI;
20 switch (BMeson)
21 {
22 case 0:
24 mySM.initializeBParameter("BBd_subleading");
26 break;
27 case 1:
29 mySM.initializeBParameter("BBs_subleading");
31 break;
32 default:
33 throw std::runtime_error("AmpDB2::AmpDB2(): invalid B meson index");
34 break;
35 }
36
37 // hep-ph/0606197 eq. 4.7 - 4.10
38 double meMStoRI0[5] = {-3. - 5. / 3. + 8. * log2, 0., 0., 0., 0.},
39 meMStoRI1[5] = {0., 61. / 9. + 44. / 9. * log2, -7. / 9. + 28. / 9. * log2, 0., 0.},
40 meMStoRI2[5] = {0., -25. / 9. + 28. / 9. * log2, -29. / 9. + 44. / 9. * log2, 0., 0.},
41 meMStoRI3[5] = {0., 0., 0., -5. / 3. + 13. - 2. / 3. * log2, -3. + 1. + 2. * log2},
42 meMStoRI4[5] = {0., 0., 0., -7. / 2. + 11. / 2. + 2. * log2, -1. / 6. - 1. / 2. - 2. / 3. * log2};
43 meMStoRI.assign(0, meMStoRI0);
44 meMStoRI.assign(1, meMStoRI1);
45 meMStoRI.assign(2, meMStoRI2);
46 meMStoRI.assign(3, meMStoRI3);
47 meMStoRI.assign(4, meMStoRI4);
48 for (int i = 0; i <= 2; i++)
49 {
50 for (int j = 0; j <= 2; j++)
51 {
52 coeffsMStoRI.assign(i, j, meMStoRI(i, j));
53 }
54 }
55}
56
57gslpp::complex AmpDB2::RBs(orders order)
58{
61 throw std::runtime_error("DmBd::computeThValue(): requires cofficient of order not computed");
62
63 gslpp::vector<gslpp::complex> **allcoeff_SM = mySM.getFlavour().ComputeCoeffBs(
64 mySM.getBBs().getMu(),
65 mySM.getBBs().getScheme(), true);
66
67 C_1_SM = ((*(allcoeff_SM[LO]))(0) + (*(allcoeff_SM[NLO]))(0));
68
69 gslpp::vector<gslpp::complex> **allcoeff = mySM.getFlavour().ComputeCoeffBs(
70 mySM.getBBs().getMu(),
72
73 gslpp::vector<double> me(mySM.getBBs().getBpars());
74 double MBs = mySM.getMesons(QCD::B_S).getMass();
75 double Mb = mySM.Mrun(mySM.getBBs().getMu(),
78 double Ms = mySM.Mrun(mySM.getBBs().getMu(),
81 double KBs = MBs / (Mb + Ms) * MBs / (Mb + Ms);
82 double Fbs = mySM.getMesons(QCD::B_S).getDecayconst();
83 me(0) *= 1. / 3. * MBs * Fbs * Fbs;
84 me(1) *= -5. / 24. * KBs * MBs * Fbs * Fbs;
85 me(2) *= 1. / 24. * KBs * MBs * Fbs * Fbs;
86 me(3) *= 1. / 4. * KBs * MBs * Fbs * Fbs;
87 me(4) *= 1. / 12. * KBs * MBs * Fbs * Fbs;
88
89 /*std::cout << "low scale :" << std::endl << std::endl;
90 std::cout << "C1_SM :" << C_1_SM << std::endl << std::endl;
91
92 std::cout << "C1 :" << ((*(allcoeff[LO]))(0) + (*(allcoeff[NLO]))(0)) << std::endl;
93 std::cout << "C2 :" << ((*(allcoeff[LO]))(1) + (*(allcoeff[NLO]))(1)) << std::endl;
94 std::cout << "C3 :" << ((*(allcoeff[LO]))(2) + (*(allcoeff[NLO]))(2)) << std::endl;
95 std::cout << "C4 :" << ((*(allcoeff[LO]))(3) + (*(allcoeff[NLO]))(3)) << std::endl;
96 std::cout << "C5 :" << ((*(allcoeff[LO]))(4) + (*(allcoeff[NLO]))(4)) << std::endl << std::endl;*/
97
98 switch (order)
99 {
100 case FULLNLO:
101 return (*(allcoeff[LO]) + *(allcoeff[NLO])) * me /
102 (C_1_SM * me(0));
103 case LO:
104 return ((*(allcoeff[LO])) * me /(*(allcoeff_SM[LO]))(0) * me(0));
105 default:
106 throw std::runtime_error("RBs::RBs(): order not implemented");
107 }
108}
109
110gslpp::complex AmpDB2::RBd(orders order)
111{
114 throw std::runtime_error("DmBd::computeThValue(): requires cofficient of order not computed");
115
116 gslpp::vector<gslpp::complex> **allcoeff_SM = mySM.getFlavour().ComputeCoeffBd(
117 mySM.getBBd().getMu(),
118 mySM.getBBd().getScheme(), true);
119
120 C_1_SM = ((*(allcoeff_SM[LO]))(0) + (*(allcoeff_SM[NLO]))(0));
121
122 gslpp::vector<gslpp::complex> **allcoeff = mySM.getFlavour().ComputeCoeffBd(
123 mySM.getBBd().getMu(),
124 mySM.getBBd().getScheme());
125
126 gslpp::vector<double> me(mySM.getBBd().getBpars());
127 double MBd = mySM.getMesons(QCD::B_D).getMass();
128 double Mb = mySM.Mrun(mySM.getBBd().getMu(),
131 double Md = mySM.Mrun(mySM.getBBd().getMu(),
134 double KBd = MBd / (Mb + Md) * MBd / (Mb + Md);
135 double Fbd = mySM.getMesons(QCD::B_D).getDecayconst();
136 me(0) *= 1. / 3. * MBd * Fbd * Fbd;
137 me(1) *= -5. / 24. * KBd * MBd * Fbd * Fbd;
138 me(2) *= 1. / 24. * KBd * MBd * Fbd * Fbd;
139 me(3) *= 1. / 4. * KBd * MBd * Fbd * Fbd;
140 me(4) *= 1. / 12. * KBd * MBd * Fbd * Fbd;
141
142 /*std::cout << "low scale :" << std::endl << std::endl;
143 std::cout << "C1_SM :" << C_1_SM << std::endl << std::endl;
144
145 std::cout << "C1 :" << ((*(allcoeff[LO]))(0) + (*(allcoeff[NLO]))(0)) << std::endl;
146 std::cout << "C2 :" << ((*(allcoeff[LO]))(1) + (*(allcoeff[NLO]))(1)) << std::endl;
147 std::cout << "C3 :" << ((*(allcoeff[LO]))(2) + (*(allcoeff[NLO]))(2)) << std::endl;
148 std::cout << "C4 :" << ((*(allcoeff[LO]))(3) + (*(allcoeff[NLO]))(3)) << std::endl;
149 std::cout << "C5 :" << ((*(allcoeff[LO]))(4) + (*(allcoeff[NLO]))(4)) << std::endl << std::endl;*/
150
151 switch (order)
152 {
153 case FULLNLO:
154 return (*(allcoeff[LO]) + *(allcoeff[NLO])) * me /
155 (C_1_SM * me(0));
156 case LO:
157 return ((*(allcoeff[LO])) * me / ((*(allcoeff_SM[LO]))(0) * me(0)));
158 default:
159 throw std::runtime_error("RBd::RBd(): order not implemented");
160 }
161}
162
163gslpp::complex AmpDB2::M21_Bd(orders order)
164{
166 throw std::runtime_error("DmBd::computeThValue(): requires cofficient of order not computed");
167
168 gslpp::vector<gslpp::complex> **allcoeff = mySM.getFlavour().ComputeCoeffBd(
169 mySM.getBBd().getMu(),
170 mySM.getBBd().getScheme());
171
172 gslpp::vector<double> me(mySM.getBBd().getBpars());
173 double MBd = mySM.getMesons(QCD::B_D).getMass();
174 double Mb = mySM.Mrun(mySM.getBBd().getMu(),
177 double Md = mySM.Mrun(mySM.getBBd().getMu(),
180 double KBd = MBd / (Mb + Md) * MBd / (Mb + Md);
181 double Fb = mySM.getMesons(QCD::B_D).getDecayconst();
182 me(0) *= 1. / 3. * MBd * Fb * Fb;
183 me(1) *= -5. / 24. * KBd * MBd * Fb * Fb;
184 me(2) *= 1. / 24. * KBd * MBd * Fb * Fb;
185 me(3) *= 1. / 4. * KBd * MBd * Fb * Fb;
186 me(4) *= 1. / 12. * KBd * MBd * Fb * Fb;
187
188#if SUSYFIT_DEBUG & 1
189 std::cout << "Bd: me(0) = " << me(0) << std::endl;
190#endif
191#if SUSYFIT_DEBUG & 2
192 std::cout << "coefficient Bd: " << (*(allcoeff[LO]) + *(allcoeff[NLO]))(0) << std::endl;
193 std::cout << "M: " << me << std::endl;
194 std::cout << "mu : " << mySM.getBBd().getMu() << ", mut: " << mySM.getMut() << ", scheme: " << mySM.getBBd().getScheme() << ", B par.: " << mySM.getBBd().getBpars()(0) << std::endl;
195 std::cout << "U (mut): " << (mySM.getFlavour().getHDF2().getUDF2().Df2Evol(mySM.getBBd().getMu(), mySM.getMut(), LO)(0, 0) + mySM.getFlavour().getHDF2().getUDF2().Df2Evol(mySM.getBBd().getMu(), mySM.getMut(), NLO)(0, 0)) << std::endl;
196#endif
197
198 switch (order)
199 {
200 case FULLNLO:
201 return ((*(allcoeff[LO]) + *(allcoeff[NLO])) * me / HCUT);
202 case LO:
203 return ((*(allcoeff[LO])) * me / HCUT);
204 default:
205 throw std::runtime_error("AmpDB2::AmpBd(): order not implemented");
206 }
207}
208
209gslpp::complex AmpDB2::M21_Bs(orders order)
210{
212 throw std::runtime_error("DmBd::computeThValue(): requires cofficient of order not computed");
213
214 // Wilson coefficients in same mass scale and scheme as B parameters
215 gslpp::vector<gslpp::complex> **allcoeff = mySM.getFlavour().ComputeCoeffBs(
216 mySM.getBBs().getMu(),
217 mySM.getBBs().getScheme());
218
219 gslpp::vector<double> me(mySM.getBBs().getBpars());
220 double MBs = mySM.getMesons(QCD::B_S).getMass();
221 double Mb = mySM.Mrun(mySM.getBBs().getMu(),
224 double Ms = mySM.Mrun(mySM.getBBs().getMu(),
227 double KBs = MBs / (Mb + Ms) * MBs / (Mb + Ms);
228 double Fbs = mySM.getMesons(QCD::B_S).getDecayconst();
229
230 // matrix elements as in hep-ph/9604387v2 with KBs independent terms in 4 and 5
231 // differ by factor of 2 to arXiv:1602.03560v2 etc.
232 me(0) *= 1. / 3. * MBs * Fbs * Fbs;
233 me(1) *= -5. / 24. * KBs * MBs * Fbs * Fbs;
234 me(2) *= 1. / 24. * KBs * MBs * Fbs * Fbs;
235 me(3) *= 1. / 4. * KBs * MBs * Fbs * Fbs;
236 me(4) *= 1. / 12. * KBs * MBs * Fbs * Fbs;
237#if SUSYFIT_DEBUG & 1
238 std::cout << "Bs: me(0) = " << me(0) << std::endl;
239#endif
240
241 switch (order)
242 {
243 case FULLNLO:
244 return ((*(allcoeff[LO]) + *(allcoeff[NLO])) * me / HCUT);
245 case LO:
246 return ((*(allcoeff[LO])) * me / HCUT);
247 default:
248 throw std::runtime_error("AmpDB2::AmpBs(): order not implemented");
249 }
250}
251
252/*******************************************************************************
253 * @f$\Gamma_{21}@f$ in NLO from Ciuchini (hep-ph/0308029v2) *
254 * ****************************************************************************/
255
257{
259 // calculate DB=2 matrix elements for usage of "me" and "delta_1overm_tradBasis(quark)"
261
262 // calculate M_21_q / <O_1>
263 gslpp::complex M21overme0;
264 double MBq;
265 switch (q)
266 {
267 case d:
268 M21overme0 = M21_Bd(FULLNLO) * HCUT / me(0);
269 MBq = MB;
270 break;
271 case s:
272 M21overme0 = M21_Bs(FULLNLO) * HCUT / me(0);
273 MBq = MB_s;
274 break;
275 default:
276 throw std::runtime_error("AmpDB2::Gamma21overM21_tradBasis(orders order, quark q): invalid quark index: ");
277 }
278
279 // calculate DB=1 Wilson coefficients
281
282 // calculate DB=2 coefficients for usage of "c(quark)"
283 computeF0();
284 computeF1();
285 computeP();
286
287 // staying in the old basis: hep-ph/0308029v2: eq. 16 divided by M_21
288 /*
289 computeD(order);
290 gslpp::complex Gamma21overM21 = -Gf2 / (24 * M_PI * MBq) / M21overme0 *
291 (Mb2_prefactor * (c(q)(0) + c(q)(1) * me(1)/me(0) + c(q)(2) * me(2)/me(0)) +
292 Mb2_prefactor_1overm * delta_1overm_tradBasis(q)/me(0));
293 */
294
295 // switching to the new basis
296 gslpp::complex Gamma21overM21;
297 switch (order)
298 {
299 case FULLNLO:
302 computeD(LO);
304 Gamma21overM21 *= -Gf2 / (24. * M_PI * MBq) / M21overme0;
305 break;
306 case LO:
307 computeD(LO);
308 Gamma21overM21 = -Gf2 / (24. * M_PI * MBq) / M21overme0 *
310 break;
311 default:
312 throw std::runtime_error("AmpDB2::Gamma21overM21_tradBasis(orders order, quark q): order not implemented");
313 }
314 return Gamma21overM21;
315}
316
318{
319 if (order != NLO and order != NNLO)
320 throw(std::runtime_error("computeCKMandMasses() order not present"));
321
330 lambda_c_d = VcbVcd.conjugate();
331 lambda_u_d = mySM.getCKM().computelamu_d().conjugate();
332 lambda_c_s = VcbVcs.conjugate();
333 lambda_u_s = mySM.getCKM().computelamu_s().conjugate();
334
335 // pole mass of bottom quark
337
338 // DB=1 matching scales (arxiv: 2205.07907 Results. or Gerlach thesis eq. 7.7) varied by "getMub()" or fixed to 4.2
339 mu_1 = mySM.getMub();
340 // mass scale mu_b=mu_c
341 mu_b = mu_1;
342 if (flag_fixmub)
343 mu_b = 4.2;
344 // mu_1_overm = Mb_pole; // Gerlach thesis
346
347 // DB=2 matching scale mu_2
348 mu_2 = mySM.getBBs().getMu();
349
350 // MSbar bottom quark mass Mb(Mb)
352
353 // MSbar bottom quark mass Mb(mu_b)
354 double Mb_mub = mySM.Mrun(mu_b,
357
358 // MSbar charm quark mass Mc(Mc)
359 double Mc_Mc = mySM.getQuarks(QCD::CHARM).getMass();
360
361 // MSbar charm quark mass Mc(mu_b)
362 double Mc_mub = mySM.Mrun(mu_b,
365
366 // strong coupling constant divided by 4*Pi
367 as_4pi_mu1 = mySM.Als(mu_1, FULLNNNLO, true, true) / (4. * M_PI);
368 as_4pi_mu2 = mySM.Als(mu_2, FULLNNNLO, true, true) / (4. * M_PI);
369 as_4pi = mySM.Als(Mb_Mb, FULLNNNLO, true, true) / (4. * M_PI);
370
371 // resummed z always in MSbar
372 z = Mc_mub * Mc_mub / (Mb_mub * Mb_mub);
373 sqrtz = sqrt(z);
374
375 // PS mass of bottom quark: NNLO evaluation from hep-ph/9804241v2 eq. (25)
376 PoletoMS_as2 = 307. / 32. + M_PI2 / 3. + M_PI2 / 9. * log2 - 1. / 6. * zeta3 - (71. / 144. + M_PI2 / 18.) * nl + 4. / 3. * M_PI2 / 8. * sqrtz - z;
377 Mb_PS = Mb_Mb * (1. + 16. / 3. * as_4pi * (1. - mu_f / Mb_Mb) + 16. * as_4pi * as_4pi * (PoletoMS_as2 - mu_f / (3. * Mb_Mb) * (a1 - b0 * (2. * log(mu_f / Mb_Mb) - 2.))));
378
379 // adapt "Mb2_prefactor" to the used mass scheme; Mb, Mc, always in MSbar
380 // explained in Gerlach thesis chapter 7.0 and arxiv:2205.07907 Results.
381 if (order == NNLO)
382 {
383 Mb = Mb_mub; // if Mb changes independently of mub it has to be added to currentInput_compute_pp_s
384 Mc = Mc_mub;
385 this->flag_resumz = true;
386 switch (mass_scheme)
387 {
388 case pole:
390 break;
393 case MSbar:
394 Mb2_prefactor = Mb_mub * Mb_mub;
395 break;
396 case PS_partialNNLO:
397 case PS_partialN3LO:
398 case PS:
400 break;
401 case only1overmb:
402 Mb2_prefactor = 0.;
403 break;
404 default:
405 throw(std::runtime_error("mass_scheme not implemented"));
406 }
407 }
409 if (mass_scheme == only1overmb)
411
412 // adapt to MSbar mass scheme for the traditional basis
413 if (order == NLO)
414 {
415 Mb2_prefactor = Mb_mub * Mb_mub;
416 Mb = Mb_pole;
417 x_1 = mu_1 / Mb;
418 x_2 = mu_2 / Mb;
419 logx_1 = log(x_1);
420 logx_2 = log(x_2);
421 double Mc = Mc_mub;
422 if (!flag_resumz)
423 Mc = Mc_Mc;
424 z = Mc * Mc / (Mb_mub * Mb_mub);
425 }
426
427 Gf2 = mySM.getGF() * mySM.getGF();
430
431 z2 = z * z;
432 logz = log(z);
433 log2z = logz * logz;
434 oneminusz2 = (1. - z) * (1. - z);
435 sqrt1minus4z = sqrt(1. - 4. * z);
436
437 // calculate "z" values for 1/m_b contributions
438 // z_1overm = Mc_Mc * Mc_Mc / (Mb_Mb * Mb_Mb); //hep-ph/0612167 eq. 27
439 // MSbar charm quark mass Mb(Mb)
440 // double Mc_Mb = mySM.Mrun(mySM.getQuarks(QCD::BOTTOM).getMass_scale(),
441 // mySM.getQuarks(QCD::CHARM).getMass_scale(),
442 // mySM.getQuarks(QCD::CHARM).getMass(), FULLNNLO);
443 // z_1overm = Mc_Mb * Mc_Mb / (Mb_Mb * Mb_Mb); //arxiv:1910.00970 eq. 11
444 // if z for the 1/m_b contributions shall be varied with "mu_b"
445 z_1overm = Mc_mub * Mc_mub / (Mb_mub * Mb_mub);
446
448 oneminusz_1overm2 = (1. - z_1overm) * (1. - z_1overm);
449 sqrt1minus4z_1overm = sqrt(1. - 4. * z_1overm);
450
451 z3 = z2 * z;
452 z4 = z3 * z;
453
454 log1minusz = log(1. - z);
455 log1minus4z = log(1. - 4. * z);
456
457 sigma = (1. - sqrt1minus4z) / (1. + sqrt1minus4z);
458 logsigma = log(sigma);
460
461 Dilogz = gslpp_special_functions::dilog(z);
462 Dilogsigma = gslpp_special_functions::dilog(sigma);
463 Dilogsigma2 = gslpp_special_functions::dilog(sigma * sigma);
464 return;
465}
466
468{
469 // NNLO DB=1 Wilson coefficients
470 gslpp::vector<gslpp::complex> **WilsonCoeffsBuras = mySM.getFlavour().ComputeCoeffsgamma_Buras(mu_1);
471 for (int i = 0; i < 8; i++)
472 {
473 if (i == 6)
474 i = 7;
475 C_Buras_LO[i] = (*(WilsonCoeffsBuras[LO]))(i);
476 C_Buras_NLO[i] = (*(WilsonCoeffsBuras[NLO]))(i);
477 C_Buras_NNLO[i] = (*(WilsonCoeffsBuras[NNLO]))(i);
478 }
479
480 // LO DB=1 Wilson coefficients for 1/mb corrections
481 gslpp::vector<gslpp::complex> **WilsonCoeffs_1overm = mySM.getFlavour().ComputeCoeffsgamma_Buras(mu_1_overm);
482 C1_LO_1overm = (*(WilsonCoeffs_1overm[LO]))(0);
483 C2_LO_1overm = (*(WilsonCoeffs_1overm[LO]))(1);
486 return;
487}
488
489// hep-ph/0308029v2: eq.: 41-42: F0 = A
491{
492 cacheF0[indexF(cu, 1, 1, 1)] = 1.5 * (2. - 3. * z + z3);
493 cacheF0[indexF(cu, 1, 1, 2)] = 0.5 * (2. - 3. * z + z3);
494 cacheF0[indexF(cu, 1, 2, 2)] = 0.5 * oneminusz2 * (1. - z);
495 cacheF0[indexF(cu, 2, 1, 1)] = 3. * oneminusz2 * (1. + 2. * z);
496 cacheF0[indexF(cu, 2, 1, 2)] = oneminusz2 * (1. + 2. * z);
497 cacheF0[indexF(cu, 2, 2, 2)] = -oneminusz2 * (1. + 2. * z);
498 cacheF0[indexF(cc, 1, 1, 1)] = 3. * sqrt1minus4z * (1. - z);
499 cacheF0[indexF(cc, 1, 1, 2)] = sqrt1minus4z * (1. - z);
500 cacheF0[indexF(cc, 1, 2, 2)] = 0.5 * sqrt1minus4z * sqrt1minus4z * sqrt1minus4z;
501 cacheF0[indexF(cc, 2, 1, 1)] = 3. * sqrt1minus4z * (1. + 2. * z);
502 cacheF0[indexF(cc, 2, 1, 2)] = sqrt1minus4z * (1. + 2. * z);
503 cacheF0[indexF(cc, 2, 2, 2)] = -sqrt1minus4z * (1. + 2. * z);
504 cacheF0[indexF(uu, 1, 1, 1)] = 3.;
505 cacheF0[indexF(uu, 1, 1, 2)] = 1.;
506 cacheF0[indexF(uu, 1, 2, 2)] = 0.5;
507 cacheF0[indexF(uu, 2, 1, 1)] = 3.;
508 cacheF0[indexF(uu, 2, 1, 2)] = 1.;
509 cacheF0[indexF(uu, 2, 2, 2)] = -1.;
510 for (int k = 1; k < 3; k++)
511 {
512 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
513 {
514 cacheF0[indexF(qq, k, 2, 1)] = cacheF0[indexF(qq, k, 1, 2)];
515 }
516 }
517 return;
518}
519
520// hep-ph/0308029v2: F1 = B
521// F0 has to be computed before if flag_resumz is enabled to resum z via hep-ph/0307344 eq.(23)
522// see also 2106.05979 eq. (33): prefactor Mb2 in Gamma21 in MSbar scheme
524{
525 double log_muM = 2. * log(mu_b / Mb_pole);
526 cacheF1[indexF(cu, 1, 1, 1)] = 109. / 6. - 37. * z + 1.5 * z2 + 52. / 3. * z3 + 2. * oneminusz2 * (5. + z) * logx_2 - 4. * oneminusz2 * (5. + 7. * z) * log1minusz -
527 2. * z * (10. + 14. * z - 15. * z2) * logz + 8. * (2. - 3. * z + z3) * log1minusz * logz + 16. * (2. - 3. * z + z3) * Dilogz + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cu, 1, 1, 1) - 8. * z * logz * 1.5 * (-3. + 3. * z2));
528 cacheF1[indexF(cu, 2, 1, 1)] = -4. / 3. * (10. - 33. * z + 54. * z2 - 31. * z3) - 8. * oneminusz2 * (4. + 14. * z - 3. * z2) * log1minusz +
529 8. * z * (2. - 23. * z + 21. * z2 - 3. * z3) * logz -
530 16. * oneminusz2 * (1. + 2. * z) * (2. * logx_2 - log1minusz * logz - 2. * Dilogz) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cu, 2, 1, 1) - 8. * z * logz * 3. * 6. * (z - 1.) * z);
531 cacheF1[indexF(cu, 1, 1, 2)] = 1. * ((-502. + 912. * z - 387. * z2 - 23. * z3) / 36. - oneminusz2 * (17. + 4. * z) * logx_1 + 2. / 3. * oneminusz2 * (5. + z) * logx_2 -
532 oneminusz2 / (12. * z) * (2. + 33. * z + 94. * z2) * log1minusz - z / 12. * (80. + 69. * z - 126. * z2) * logz +
533 8. / 3. * (2. - 3. * z + z3) * (log1minusz * logz + 2. * Dilogz)) +
534 flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cu, 1, 1, 2) - 8. * z * logz * 0.5 * (-3. + 3. * z2));
535 cacheF1[indexF(cu, 2, 1, 2)] = 1. * ((-130. + 93. * z + 144. * z2 - 107. * z3) / 9. - 2. / 3. * oneminusz2 / z * (1. + 15. * z + 47. * z2 - 12. * z3) * log1minusz +
536 2. / 3. * z * (8. - 93. * z + 87. * z2 - 12. * z3) * logz -
537 8. / 3. * oneminusz2 * (1. + 2. * z) * (3. * logx_1 + 4. * logx_2 - 2. * log1minusz * logz - 4. * Dilogz)) +
538 flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cu, 2, 1, 2) - 8. * z * logz * 6. * (z - 1.) * z);
539 cacheF1[indexF(cu, 1, 2, 2)] = -M_PI2 / 3. * (1. - 5. * z + 4. * z2) + (-136. - 159. * z + 738. * z2 - 443. * z3) / 18. - 2 * oneminusz2 * (5. + 4. * z) * logx_1 +
540 2. / 3. * oneminusz2 * (4. - z) * logx_2 + oneminusz2 / (6. * z) * (7. + 32. * z2 + 3. * z3) * log1minusz -
541 z / 6. * (62. + 39. * z - 30. * z2 + 3. * z3) * logz + (5. - 3. * z - 18. * z2 + 16. * z3) / 3. * (log1minusz * logz + 2. * Dilogz) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cu, 1, 2, 2) - 8. * z * logz * -1.5 * oneminusz2);
542 cacheF1[indexF(cu, 2, 2, 2)] = 8. / 3. * M_PI2 * (1. + z - 2. * z2) - 28. / 9. * (5. + 3. * z - 27. * z2 + 19. * z3) - 16. * oneminusz2 * (1. + 2. * z) * logx_1 +
543 32. / 3. * oneminusz2 * (1. + 2. * z) * logx_2 - 4. / 3. * oneminusz2 / z * (1. - 12. * z - 16. * z2 - 3. * z3) * log1minusz +
544 4. / 3. * z * (2. - 3. * z + 18. * z2 - 3. * z3) * logz + 8. / 3. * (1. - 3. * z - 6. * z2 + 8. * z3) * (log1minusz * logz + 2. * Dilogz) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cu, 2, 2, 2) - 8. * z * logz * -6. * (z - 1.) * z);
545
546 cacheF1[indexF(cc, 1, 1, 1)] = sqrt1minus4z * (109. - 226. * z + 168. * z2) / 6. - (52. - 104. * z - 16. * z2 + 56. * z3) * logsigma +
547 2. * (5. - 8. * z) * sqrt1minus4z * logx_2 - 12. * sqrt1minus4z * (3. - 2. * z) * log1minus4z + 4. * (13. - 10. * z) * sqrt1minus4z * logz +
548 16. * (1. - 3. * z + 2. * z2) * (3. * log2sigma + 2. * logsigma * log1minus4z - 3. * logsigma * logz + 4. * Dilogsigma + 2. * Dilogsigma2) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cc, 1, 1, 1) - 8. * z * logz * 3. * (6. * z - 3.) / sqrt1minus4z);
549 cacheF1[indexF(cc, 2, 1, 1)] = -8. / 3. * sqrt1minus4z * (5. - 23. * z - 42. * z2) - 16. * (4. - 2. * z - 7. * z2 + 14. * z3) * logsigma - 32. * sqrt1minus4z * (1. + 2. * z) * logx_2 -
550 48. * sqrt1minus4z * (1. + 2. * z) * log1minus4z + 64. * sqrt1minus4z * (1. + 2. * z) * logz +
551 16. * (1. - 4. * z2) * (3. * log2sigma + 2. * logsigma * log1minus4z - 3. * logsigma * logz + 4. * Dilogsigma + 2. * Dilogsigma2) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cc, 2, 1, 1) - 8. * z * logz * 3. * -12. * z / sqrt1minus4z);
552 cacheF1[indexF(cc, 1, 1, 2)] = -sqrt1minus4z * (127. - 199. * z - 75. * z2) / 9. + (2. - 259. * z + 662. * z2 - 76. * z3 - 200. * z4) * logsigma / (12. * z) -
553 (17. - 26. * z) * sqrt1minus4z * logx_1 + 2. / 3. * (5. - 8. * z) * sqrt1minus4z * logx_2 - 4. * sqrt1minus4z * (3. - 2. * z) * log1minus4z -
554 sqrt1minus4z * (2. - 255. * z + 316. * z2) * logz / (12. * z) +
555 16. / 3. * (1. - 3. * z + 2. * z2) * (3. * log2sigma + 2. * logsigma * log1minus4z - 3. * logsigma * logz + 4. * Dilogsigma + 2. * Dilogsigma2) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cc, 1, 1, 2) - 8. * z * logz * (6. * z - 3.) / sqrt1minus4z);
556 cacheF1[indexF(cc, 2, 1, 2)] = -2. * sqrt1minus4z * (68. + 49. * z - 150. * z2) / 9. + 2. / 3. * (1. - 35. * z + 4. * z2 + 76. * z3 - 100. * z4) * logsigma / z +
557 (16. - 64. * z2) * log2sigma - 8. * sqrt1minus4z * (1. + 2. * z) * logx_1 - 32. / 3. * sqrt1minus4z * (1. + 2. * z) * logx_2 -
558 16. * sqrt1minus4z * (1. + 2. * z) * log1minus4z - 2. / 3. * sqrt1minus4z * (1. - 33. * z - 76. * z2) * logz / z +
559 16. / 3. * (1. - 4. * z2) * (2. * logsigma * log1minus4z - 3. * logsigma * logz + 4. * Dilogsigma + 2. * Dilogsigma2) + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cc, 2, 1, 2) - 8. * z * logz * -12. * z / sqrt1minus4z);
560 cacheF1[indexF(cc, 1, 2, 2)] = -M_PI2 / 3. * (1. - 10. * z) - sqrt1minus4z * (115. + 632. * z + 96. * z2) / 18. - (7. + 13. * z - 194. * z2 + 304. * z3 - 64. * z4) * logsigma / (6. * z) -
561 2. * sqrt1minus4z * (5. - 2. * z) * logx_1 + 4. / 3. * (2. - 5. * z) * sqrt1minus4z * logx_2 - 4. * (1. - 6. * z) * sqrt1minus4z * log1minus4z +
562 (13. - 54. * z + 8. * z2) * logsigma * log1minus4z / 3. + sqrt1minus4z * (7. + 27. * z - 250. * z2) * logz / (6. * z) +
563 (7. - 32. * z + 4. * z2) * (log2sigma - logsigma * logz) + 4. / 3. * (5. - 12. * z + 4. * z2) * Dilogsigma + 4. / 3. * (4. - 21. * z + 2. * z2) * Dilogsigma2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cc, 1, 2, 2) - 8. * z * logz * 0.5 * -6. * sqrt1minus4z);
564 cacheF1[indexF(cc, 2, 2, 2)] = 8. / 3. * M_PI2 * (1. + 2. * z) - 8. / 9. * sqrt1minus4z * (19. + 53. * z + 24. * z2) + 4. / 3. * (1. + 7. * z + 10. * z2 - 68. * z3 + 32. * z4) * logsigma / z -
565 8. * (1. + 2. * z) * (1. + 2. * z) * log2sigma - 16. * sqrt1minus4z * (1. + 2. * z) * logx_1 + 32. / 3. * sqrt1minus4z * (1. + 2. * z) * logx_2 +
566 16. * sqrt1minus4z * (1. + 2. * z) * log1minus4z - 8. / 3. * (1. + 6. * z + 8. * z2) * logsigma * log1minus4z -
567 4. / 3. * sqrt1minus4z * (1. + 9. * z + 26. * z2) * logz / z + 8. * (1. + 2. * z) * (1. + 2. * z) * logsigma * logz +
568 32. / 3. * (1. - 4. * z2) * Dilogsigma - 32. / 3. * (1. + 3. * z + 2. * z2) * Dilogsigma2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(cc, 2, 2, 2) - 8. * z * logz * 12. * z / sqrt1minus4z);
569
570 cacheF1[indexF(uu, 1, 1, 1)] = 109. / 6. + 10. * logx_2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(uu, 1, 1, 1));
571 cacheF1[indexF(uu, 2, 1, 1)] = -40. / 3. - 32. * logx_2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(uu, 2, 1, 1));
572 cacheF1[indexF(uu, 1, 1, 2)] = -127. / 9. + 4. / 12. - 17. * logx_1 + 10. / 3. * logx_2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(uu, 1, 1, 2));
573 cacheF1[indexF(uu, 2, 1, 2)] = -(136. + 12.) / 9. - 8. * logx_1 - 32. / 3. * logx_2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(uu, 2, 1, 2));
574 cacheF1[indexF(uu, 1, 2, 2)] = -M_PI2 / 3. - (115. + 42.) / 18. - 10. * logx_1 + 8. / 3. * logx_2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(uu, 1, 2, 2));
575 cacheF1[indexF(uu, 2, 2, 2)] = 8. * M_PI2 / 3. - 8. / 9. * (19. - 3.) - 16. * logx_1 + 32. / 3. * logx_2 + flag_resumz * ((32. / 3. + 8. * log_muM) * F0(uu, 2, 2, 2));
576
577 for (int k = 1; k < 3; k++)
578 {
579 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
580 {
581 cacheF1[indexF(qq, k, 2, 1)] = cacheF1[indexF(qq, k, 1, 2)];
582 }
583 }
584 return;
585}
586
587// hep-ph/0308029v2: eq. 50-54
589{
590 cacheP[indexP(cu, 1, 2, 2)] = -1. / 27. + 2. / 9. * z - logx_1 / 9. - sqrt1minus4z * (1. + 2. * z) * (2. + 3. * logsigma + 6. * logx_1) / 54. + logz / 18.;
591 cacheP[indexP(cu, 2, 2, 2)] = 8. / 27. + 16. / 9. * z + 8. / 9. * logx_1 + 4. / 27. * sqrt1minus4z * (1. + 2. * z) * (2. + 3. * logsigma + 6. * logx_1) - 4. * logz / 9.;
592 cacheP[indexP(cc, 1, 2, 2)] = -2. / 27. * sqrt1minus4z * (1. + 8. * z + 12. * z2) - logsigma / 9. + 4. / 3. * z2 * logsigma + 16. / 9. * z3 * logsigma -
593 sqrt1minus4z * (1. + 2. * z) * (2. * logx_1 - logz) / 9.;
594 cacheP[indexP(cc, 2, 2, 2)] = 16. / 27. * sqrt1minus4z * (1. + 8. * z + 12. * z2) + 8. / 9. * logsigma - 32. / 3. * z2 * logsigma - 128. / 9. * z3 * logsigma +
595 8. / 9. * sqrt1minus4z * (1. + 2. * z) * (2. * logx_1 - logz);
596 cacheP[indexP(uu, 1, 2, 2)] = -2. / 27. - 2. / 9. * logx_1;
597 cacheP[indexP(uu, 2, 2, 2)] = 16. / 27. + 16. / 9. * logx_1;
598
599 cacheP[indexP(cc, 1, 1, 3)] = 3. * sqrt1minus4z * (1. - z);
600 cacheP[indexP(cc, 2, 1, 3)] = 3. * sqrt1minus4z * (1. + 2. * z);
601 cacheP[indexP(cc, 1, 2, 3)] = sqrt1minus4z * (1. - z);
602 cacheP[indexP(cc, 2, 2, 3)] = sqrt1minus4z * (1. + 2. * z);
603 cacheP[indexP(cc, 1, 1, 4)] = sqrt1minus4z * (1. - z);
604 cacheP[indexP(cc, 2, 1, 4)] = sqrt1minus4z * (1. + 2. * z);
605 cacheP[indexP(cc, 1, 2, 4)] = 0.5 * sqrt1minus4z * sqrt1minus4z * sqrt1minus4z;
606 cacheP[indexP(cc, 2, 2, 4)] = -sqrt1minus4z * (1. + 2. * z);
607 cacheP[indexP(cc, 1, 1, 5)] = 9. * z * sqrt1minus4z;
608 cacheP[indexP(cc, 2, 1, 5)] = 0.;
609 cacheP[indexP(cc, 1, 2, 5)] = 3. * z * sqrt1minus4z;
610 cacheP[indexP(cc, 2, 2, 5)] = 0.;
611 cacheP[indexP(cc, 1, 1, 6)] = 3. * z * sqrt1minus4z;
612 cacheP[indexP(cc, 2, 1, 6)] = 0.;
613 cacheP[indexP(cc, 1, 2, 6)] = 3. * z * sqrt1minus4z;
614 cacheP[indexP(cc, 2, 2, 6)] = 0.;
615 cacheP[indexP(cc, 1, 2, 8)] = -1. / 6. * sqrt1minus4z * (1. + 2. * z);
616 cacheP[indexP(cc, 2, 2, 8)] = 4. / 3. * sqrt1minus4z * (1. + 2. * z);
617
618 cacheP[indexP(uu, 1, 1, 3)] = 3.;
619 cacheP[indexP(uu, 2, 1, 3)] = 3.;
620 cacheP[indexP(uu, 1, 2, 3)] = 1.;
621 cacheP[indexP(uu, 2, 2, 3)] = 1.;
622 cacheP[indexP(uu, 1, 1, 4)] = 1.;
623 cacheP[indexP(uu, 2, 1, 4)] = 1.;
624 cacheP[indexP(uu, 1, 2, 4)] = 0.5;
625 cacheP[indexP(uu, 2, 2, 4)] = -1.;
626 cacheP[indexP(uu, 1, 1, 5)] = 0.;
627 cacheP[indexP(uu, 2, 1, 5)] = 0.;
628 cacheP[indexP(uu, 1, 2, 5)] = 0.;
629 cacheP[indexP(uu, 2, 2, 5)] = 0.;
630 cacheP[indexP(uu, 1, 1, 6)] = 0.;
631 cacheP[indexP(uu, 2, 1, 6)] = 0.;
632 cacheP[indexP(uu, 1, 2, 6)] = 0.;
633 cacheP[indexP(uu, 2, 2, 6)] = 0.;
634 cacheP[indexP(uu, 1, 2, 8)] = -1. / 6.;
635 cacheP[indexP(uu, 2, 2, 8)] = 4. / 3.;
636 return;
637}
638
639// hep-ph/0308029v2: 39:
641{
642 if (order == FULLNLO)
643 {
644 // qq = uu and cc
645 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 2))
646 {
647 for (int k = 1; k <= 2; k++)
648 {
649 gslpp::complex result = 0.;
650 for (int i = 1; i <= 2; i++)
651 {
652 for (int j = 1; j <= 2; j++)
653 {
654 result += C_Buras_LO[i - 1] * C_Buras_LO[j - 1] * F(qq, k, i, j) + (C_Buras_NLO[i - 1] * C_Buras_LO[j - 1] + C_Buras_LO[i - 1] * C_Buras_NLO[j - 1]) * F0(qq, k, i, j);
655 }
656 }
657 result += +as_4pi_mu1 * C_Buras_LO[2 - 1] * C_Buras_LO[2 - 1] * P(qq, k, 2, 2) + 2. * as_4pi_mu1 * C_Buras_LO[2 - 1] * C_Buras_LO[8 - 1] * P(qq, k, 2, 8);
658 for (int i = 1; i <= 2; i++)
659 {
660 for (int r = 3; r <= 6; r++)
661 {
662 result += 2. * C_Buras_LO[i - 1] * C_Buras_LO[r - 1] * P(qq, k, i, r);
663 }
664 }
665 cacheD[indexD(qq, k)] = result;
666 }
667 }
668 // qq = cu
669 for (int k = 1; k <= 2; k++)
670 {
671 gslpp::complex result = 0.;
672 for (int i = 1; i <= 2; i++)
673 {
674 for (int j = 1; j <= 2; j++)
675 {
676 result += C_Buras_LO[i - 1] * C_Buras_LO[j - 1] * F(cu, k, i, j) + (C_Buras_NLO[i - 1] * C_Buras_LO[j - 1] + C_Buras_LO[i - 1] * C_Buras_NLO[j - 1]) * F0(cu, k, i, j);
677 }
678 }
679 result += +as_4pi_mu1 * C_Buras_LO[2 - 1] * C_Buras_LO[2 - 1] * P(cu, k, 2, 2) + as_4pi_mu1 * C_Buras_LO[2 - 1] * C_Buras_LO[8 - 1] * (P(cc, k, 2, 8) + P(uu, k, 2, 8));
680 for (int i = 1; i <= 2; i++)
681 {
682 for (int r = 3; r <= 6; r++)
683 {
684 result += C_Buras_LO[i - 1] * C_Buras_LO[r - 1] * (P(cc, k, i, r) + P(uu, k, i, r));
685 }
686 }
687 cacheD[indexD(cu, k)] = result;
688 }
689 }
690 else if (order == LO)
691 {
692 // qq = uu and cc
693 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 2))
694 {
695 for (int k = 1; k <= 2; k++)
696 {
697 gslpp::complex result = 0.;
698 for (int i = 1; i <= 2; i++)
699 {
700 for (int j = 1; j <= 2; j++)
701 {
702 result += C_Buras_LO[i - 1] * C_Buras_LO[j - 1] * F0(qq, k, i, j);
703 }
704 }
705 for (int i = 1; i <= 2; i++)
706 {
707 for (int r = 3; r <= 6; r++)
708 {
709 result += 2. * C_Buras_LO[i - 1] * C_Buras_LO[r - 1] * P(qq, k, i, r);
710 }
711 }
712 cacheD[indexD(qq, k)] = result;
713 }
714 }
715 // qq = cu
716 for (int k = 1; k <= 2; k++)
717 {
718 gslpp::complex result = 0.;
719 for (int i = 1; i <= 2; i++)
720 {
721 for (int j = 1; j <= 2; j++)
722 {
723 result += C_Buras_LO[i - 1] * C_Buras_LO[j - 1] * F0(cu, k, i, j);
724 }
725 }
726 for (int i = 1; i <= 2; i++)
727 {
728 for (int r = 3; r <= 6; r++)
729 {
730 result += C_Buras_LO[i - 1] * C_Buras_LO[r - 1] * (P(cc, k, i, r) + P(uu, k, i, r));
731 }
732 }
733 cacheD[indexD(cu, k)] = result;
734 }
735 }
736 else
737 {
738 throw std::runtime_error("AmpDB2::computeD(orders order): order not implemented");
739 }
740 return;
741}
742
743double AmpDB2::F0(quarks qq, int k, int i, int j)
744{
745 return cacheF0[indexF(qq, k, i, j)];
746}
747
748double AmpDB2::F1(quarks qq, int k, int i, int j)
749{
750 return cacheF1[indexF(qq, k, i, j)];
751}
752
753double AmpDB2::F(quarks qq, int k, int i, int j)
754{
755 return F0(qq, k, i, j) + as_4pi_mu1 * F1(qq, k, i, j);
756}
757
758double AmpDB2::P(quarks qq, int k, int i, int j)
759{
760 return cacheP[indexP(qq, k, i, j)];
761}
762
763// indizes for F to save them in an array
764int AmpDB2::indexF(quarks qq, int k, int i, int j)
765{
766 return qq * 8 + (k - 1) * 4 + (i - 1) * 2 + (j - 1);
767}
768// indizes for P to save them in an array: c := cc and u := uu
769int AmpDB2::indexP(quarks qq, int k, int i, int j)
770{
771 return qq * 28 + (k - 1) * 14 + (i - 1) * 7 + (j - 2);
772}
773
775{
776 double Mq;
777 double Mb_mu2 = mySM.Mrun(mu_2,
780 double MBq2;
781 double KBq;
782 double FBq2;
783 switch (q)
784 {
785 case d:
786 me = mySM.getBBd().getBpars();
787 Mq = mySM.Mrun(mu_2,
790 MBq2 = MB * MB;
792 break;
793 case s:
794 me = mySM.getBBs().getBpars();
795 Mq = mySM.Mrun(mu_2,
798 MBq2 = MB_s * MB_s;
800 break;
801 default:
802 throw std::runtime_error("AmpDB2::compute_matrixelements(quark q): invalid quark index: ");
803 }
804 // pole mass for mbpow like in: hep-ph/0612167 eq. 28
805 // double Mbpow = mySM.Mbar2Mp(mySM.getQuarks(QCD::BOTTOM).getMass());
806 // double Mbpow2 = Mbpow * Mbpow;
807 // KBq = MBq2 / ((Mbpow + Mq) * (Mbpow + Mq));
808
809 // arXiv:1907.01025v2 equation (4)
810 KBq = MBq2 / ((Mb_mu2 + Mq) * (Mb_mu2 + Mq));
811 me(0) *= 8. / 3. * MBq2 * FBq2;
812 me(1) *= -5. / 3. * KBq * MBq2 * FBq2;
813 me(2) *= 1. / 3. * KBq * MBq2 * FBq2;
814 me(3) *= 2. * (KBq + 1. / 6.) * MBq2 * FBq2;
815 me(4) *= 2. / 3. * (KBq + 3. / 2.) * MBq2 * FBq2;
816
817 // old parameterization from hep-ph/0612167 eq. 28 (or hep-ph/0308029 eq.26)
818 /*
819 me_R(0) = me(1) + me(2) + 0.5 * me(0);
820 me_R(1) = Mq/Mb * me(3);
821 me_R(2) = -2./3. * FBq2 * MBq2 * (MBq2 / Mbpow2 - 1.);
822 me_R(3) = 7./6. * FBq2 * MBq2 * (MBq2 / Mbpow2 - 1.);
823 me_R(4) = 0.5 * (me(2) + 0.5 * me(0) + me(1) - 2. * Mq/Mbpow * me(4) + me_R(2));
824 */
825
826 // Gerlach thesis eq.7.5, 7.6
827 switch (q)
828 {
829 case d:
832 break;
833 case s:
836 break;
837 }
838 me_R(2) *= MBq2 * FBq2;
839 me_R(3) *= MBq2 * FBq2;
840 me_R(4) = 0.5 * (me(2) + 0.5 * me(0) + me(1) - 2. * Mq / Mb_mu2 * me(4) + me_R(2));
841
842 me_Rtilde(1) = -me_R(2);
843 me_Rtilde(2) = me_R(3) + 0.5 * me_R(2);
844
845 // subleading matrix elements that are not independent
846 // Gerlach thesis eq. (3.64)
847 double L_2 = 2. * log(mu_2 / Mb_mu2);
848 double as1_me0 = 0., as1_me2 = 0.;
849 if (order == FULLNLO)
850 {
851 as1_me0 = 4. * L_2 + 26. / 3.;
852 as1_me2 = 8. * L_2 + 8.;
853 }
854 me_R(0) = 0.5 * (1. + as1_me0 * as_4pi_mu2) * me(0) + me(1) + (1. + as1_me2 * as_4pi_mu2) * me(2);
855 // arxiv/1907.01025 eq.26
856 me_R(1) = Mq / Mb_mu2 * me(3);
857 me_Rtilde(0) = Mq / Mb_mu2 * me(4);
858
859 // switch matrix elements to RI scheme
860 if (flag_RI)
861 {
862 me_R(0) = 0.5 * me(0) + me(1) + me(2);
863 if (order == FULLNLO)
864 me += -as_4pi_mu2 * meMStoRI * me;
865 }
866
867 // matrix elements needed for the leading term of Gamma21overM21
868 meoverme0(0) = 1.;
869 meoverme0(1) = me(1) / me(0);
870 meoverme0(2) = me(2) / me(0);
871 return;
872}
873
874// hep-ph/0308029v2 eq. 18
875gslpp::vector<gslpp::complex> AmpDB2::c(quark q, orders order)
876{
877 gslpp::vector<gslpp::complex> result = gslpp::vector<gslpp::complex>(3, 0.);
878 switch (q)
879 {
880 case d:
881 for (int i = 1; i <= 2; i++)
882 {
883 result.assign(i - 1,
884 VtbVtd2 * D(uu, i) + 2. * VcbVcd * VtbVtd * (D(uu, i) - D(cu, i)) + VcbVcd2 * (D(cc, i) + D(uu, i) - 2. * D(cu, i)));
885 }
886 break;
887 case s:
888 for (int i = 1; i <= 2; i++)
889 {
890 result.assign(i - 1,
891 VtbVts2 * D(uu, i) + 2. * VcbVcs * VtbVts * (D(uu, i) - D(cu, i)) + VcbVcs2 * (D(cc, i) + D(uu, i) - 2. * D(cu, i)));
892 }
893 break;
894 default:
895 throw std::runtime_error("AmpDB2::c(quark q, double mu_2): invalid quark index: ");
896 }
897
898 // transformation to the new basis (hep-ph/0612167 eq. 18 + 21)
899 if (order == LO)
900 {
901 result.assign(0, result(0) - 0.5 * result(1));
902 result.assign(2, -result(1));
903 result.assign(1, 0.);
904 }
905 else if (order == NLO)
906 {
907 // save NLO contribution from transformation of the tradBasis to RI scheme
908 gslpp::vector<gslpp::complex> RI_NLO = gslpp::vector<gslpp::complex>(3, 0.);
909 if (flag_RI)
910 RI_NLO = as_4pi_mu2 * coeffsMStoRI.transpose() * result;
911 double alpha1 = as_4pi_mu2 * 4. / 3. * (12. * log(mu_2 / Mb_pole) + 6.);
912 double alpha2 = as_4pi_mu2 * 4. / 3. * (6. * log(mu_2 / Mb_pole) + 13. / 2.);
913 result.assign(0, -alpha2 / 2. * result(1));
914 result.assign(2, -alpha1 * result(1));
915 if (flag_RI)
916 result += RI_NLO;
917 result.assign(1, 0.);
918 }
919 else
920 {
921 throw std::runtime_error("AmpDB2::c(quark q, orders order): order not implemented");
922 }
923 return result;
924}
925
926gslpp::complex AmpDB2::D(quarks qq, int k)
927{
928 return cacheD[indexD(qq, k)];
929}
930
931// indizes for D to save them in arrays
932int AmpDB2::indexD(quarks qq, int k)
933{
934 if (k != 1 and k != 2)
935 {
936 throw std::runtime_error("AmpDB2::indexD(quarks qq, int k): invalid k");
937 }
938 return qq * 2 + (k - 1);
939}
940
941/*******************************************************************************
942 * 1/mb corrections of @f$\Gamma_{21}@f$ *
943 * ****************************************************************************/
944
946{
947 // hep-ph/0308029: equation 18
949 switch (q)
950 {
951 case d:
953 case s:
955 default:
956 throw std::runtime_error("AmpDB2::delta_1overm_tradBasis(quark q): invalid quark index: ");
957 }
958}
959
961{
962 // hep-ph/0308029v2 eq.20
963 cache_deltas_1overm_tradBasis[index_deltas(cc, q)] = sqrt1minus4z_1overm * ((1 + 2. * z_1overm) * (K_2 * (me_R(2) + 2. * me_R(4)) - 2. * K_1 * (me_R(1) + me_R(2))) - 12. * z_1overm2 / (1. - 4. * z_1overm) * (K_1 * (me_R(2) + 2. * me_R(3)) + 2. * K_2 * me_R(3)));
964 cache_deltas_1overm_tradBasis[index_deltas(cu, q)] = oneminusz_1overm2 * ((1. + 2. * z_1overm) * (K_2 * (me_R(2) + 2. * me_R(4)) - 2. * K_1 * (me_R(1) + me_R(2))) - 6. * z_1overm2 / (1. - z_1overm) * (K_1 * (me_R(2) + 2. * me_R(3)) + 2. * K_2 * me_R(3)));
965 cache_deltas_1overm_tradBasis[index_deltas(uu, q)] = K_2 * (me_R(2) + 2. * me_R(4)) - 2. * K_1 * (me_R(1) + me_R(2));
966 return;
967}
968
970{
972}
973
974gslpp::complex AmpDB2::deltas_1overm(quarks qq, quark q)
975{
976 return cache_deltas_1overm[index_deltas(qq, q)];
977}
978
979// indizes for deltas_1overm to save them in an array
981{
982 return qq * 2 + q;
983}
984
986{
987 // hep-ph/0612167 equation (10)
988 gslpp::complex lambda_c, lambda_u;
989 switch (q)
990 {
991 case d:
992 lambda_c = lambda_c_d;
993 lambda_u = lambda_u_d;
994 break;
995 case s:
996 lambda_c = lambda_c_s;
997 lambda_u = lambda_u_s;
998 break;
999 default:
1000 throw std::runtime_error("AmpDB2::delta_1overm(quark q): invalid quark index: ");
1001 }
1003 return -(lambda_c * lambda_c * deltas_1overm(cc, q) + 2. * lambda_c * lambda_u * deltas_1overm(cu, q) + lambda_u * lambda_u * deltas_1overm(uu, q)).conjugate();
1004}
1005
1007{
1008 // hep-ph/0612167 eq.24
1009 compute_g();
1010 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
1011 {
1012 cache_deltas_1overm[index_deltas(qq, q)] = 0.;
1013 for (int i = 0; i <= 3; i++)
1014 {
1015 cache_deltas_1overm[index_deltas(qq, q)] += g(qq, i) * me_R(i);
1016 }
1017 for (int i = 0; i <= 2; i++)
1018 {
1019 cache_deltas_1overm[index_deltas(qq, q)] += gtilde(qq, i) * me_Rtilde(i);
1020 }
1021 }
1022 return;
1023}
1024
1026{
1027 // hep-ph/0612167
1028 // equation (25)
1029 double cache_z = z_1overm;
1030 double cache_z2 = z_1overm2;
1031 double cache_oneminusz_1overm2 = oneminusz_1overm2;
1032 double cache_sqrt1minus4z = sqrt1minus4z_1overm;
1033 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 2))
1034 {
1035 cacheg[indexg(qq, 0)] = sqrt1minus4z_1overm * (1. + 2. * z_1overm) * K_1;
1036 cacheg[indexg(qq, 1)] = -2. * sqrt1minus4z_1overm * (1. + 2. * z_1overm) * K_1;
1037 cacheg[indexg(qq, 2)] = -2. * (1. - 2. * z_1overm - 2. * z_1overm2) / sqrt1minus4z_1overm * K_1;
1038 cacheg[indexg(qq, 3)] = -24. * z_1overm2 / sqrt1minus4z_1overm * K_1;
1039 cachegtilde[indexg(qq, 0)] = -2. * sqrt1minus4z_1overm * (1. + 2. * z_1overm) * K_2;
1040 cachegtilde[indexg(qq, 1)] = -2. * (1. - 2. * z_1overm - 2. * z_1overm2) / sqrt1minus4z_1overm * K_2;
1041 cachegtilde[indexg(qq, 2)] = -24. * z_1overm2 / sqrt1minus4z_1overm * K_2;
1042 z_1overm = 0.;
1043 z_1overm2 = 0.;
1044 oneminusz_1overm2 = 1.;
1046 }
1047 // equation (26)
1048 z_1overm = cache_z;
1049 z_1overm2 = cache_z2;
1050 oneminusz_1overm2 = cache_oneminusz_1overm2;
1051 sqrt1minus4z_1overm = cache_sqrt1minus4z;
1052 cacheg[indexg(cu, 0)] = oneminusz_1overm2 * (1. + 2. * z_1overm) * K_1;
1053 cacheg[indexg(cu, 1)] = -2. * oneminusz_1overm2 * (1. + 2. * z_1overm) * K_1;
1054 cacheg[indexg(cu, 2)] = -2. * (1. - z_1overm) * (1. + z_1overm + z_1overm2) * K_1;
1055 ;
1056 cacheg[indexg(cu, 3)] = -12. * (1. - z_1overm) * z_1overm2 * K_1;
1057 cachegtilde[indexg(cu, 0)] = -2. * oneminusz_1overm2 * (1. + 2. * z_1overm) * K_2;
1058 cachegtilde[indexg(cu, 1)] = -2. * (1. - z_1overm) * (1. + z_1overm + z_1overm2) * K_2;
1059 cachegtilde[indexg(cu, 2)] = -12. * (1. - z_1overm) * z_1overm2 * K_2;
1060 return;
1061}
1062
1063gslpp::complex AmpDB2::g(quarks qq, int i)
1064{
1065 return cacheg[indexg(qq, i)];
1066}
1067
1068gslpp::complex AmpDB2::gtilde(quarks qq, int i)
1069{
1070 return cachegtilde[indexg(qq, i)];
1071}
1072
1074{
1075 return qq * 4 + i;
1076}
1077
1078/*******************************************************************************
1079 * @f$\Gamma_{21}@f$ in NNLO from Marvin Gerlach (2205.07907 and thesis) *
1080 * ****************************************************************************/
1081
1082gslpp::complex AmpDB2::Gamma21overM21(orders order, mass_schemes mass_scheme, int BMeson)
1083{
1084 computeCKMandMasses(NNLO, mass_scheme);
1085
1086 // calculate M_21_q / <O_1>
1087 gslpp::complex M21overme0;
1088 double MBq;
1089 quark q;
1090 switch (BMeson)
1091 {
1092 case 0:
1093 q = d;
1094 // calculate DB=2 matrix elements for usage of "me" and "delta_1overm_(quark)"
1096 M21overme0 = M21_Bd(FULLNLO) * HCUT / me(0);
1097 MBq = MB;
1098 break;
1099 case 1:
1100 q = s;
1101 // calculate DB=2 matrix elements for usage of "me" and "delta_1overm_(quark)"
1103 M21overme0 = M21_Bs(FULLNLO) * HCUT / me(0);
1104 MBq = MB_s;
1105 break;
1106 default:
1107 throw std::runtime_error("AmpDB2::Gamma21overM21(orders order, int BMeson): invalid B meson index: ");
1108 }
1109
1110 // calculate DB=1 Wilson coefficients
1112
1113 // calculate DB=2 coefficients in pole scheme for usage of "c_H()"
1114 compute_pp_s();
1115
1116 // switch to another scheme if needed
1117 if (mass_scheme == MSbar)
1118 {
1120 }
1121 else if (mass_scheme == PS)
1122 {
1123 poletoPS_pp_s();
1124 }
1125 else if (mass_scheme == pole or mass_scheme == only1overmb)
1126 {
1127 }
1128 else if (mass_scheme == MSbar_partialNNLO)
1129 {
1132 }
1133 else if (mass_scheme == PS_partialNNLO)
1134 {
1136 poletoPS_pp_s();
1137 }
1138 else if (mass_scheme == MSbar_partialN3LO)
1139 {
1141 }
1142 else if (mass_scheme == PS_partialN3LO)
1143 {
1145 }
1146 else
1147 {
1148 std::cerr << "WARNING: mass_scheme might no be implemented.\n";
1149 }
1150
1151 /* partial contribution without 1overm
1152 gslpp::vector<gslpp::complex> Gamma21overM21_partial = Mb2_prefactor * (c_H_partial(q, 0) + c_H_partial(q, 1) * me(1)/me(0) + c_H_partial(q, 2) * me(2)/me(0)).conjugate()
1153 * Gf2 / (24 * M_PI * MBq) / M21overme0; */
1154
1155 // Gerlach thesis eq. 6.1 divided by M_21
1156 gslpp::complex Gamma21overM21 = 0.;
1157 if (flag_RI)
1158 {
1159 Gamma21overM21 = Mb2_prefactor * (c_H(q, LO) * meoverme0).conjugate();
1160 // compute_matrixelements(q, LO); //minimal difference
1161 Gamma21overM21 += Mb2_prefactor * (c_H(q, NLO) * meoverme0).conjugate();
1162 }
1163 else
1164 {
1165 Gamma21overM21 = Mb2_prefactor * (c_H(q, order) * meoverme0).conjugate();
1166 }
1167 computeWilsonCoeffsBuras(); /*calculate DB=1 Wilson coefficients in the basis for "delta_1overm" */
1169 Gamma21overM21 *= Gf2 / (24. * M_PI * MBq) / M21overme0;
1170 return Gamma21overM21;
1171}
1172
1174{
1175 // NLO DB=1 Wilson coefficients C_i, i=1-6,8
1176 gslpp::vector<gslpp::complex> **WilsonCoeffsMisiak = mySM.getFlavour().ComputeCoeffsgamma(mu_1);
1177 for (int i = 0; i < 8; i++)
1178 {
1179 if (i == 6)
1180 i = 7;
1181 C_Misiak_LO[i] = (*(WilsonCoeffsMisiak[LO]))(i);
1182 C_Misiak_NLO[i] = (*(WilsonCoeffsMisiak[NLO]))(i);
1183 C_Misiak_NNLO[i] = (*(WilsonCoeffsMisiak[NNLO]))(i);
1184 }
1185}
1186
1187// Gerlach thesis eq. (6.2)
1188gslpp::vector<gslpp::complex> AmpDB2::c_H(quark q, orders order)
1189{
1190 gslpp::vector<gslpp::complex> result = gslpp::vector<gslpp::complex>(3, 0.);
1191 gslpp::complex lambda_c, lambda_u;
1192 switch (q)
1193 {
1194 case d:
1195 lambda_c = lambda_c_d;
1196 lambda_u = lambda_u_d;
1197 break;
1198 case s:
1199 lambda_c = lambda_c_s;
1200 lambda_u = lambda_u_s;
1201 break;
1202 default:
1203 throw std::runtime_error("AmpDB2::c_H(quark q): invalid quark index: ");
1204 }
1205 if (flag_RI and order == NLO)
1206 {
1207 // LO transformed to the traditional basis
1208 result.assign(0, -lambda_c * lambda_c * H(cc, LO) - 2. * lambda_c * lambda_u * H(cu, LO) - lambda_u * lambda_u * H(uu, LO));
1209 result.assign(2, -lambda_c * lambda_c * H_s(cc, LO) - 2. * lambda_c * lambda_u * H_s(cu, LO) - lambda_u * lambda_u * H_s(uu, LO));
1210 result.assign(0, result(0) - 0.5 * result(2));
1211 result.assign(1, -result(2));
1212 result.assign(2, 0.);
1213 // only NLO change to RI
1214 result = as_4pi_mu2 * coeffsMStoRI.transpose() * result;
1215 // return to tradBasis + NLO
1216 result.assign(0, result(0) - 0.5 * result(1) +
1217 -lambda_c * lambda_c * H(cc, NLO) - 2. * lambda_c * lambda_u * H(cu, NLO) - lambda_u * lambda_u * H(uu, NLO));
1218 result.assign(2, -result(1) +
1219 -lambda_c * lambda_c * H_s(cc, NLO) - 2. * lambda_c * lambda_u * H_s(cu, NLO) - lambda_u * lambda_u * H_s(uu, NLO));
1220 result.assign(1, 0.);
1221 return result;
1222 }
1223 if (flag_RI and order != LO)
1224 throw std::runtime_error("AmpDB2::c_H(quark q, orders order) order for RI not implemented");
1225
1226 result.assign(0, -lambda_c * lambda_c * H(cc, order) - 2. * lambda_c * lambda_u * H(cu, order) - lambda_u * lambda_u * H(uu, order));
1227 result.assign(2, -lambda_c * lambda_c * H_s(cc, order) - 2. * lambda_c * lambda_u * H_s(cu, order) - lambda_u * lambda_u * H_s(uu, order));
1228 return result;
1229}
1230
1231// Gerlach thesis eq. (6.4)
1232gslpp::complex AmpDB2::H(quarks qq, orders order)
1233{
1234 if (order == LO)
1235 return H_partial(qq, 1, 8, 1, 8, 0);
1236 if (order == NLO)
1237 return H_partial(qq, 1, 8, 1, 8, 1);
1238 if (order == NNLO)
1239 return H_partial(qq, 1, 8, 1, 8, 2);
1240 if (order == FULLNLO)
1241 return H_partial(qq, 1, 8, 1, 8, 0) + H_partial(qq, 1, 8, 1, 8, 1);
1242 if (order == FULLNNLO)
1243 return H_partial(qq, 1, 8, 1, 8, 0) + H_partial(qq, 1, 8, 1, 8, 1) + H_partial(qq, 1, 8, 1, 8, 2);
1244 if (order == FULLNNNLO)
1245 return H_partial(qq, 1, 8, 1, 8, 0) + H_partial(qq, 1, 8, 1, 8, 1) + H_partial(qq, 1, 8, 1, 8, 2) + H_partial(qq, 1, 8, 1, 8, 3);
1246 throw std::runtime_error("AmpDB2::H(quarks qq, orders order) order not implemented");
1247}
1248gslpp::complex AmpDB2::H_s(quarks qq, orders order)
1249{
1250 if (order == LO)
1251 return H_s_partial(qq, 1, 8, 1, 8, 0);
1252 if (order == NLO)
1253 return H_s_partial(qq, 1, 8, 1, 8, 1);
1254 if (order == NNLO)
1255 return H_s_partial(qq, 1, 8, 1, 8, 2);
1256 if (order == FULLNLO)
1257 return H_s_partial(qq, 1, 8, 1, 8, 0) + H_s_partial(qq, 1, 8, 1, 8, 1);
1258 if (order == FULLNNLO)
1259 return H_s_partial(qq, 1, 8, 1, 8, 0) + H_s_partial(qq, 1, 8, 1, 8, 1) + H_s_partial(qq, 1, 8, 1, 8, 2);
1260 if (order == FULLNNNLO)
1261 return H_s_partial(qq, 1, 8, 1, 8, 0) + H_s_partial(qq, 1, 8, 1, 8, 1) + H_s_partial(qq, 1, 8, 1, 8, 2) + H_s_partial(qq, 1, 8, 1, 8, 3);
1262 throw std::runtime_error("AmpDB2::H_s(quarks qq, orders order) order not implemented");
1263}
1264
1265gslpp::vector<gslpp::complex> AmpDB2::c_H_partial(quark q, int i)
1266{
1267 gslpp::complex lambda_c, lambda_u;
1268 switch (q)
1269 {
1270 case d:
1271 lambda_c = lambda_c_d;
1272 lambda_u = lambda_u_d;
1273 break;
1274 case s:
1275 lambda_c = lambda_c_s;
1276 lambda_u = lambda_u_s;
1277 break;
1278 default:
1279 throw std::runtime_error("AmpDB2::c_H_partial(quark q, int i): invalid quark index: ");
1280 }
1281 gslpp::vector<gslpp::complex> zeros(12, 0.);
1282 switch (i)
1283 {
1284 case 0:
1285 return -lambda_c * lambda_c * H_allpartial(cc) - 2. * lambda_c * lambda_u * H_allpartial(cu) - lambda_u * lambda_u * H_allpartial(uu);
1286 case 1:
1287 return zeros;
1288 case 2:
1289 return -lambda_c * lambda_c * H_s_allpartial(cc) - 2. * lambda_c * lambda_u * H_s_allpartial(cu) - lambda_u * lambda_u * H_s_allpartial(uu);
1290 default:
1291 throw std::runtime_error("AmpDB2::c_H_partial(quark q, int i): invalid index i");
1292 }
1293}
1294
1295gslpp::vector<gslpp::complex> AmpDB2::H_allpartial(quarks qq)
1296{
1297 gslpp::vector<gslpp::complex> result(12, 0.);
1298 result.assign(0, H_partial(qq, 1, 2, 1, 2, 0));
1299 result.assign(1, H_partial(qq, 1, 2, 1, 2, 1));
1300 result.assign(2, H_partial(qq, 1, 2, 1, 2, 2));
1301 result.assign(3, H_partial(qq, 1, 2, 3, 6, 0));
1302 result.assign(4, H_partial(qq, 1, 2, 3, 6, 1));
1303 result.assign(5, H_partial(qq, 3, 6, 3, 6, 0));
1304 result.assign(6, H_partial(qq, 3, 6, 3, 6, 1));
1305 result.assign(7, H_partial(qq, 1, 2, 8, 8, 1));
1306 result.assign(8, H_partial(qq, 1, 2, 8, 8, 2));
1307 result.assign(9, H_partial(qq, 3, 6, 8, 8, 1));
1308 result.assign(10, H_partial(qq, 3, 6, 8, 8, 2));
1309 result.assign(11, H_partial(qq, 8, 8, 8, 8, 2));
1310 return result;
1311}
1312
1313gslpp::vector<gslpp::complex> AmpDB2::H_s_allpartial(quarks qq)
1314{
1315 gslpp::vector<gslpp::complex> result(12, 0.);
1316 result.assign(0, H_s_partial(qq, 1, 2, 1, 2, 0));
1317 result.assign(1, H_s_partial(qq, 1, 2, 1, 2, 1));
1318 result.assign(2, H_s_partial(qq, 1, 2, 1, 2, 2));
1319 result.assign(3, H_s_partial(qq, 1, 2, 3, 6, 0));
1320 result.assign(4, H_s_partial(qq, 1, 2, 3, 6, 1));
1321 result.assign(5, H_s_partial(qq, 3, 6, 3, 6, 0));
1322 result.assign(6, H_s_partial(qq, 3, 6, 3, 6, 1));
1323 result.assign(7, H_s_partial(qq, 1, 2, 8, 8, 1));
1324 result.assign(8, H_s_partial(qq, 1, 2, 8, 8, 2));
1325 result.assign(9, H_s_partial(qq, 3, 6, 8, 8, 1));
1326 result.assign(10, H_s_partial(qq, 3, 6, 8, 8, 2));
1327 result.assign(11, H_s_partial(qq, 8, 8, 8, 8, 2));
1328 return result;
1329}
1330
1331gslpp::complex AmpDB2::H_partial(quarks qq, int i_start, int i_end, int j_start, int j_end, int n)
1332{
1333 gslpp::complex result = 0.;
1334 for (int i = i_start; i <= i_end; i++)
1335 {
1336 if (i == 7)
1337 i++;
1338 for (int j = j_start; j <= j_end; j++)
1339 {
1340 if (j == 7)
1341 j++;
1342 if (j < i)
1343 continue;
1344 if (n == 0)
1345 {
1346 result += C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p(qq, i, j, 0);
1347 }
1348 else if (n == 1)
1349 {
1350 if (j == 1 or j == 2 or j == 8)
1351 {
1352 result += as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p(qq, i, j, 1) + (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p(qq, i, j, 0);
1353 }
1354 else if (3 <= j and j <= 6)
1355 {
1356 result += as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p(qq, i, j, 1) + (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p(qq, i, j, 0, flag_LOz);
1357 }
1358 }
1359 else if (n == 2)
1360 {
1361 if (j == 1 or j == 2 or j == 8)
1362 {
1363 result += as_4pi_mu1 * as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p(qq, i, j, 2) + as_4pi_mu1 * (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p(qq, i, j, 1, flag_LOz) + (C_Misiak_NNLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_NLO[i - 1] * C_Misiak_NLO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NNLO[j - 1]) * p(qq, i, j, 0, flag_LOz);
1364 }
1365 }
1366 else if (n == 3)
1367 {
1368 result += as_4pi_mu1 * as_4pi_mu1 * as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p(qq, i, j, 3) + as_4pi_mu1 * as_4pi_mu1 * (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p(qq, i, j, 2) + as_4pi_mu1 * (C_Misiak_NNLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_NLO[i - 1] * C_Misiak_NLO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NNLO[j - 1]) * p(qq, i, j, 1) + (C_Misiak_NNLO[i - 1] * C_Misiak_NLO[j - 1] + C_Misiak_NLO[i - 1] * C_Misiak_NNLO[j - 1]) * p(qq, i, j, 0);
1369 }
1370 else
1371 {
1372 throw(std::runtime_error("AmpDB2::H_partial order not implemented"));
1373 }
1374 }
1375 }
1376 return result;
1377}
1378
1379gslpp::complex AmpDB2::H_s_partial(quarks qq, int i_start, int i_end, int j_start, int j_end, int n)
1380{
1381 gslpp::complex result = 0.;
1382 for (int i = i_start; i <= i_end; i++)
1383 {
1384 if (i == 7)
1385 i++;
1386 for (int j = j_start; j <= j_end; j++)
1387 {
1388 if (j == 7)
1389 j++;
1390 if (j < i)
1391 continue;
1392 if (n == 0)
1393 {
1394 result += C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p_s(qq, i, j, 0);
1395 }
1396 else if (n == 1)
1397 {
1398 if (j == 1 or j == 2 or j == 8)
1399 {
1400 result += as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p_s(qq, i, j, 1) + (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p_s(qq, i, j, 0);
1401 }
1402 else if (3 <= j and j <= 6)
1403 {
1404 result += as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p_s(qq, i, j, 1) + (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p_s(qq, i, j, 0, flag_LOz);
1405 }
1406 }
1407 else if (n == 2)
1408 {
1409 if (j == 1 or j == 2 or j == 8)
1410 {
1411 result += as_4pi_mu1 * as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p_s(qq, i, j, 2) + as_4pi_mu1 * (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p_s(qq, i, j, 1, flag_LOz) + (C_Misiak_NNLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_NLO[i - 1] * C_Misiak_NLO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NNLO[j - 1]) * p_s(qq, i, j, 0, flag_LOz);
1412 }
1413 }
1414 else if (n == 3)
1415 {
1416 result += as_4pi_mu1 * as_4pi_mu1 * as_4pi_mu1 * C_Misiak_LO[i - 1] * C_Misiak_LO[j - 1] * p_s(qq, i, j, 3) + as_4pi_mu1 * as_4pi_mu1 * (C_Misiak_NLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NLO[j - 1]) * p_s(qq, i, j, 2) + as_4pi_mu1 * (C_Misiak_NNLO[i - 1] * C_Misiak_LO[j - 1] + C_Misiak_NLO[i - 1] * C_Misiak_NLO[j - 1] + C_Misiak_LO[i - 1] * C_Misiak_NNLO[j - 1]) * p_s(qq, i, j, 1) + (C_Misiak_NNLO[i - 1] * C_Misiak_NLO[j - 1] + C_Misiak_NLO[i - 1] * C_Misiak_NNLO[j - 1]) * p_s(qq, i, j, 0);
1417 }
1418 else
1419 {
1420 throw(std::runtime_error("AmpDB2::H_s_partial order not implemented"));
1421 }
1422 }
1423 }
1424 return result;
1425}
1426
1427double AmpDB2::p(quarks qq, int i, int j, int n, bool flag_LOz)
1428{
1429 if (n < 0 or n >= 768)
1430 throw(std::runtime_error("AmpDB2::p(quarks qq, int i, int j, int n, bool flag_LOz) out of index"));
1431 if (flag_LOz)
1432 {
1433 if (n >= 576)
1434 throw(std::runtime_error("AmpDB2::p(quarks qq, int i, int j, int n, bool flag_LOz) out of index"));
1435 return cache_p_LO[index_p(qq, i, j, n)];
1436 }
1437 return cache_p[index_p(qq, i, j, n)];
1438}
1439double AmpDB2::p_s(quarks qq, int i, int j, int n, bool flag_LOz)
1440{
1441 if (n < 0 or n >= 768)
1442 throw(std::runtime_error("AmpDB2::p_s(quarks qq, int i, int j, int n, bool flag_LOz) out of index"));
1443 if (flag_LOz)
1444 {
1445 if (n >= 576)
1446 throw(std::runtime_error("AmpDB2::p_s(quarks qq, int i, int j, int n, bool flag_LOz) out of index"));
1447 return cache_ps_LO[index_p(qq, i, j, n)];
1448 }
1449 return cache_ps[index_p(qq, i, j, n)];
1450}
1451
1452int AmpDB2::index_p(quarks qq, int i, int j, int n)
1453{
1454 return n * 192 + qq * 64 + (i - 1) * 8 + (j - 1);
1455}
1456
1458{
1459 // input didn't change nothing to compute
1460 // double currentInput_compute_pp_s[4] = {z, mu_1, mu_2, mu_b}; // Removed unused variable
1461 // if (lastInput_compute_pp_s == currentInput_compute_pp_s) return;
1462
1463 double cache_logz = logz;
1464 if (!flag_resumz)
1465 {
1466 throw std::runtime_error("AmpDB2::compute_pp_s(): only implemented for resummed z");
1467 }
1468
1469 // remember value of z after setting it to 0 for calculation of uu coefficients
1470 const double cache_z = z;
1471 const double cache_sqrt1minus4z = sqrt1minus4z;
1472 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 2))
1473 {
1474 // Gerlach thesis eq. (6.6)
1475 cache_p[index_p(qq, 1, 1, 0)] = (23. * sqrt1minus4z) / 72. - (43. * sqrt1minus4z * z) / 36.;
1476 cache_p[index_p(qq, 1, 2, 0)] = sqrt1minus4z / 6. - (5. * sqrt1minus4z * z) / 3.;
1477 cache_p[index_p(qq, 2, 2, 0)] = sqrt1minus4z - sqrt1minus4z * z;
1478 cache_ps[index_p(qq, 1, 1, 0)] = (-5. * sqrt1minus4z) / 9. - (10. * sqrt1minus4z * z) / 9.;
1479 cache_ps[index_p(qq, 1, 2, 0)] = (-4. * sqrt1minus4z) / 3. - (8. * sqrt1minus4z * z) / 3.;
1480 cache_ps[index_p(qq, 2, 2, 0)] = sqrt1minus4z + 2. * sqrt1minus4z * z;
1481
1482 cache_p[index_p(qq, 1, 3, 0)] = 4. / 3.;
1483 cache_p[index_p(qq, 1, 4, 0)] = -5. / 36.;
1484 cache_p[index_p(qq, 1, 5, 0)] = (64. * sqrt1minus4z) / 3. - (160. * sqrt1minus4z * z) / 3.;
1485 cache_p[index_p(qq, 1, 6, 0)] = (-20. * sqrt1minus4z) / 9. - (4. * sqrt1minus4z * z) / 9.;
1486 cache_p[index_p(qq, 2, 3, 0)] = 1.;
1487 cache_p[index_p(qq, 2, 4, 0)] = 5. / 6.;
1488 cache_p[index_p(qq, 2, 5, 0)] = 16. * sqrt1minus4z - 40. * sqrt1minus4z * z;
1489 cache_p[index_p(qq, 2, 6, 0)] = (40. * sqrt1minus4z) / 3. + (8. * sqrt1minus4z * z) / 3.;
1490
1491 cache_ps[index_p(qq, 1, 3, 0)] = -8. / 3.;
1492 cache_ps[index_p(qq, 1, 4, 0)] = -2. / 9.;
1493 cache_ps[index_p(qq, 1, 5, 0)] = -128. / 3.;
1494 cache_ps[index_p(qq, 1, 6, 0)] = -32. / 9.;
1495 cache_ps[index_p(qq, 2, 3, 0)] = -2.;
1496 cache_ps[index_p(qq, 2, 4, 0)] = 4. / 3.;
1497 cache_ps[index_p(qq, 2, 5, 0)] = -32.;
1498 cache_ps[index_p(qq, 2, 6, 0)] = 64. / 3.;
1499
1500 // Gerlach thesis eq. (6.9)
1501 z = 0.;
1502 sqrt1minus4z = 1.;
1503 }
1504 z = cache_z;
1505 sqrt1minus4z = cache_sqrt1minus4z;
1506
1507 // Gerlach thesis eq. (6.8)
1508 double n_l = 3.;
1509 double n_v = 1.;
1510 cache_p[index_p(cc, 3, 3, 0)] = 3. * (n_l + n_v) + 2.;
1511 cache_p[index_p(cc, 3, 4, 0)] = 7. / 3.;
1512 cache_p[index_p(cc, 3, 5, 0)] = 60. * (n_l + n_v) + 64.;
1513 cache_p[index_p(cc, 3, 6, 0)] = 112. / 3.;
1514 cache_p[index_p(cc, 4, 4, 0)] = 5. * (n_l + n_v) / 12. + 13. / 72.;
1515 cache_p[index_p(cc, 4, 5, 0)] = 112. / 3.;
1516 cache_p[index_p(cc, 4, 6, 0)] = 25. / 3. * (n_l + n_v) + 52. / 9.;
1517 cache_p[index_p(cc, 5, 5, 0)] = 512. + 408. * n_l + 408. * n_v * sqrt1minus4z - 480. * n_v * sqrt1minus4z * z;
1518 cache_p[index_p(cc, 5, 6, 0)] = 1792. / 3.;
1519 cache_p[index_p(cc, 6, 6, 0)] = 416. / 9. + (170. * n_l) / 3. + (170. * n_v * sqrt1minus4z) / 3. + (124. * n_v * sqrt1minus4z * z) / 3.;
1520
1521 cache_ps[index_p(cc, 3, 3, 0)] = -6. * (n_l + n_v) - 1.;
1522 cache_ps[index_p(cc, 3, 4, 0)] = -8. / 3.;
1523 cache_ps[index_p(cc, 3, 5, 0)] = -120. * (n_l + n_v) - 32.;
1524 cache_ps[index_p(cc, 3, 6, 0)] = -128. / 3.;
1525 cache_ps[index_p(cc, 4, 4, 0)] = 2. / 3. * (n_l + n_v) - 7. / 9.;
1526 cache_ps[index_p(cc, 4, 5, 0)] = -128. / 3.;
1527 cache_ps[index_p(cc, 4, 6, 0)] = 40. / 3. * (n_l + n_v) - 224. / 9.;
1528 cache_ps[index_p(cc, 5, 5, 0)] = -816. * (n_l + n_v) - 256.;
1529 cache_ps[index_p(cc, 5, 6, 0)] = -2048. / 3.;
1530 cache_ps[index_p(cc, 6, 6, 0)] = 272. / 3. * (n_l + n_v) - 1792. / 9.;
1531
1532 // Gerlach thesis eq. (6.9)
1533 for (int i = 3; i <= 6; i++)
1534 {
1535 for (int j = i; j <= 6; j++)
1536 {
1537 cache_p[index_p(uu, i, j, 0)] = cache_p[index_p(cc, i, j, 0)];
1538 cache_ps[index_p(uu, i, j, 0)] = cache_ps[index_p(cc, i, j, 0)];
1539 }
1540 }
1541
1542 // Gerlach thesis eq. (6.10)
1543 for (int i = 1; i <= 6; i++)
1544 {
1545 for (int j = i; j <= 6; j++)
1546 {
1547 cache_p[index_p(cu, i, j, 0)] =
1548 0.5 * (cache_p[index_p(cc, i, j, 0)] + cache_p[index_p(uu, i, j, 0)]);
1549 cache_ps[index_p(cu, i, j, 0)] =
1550 0.5 * (cache_ps[index_p(cc, i, j, 0)] + cache_ps[index_p(uu, i, j, 0)]);
1551 }
1552 }
1553 double L_1 = 2. * log(mu_1 / Mb);
1554 double L_2 = 2. * log(mu_2 / Mb);
1555 double log_some_z = log((2 * sqrt1minus4z) / (1 + sqrt1minus4z));
1556
1557 cache_p[index_p(cc, 1, 1, 1)] = (169. * Dilogsigma) / 27. + (92. * Dilogsigma2) / 27. + (92. * log2sigma) / 27. - (191. * logsigma) / 54. +
1558 (46. * log1minus4z * logsigma) / 27. + (169. * logsigma * log_some_z) / 54. - (92. * logsigma * logz) / 27. +
1559 (1211. * sqrt1minus4z) / 324. + (19. * L_1 * sqrt1minus4z) / 18. + (149. * L_2 * sqrt1minus4z) / 108. -
1560 (8. * log1minus4z * sqrt1minus4z) / 3. + (43. * logz * sqrt1minus4z) / 12. - (5. * logsigma) / (216. * z) +
1561 (5. * logz * sqrt1minus4z) / (216. * z) - (340. * Dilogsigma * z) / 9. - 19. * Dilogsigma2 * z -
1562 19. * log2sigma * z + (371. * logsigma * z) / 27. - (19. * log1minus4z * logsigma * z) / 2. -
1563 (170. * logsigma * log_some_z * z) / 9. + 19. * logsigma * logz * z - (6917. * sqrt1minus4z * z) / 324. -
1564 (23. * L_1 * sqrt1minus4z * z) / 9. - (49. * L_2 * sqrt1minus4z * z) / 54. +
1565 (128. * log1minus4z * sqrt1minus4z * z) / 9. - (1951. * logz * sqrt1minus4z * z) / 108. +
1566 (1364. * Dilogsigma * z2) / 27. + (682. * Dilogsigma2 * z2) / 27. + (682. * log2sigma * z2) / 27. -
1567 (263. * logsigma * z2) / 54. + (341. * log1minus4z * logsigma * z2) / 27. +
1568 (682. * logsigma * log_some_z * z2) / 27. - (682. * logsigma * logz * z2) / 27. -
1569 (295. * sqrt1minus4z * z2) / 54. + (295. * logsigma * z3) / 27. - (5. * (M_PI2)) / 108. + (z * (M_PI2)) / 54.;
1570 cache_p[index_p(cc, 1, 2, 1)] = (92. * Dilogsigma) / 9. + (16. * Dilogsigma2) / 9. + (16. * log2sigma) / 9. - (275. * logsigma) / 36. +
1571 (8. * log1minus4z * logsigma) / 9. + (46. * logsigma * log_some_z) / 9. - (16. * logsigma * logz) / 9. -
1572 (476. * sqrt1minus4z) / 27. - (37. * L_1 * sqrt1minus4z) / 6. + (19. * L_2 * sqrt1minus4z) / 9. +
1573 (27. * logz * sqrt1minus4z) / 4. + (4. * logsigma) / (9. * z) - (4. * logz * sqrt1minus4z) / (9. * z) -
1574 (176. * Dilogsigma * z) / 3. - 28. * Dilogsigma2 * z - 28. * log2sigma * z + (815. * logsigma * z) / 18. -
1575 14. * log1minus4z * logsigma * z - (88. * logsigma * log_some_z * z) / 3. + 28. * logsigma * logz * z +
1576 (917. * sqrt1minus4z * z) / 27. + (41. * L_1 * sqrt1minus4z * z) / 3. + (2. * L_2 * sqrt1minus4z * z) / 9. +
1577 (64. * log1minus4z * sqrt1minus4z * z) / 3. - (392. * logz * sqrt1minus4z * z) / 9. + (688. * Dilogsigma * z2) / 9. +
1578 (344. * Dilogsigma2 * z2) / 9. + (344. * log2sigma * z2) / 9. - (269. * logsigma * z2) / 9. +
1579 (172. * log1minus4z * logsigma * z2) / 9. + (344. * logsigma * log_some_z * z2) / 9. - (344. * logsigma * logz * z2) / 9. -
1580 (91. * sqrt1minus4z * z2) / 9. + (182. * logsigma * z3) / 9. + (5. * (M_PI2)) / 9. - (2. * z * (M_PI2)) / 9.;
1581 cache_p[index_p(cc, 2, 2, 1)] = (4. * Dilogsigma) / 3. + (32. * Dilogsigma2) / 3. + (32. * log2sigma) / 3. - (41. * logsigma) / 6. +
1582 (16. * log1minus4z * logsigma) / 3. + (2. * logsigma * log_some_z) / 3. - (32. * logsigma * logz) / 3. +
1583 (103. * sqrt1minus4z) / 18. - L_1 * sqrt1minus4z + (2. * L_2 * sqrt1minus4z) / 3. -
1584 12. * log1minus4z * sqrt1minus4z + (21. * logz * sqrt1minus4z) / 2. - (11. * logsigma) / (6. * z) +
1585 (11. * logz * sqrt1minus4z) / (6. * z) - 16. * Dilogsigma * z - 12. * Dilogsigma2 * z - 12. * log2sigma * z +
1586 (77. * logsigma * z) / 3. - 6. * log1minus4z * logsigma * z - 8. * logsigma * log_some_z * z + 12. * logsigma * logz * z +
1587 (34. * sqrt1minus4z * z) / 9. + 10. * L_1 * sqrt1minus4z * z - (14. * L_2 * sqrt1minus4z * z) / 3. +
1588 8. * log1minus4z * sqrt1minus4z * z - (73. * logz * sqrt1minus4z * z) / 3. + (80. * Dilogsigma * z2) / 3. +
1589 (40. * Dilogsigma2 * z2) / 3. + (40. * log2sigma * z2) / 3. - (16. * logsigma * z2) / 3. +
1590 (20. * log1minus4z * logsigma * z2) / 3. + (40. * logsigma * log_some_z * z2) / 3. - (40. * logsigma * logz * z2) / 3. +
1591 (16. * sqrt1minus4z * z2) / 3. - (32. * logsigma * z3) / 3. - (5. * (M_PI2)) / 3. + (2. * z * (M_PI2)) / 3.;
1592 cache_ps[index_p(cc, 1, 1, 1)] = (-344. * Dilogsigma) / 27. - (160. * Dilogsigma2) / 27. - (160. * log2sigma) / 27. + (320. * logsigma) / 27. -
1593 (80. * log1minus4z * logsigma) / 27. - (172. * logsigma * log_some_z) / 27. + (160. * logsigma * logz) / 27. -
1594 (10. * sqrt1minus4z) / 81. - (4. * L_1 * sqrt1minus4z) / 9. - (40. * L_2 * sqrt1minus4z) / 27. +
1595 (80. * log1minus4z * sqrt1minus4z) / 9. - 12. * logz * sqrt1minus4z + (2. * logsigma) / (27. * z) -
1596 (2. * logz * sqrt1minus4z) / (27. * z) + (8. * Dilogsigma2 * z) / 9. + (8. * log2sigma * z) / 9. -
1597 (214. * logsigma * z) / 27. + (4. * log1minus4z * logsigma * z) / 9. - (8. * logsigma * logz * z) / 9. -
1598 (1511. * sqrt1minus4z * z) / 81. - (8. * L_1 * sqrt1minus4z * z) / 9. - (80. * L_2 * sqrt1minus4z * z) / 27. +
1599 (160. * log1minus4z * sqrt1minus4z * z) / 9. - (610. * logz * sqrt1minus4z * z) / 27. +
1600 (1376. * Dilogsigma * z2) / 27. + (688. * Dilogsigma2 * z2) / 27. + (688. * log2sigma * z2) / 27. -
1601 (460. * logsigma * z2) / 27. + (344. * log1minus4z * logsigma * z2) / 27. + (688. * logsigma * log_some_z * z2) / 27. -
1602 (688. * logsigma * logz * z2) / 27. - (590. * sqrt1minus4z * z2) / 27. + (1180. * logsigma * z3) / 27. -
1603 (2. * (M_PI2)) / 27. - (4. * z * (M_PI2)) / 27.;
1604 cache_ps[index_p(cc, 1, 2, 1)] = (-160. * Dilogsigma) / 9. - (128. * Dilogsigma2) / 9. - (128. * log2sigma) / 9. + (238. * logsigma) / 9. -
1605 (64. * log1minus4z * logsigma) / 9. - (80. * logsigma * log_some_z) / 9. + (128. * logsigma * logz) / 9. +
1606 (100. * sqrt1minus4z) / 27. + (4. * L_1 * sqrt1minus4z) / 3. - (32. * L_2 * sqrt1minus4z) / 9. +
1607 (64. * log1minus4z * sqrt1minus4z) / 3. - 26. * logz * sqrt1minus4z - (2. * logsigma) / (9. * z) +
1608 (2. * logz * sqrt1minus4z) / (9. * z) - (32. * Dilogsigma2 * z) / 3. - (32. * log2sigma * z) / 3. +
1609 (16. * logsigma * z) / 9. - (16. * log1minus4z * logsigma * z) / 3. + (32. * logsigma * logz * z) / 3. -
1610 (442. * sqrt1minus4z * z) / 27. + (8. * L_1 * sqrt1minus4z * z) / 3. - (64. * L_2 * sqrt1minus4z * z) / 9. +
1611 (128. * log1minus4z * sqrt1minus4z * z) / 3. - (560. * logz * sqrt1minus4z * z) / 9. + (640. * Dilogsigma * z2) / 9. +
1612 (320. * Dilogsigma2 * z2) / 9. + (320. * log2sigma * z2) / 9. - (728. * logsigma * z2) / 9. +
1613 (160. * log1minus4z * logsigma * z2) / 9. + (320. * logsigma * log_some_z * z2) / 9. - (320. * logsigma * logz * z2) / 9. -
1614 (364. * sqrt1minus4z * z2) / 9. + (728. * logsigma * z3) / 9. + (8. * (M_PI2)) / 9. + (16. * z * (M_PI2)) / 9.;
1615 cache_ps[index_p(cc, 2, 2, 1)] = (-32. * Dilogsigma) / 3. + (32. * Dilogsigma2) / 3. + (32. * log2sigma) / 3. - (28. * logsigma) / 3. +
1616 (16. * log1minus4z * logsigma) / 3. - (16. * logsigma * log_some_z) / 3. - (32. * logsigma * logz) / 3. +
1617 (272. * sqrt1minus4z) / 9. + 8. * L_1 * sqrt1minus4z + (8. * L_2 * sqrt1minus4z) / 3. -
1618 16. * log1minus4z * sqrt1minus4z + 12. * logz * sqrt1minus4z - (4. * logsigma) / (3. * z) +
1619 (4. * logz * sqrt1minus4z) / (3. * z) + 32. * Dilogsigma2 * z + 32. * log2sigma * z - (40. * logsigma * z) / 3. +
1620 16. * log1minus4z * logsigma * z - 32. * logsigma * logz * z + (664. * sqrt1minus4z * z) / 9. +
1621 16. * L_1 * sqrt1minus4z * z + (16. * L_2 * sqrt1minus4z * z) / 3. - 32. * log1minus4z * sqrt1minus4z * z +
1622 (104. * logz * sqrt1minus4z * z) / 3. + (128. * Dilogsigma * z2) / 3. + (64. * Dilogsigma2 * z2) / 3. +
1623 (64. * log2sigma * z2) / 3. + (272. * logsigma * z2) / 3. + (32. * log1minus4z * logsigma * z2) / 3. +
1624 (64. * logsigma * log_some_z * z2) / 3. - (64. * logsigma * logz * z2) / 3. + (64. * sqrt1minus4z * z2) / 3. -
1625 (128. * logsigma * z3) / 3. - (8. * (M_PI2)) / 3. - (16. * z * (M_PI2)) / 3.;
1626
1627 cache_p[index_p(uu, 1, 1, 1)] = 299. / 81. + (19. * L_1) / 18. + (149. * L_2) / 108. - (5. * (M_PI2)) / 108.;
1628 cache_p[index_p(uu, 1, 2, 1)] = -452. / 27. - (37. * L_1) / 6. + (19. * L_2) / 9. + (5. * (M_PI2)) / 9.;
1629 cache_p[index_p(uu, 2, 2, 1)] = 37. / 18. - L_1 + (2. * L_2) / 3. - (5. * (M_PI2)) / 3.;
1630 cache_ps[index_p(uu, 1, 1, 1)] = 2. / 81. - (4. * L_1) / 9. - (40. * L_2) / 27. - (2. * (M_PI2)) / 27.;
1631 cache_ps[index_p(uu, 1, 2, 1)] = 88. / 27. + (4. * L_1) / 3. - (32. * L_2) / 9. + (8. * (M_PI2)) / 9.;
1632 cache_ps[index_p(uu, 2, 2, 1)] = 248. / 9. + 8. * L_1 + (8. * L_2) / 3. - (8. * (M_PI2)) / 3.;
1633
1634 // pengFlag terms from P12-36 here in full z dependence
1635 cache_p[index_p(cc, 1, 1, 1)] += (-5. * logsigma) / 324. - (5. * sqrt1minus4z) / 486. -
1636 (5. * L_1 * sqrt1minus4z) / 324. + (5. * logz * sqrt1minus4z) / 324. -
1637 (20. * sqrt1minus4z * z) / 243. - (5. * L_1 * sqrt1minus4z * z) / 162. +
1638 (5. * logz * sqrt1minus4z * z) / 162. + (5. * logsigma * z2) / 27. -
1639 (10. * sqrt1minus4z * z2) / 81. + (20. * logsigma * z3) / 81.;
1640 cache_p[index_p(cc, 1, 2, 1)] += (5. * logsigma) / 27. + (10. * sqrt1minus4z) / 81. + (5. * L_1 * sqrt1minus4z) / 27. -
1641 (5. * logz * sqrt1minus4z) / 27. + (80. * sqrt1minus4z * z) / 81. +
1642 (10. * L_1 * sqrt1minus4z * z) / 27. - (10. * logz * sqrt1minus4z * z) / 27. -
1643 (20. * logsigma * z2) / 9. + (40. * sqrt1minus4z * z2) / 27. -
1644 (80. * logsigma * z3) / 27.;
1645 cache_p[index_p(cc, 2, 2, 1)] += (-5. * logsigma) / 9. - (10. * sqrt1minus4z) / 27. - (5. * L_1 * sqrt1minus4z) / 9. +
1646 (5. * logz * sqrt1minus4z) / 9. - (80. * sqrt1minus4z * z) / 27. -
1647 (10. * L_1 * sqrt1minus4z * z) / 9. + (10. * logz * sqrt1minus4z * z) / 9. +
1648 (20. * logsigma * z2) / 3. - (40. * sqrt1minus4z * z2) / 9. + (80. * logsigma * z3) / 9.;
1649 cache_ps[index_p(cc, 1, 1, 1)] += (-2. * logsigma) / 81. - (4. * sqrt1minus4z) / 243. -
1650 (2. * L_1 * sqrt1minus4z) / 81. + (2. * logz * sqrt1minus4z) / 81. -
1651 (32. * sqrt1minus4z * z) / 243. - (4. * L_1 * sqrt1minus4z * z) / 81. +
1652 (4. * logz * sqrt1minus4z * z) / 81. + (8. * logsigma * z2) / 27. -
1653 (16. * sqrt1minus4z * z2) / 81. + (32. * logsigma * z3) / 81.;
1654 cache_ps[index_p(cc, 1, 2, 1)] += (8. * logsigma) / 27. + (16. * sqrt1minus4z) / 81. + (8. * L_1 * sqrt1minus4z) / 27. -
1655 (8. * logz * sqrt1minus4z) / 27. + (128. * sqrt1minus4z * z) / 81. +
1656 (16. * L_1 * sqrt1minus4z * z) / 27. - (16. * logz * sqrt1minus4z * z) / 27. -
1657 (32. * logsigma * z2) / 9. + (64. * sqrt1minus4z * z2) / 27. -
1658 (128. * logsigma * z3) / 27.;
1659 cache_ps[index_p(cc, 2, 2, 1)] += (-8. * logsigma) / 9. - (16. * sqrt1minus4z) / 27. - (8. * L_1 * sqrt1minus4z) / 9. +
1660 (8. * logz * sqrt1minus4z) / 9. - (128. * sqrt1minus4z * z) / 27. -
1661 (16. * L_1 * sqrt1minus4z * z) / 9. + (16. * logz * sqrt1minus4z * z) / 9. +
1662 (32. * logsigma * z2) / 3. - (64. * sqrt1minus4z * z2) / 9. + (128. * logsigma * z3) / 9.;
1663
1664 cache_p[index_p(uu, 1, 1, 1)] += -5. / 486. - (5. * L_1) / 324.;
1665 cache_p[index_p(uu, 1, 2, 1)] += 10. / 81. + (5. * L_1) / 27.;
1666 cache_p[index_p(uu, 2, 2, 1)] += -10. / 27. - (5. * L_1) / 9.;
1667 cache_ps[index_p(uu, 1, 1, 1)] += -4. / 243. - (2. * L_1) / 81.;
1668 cache_ps[index_p(uu, 1, 2, 1)] += 16. / 81. + (8. * L_1) / 27.;
1669 cache_ps[index_p(uu, 2, 2, 1)] += -16. / 27. - (8. * L_1) / 9.;
1670
1671 // Corrections from LO coefficients when resummation logz
1672 double z_replace = -6. * 4. / 3. * logz * z;
1673 cache_p[index_p(cc, 1, 1, 1)] += (-11. / 6. + 43. / 6. * z) / sqrt1minus4z * z_replace;
1674 cache_p[index_p(cc, 1, 2, 1)] += (-2. + 10. * z) / sqrt1minus4z * z_replace;
1675 cache_p[index_p(cc, 2, 2, 1)] += (-3. + 6. * z) / sqrt1minus4z * z_replace;
1676 cache_ps[index_p(cc, 1, 1, 1)] += (20. / 3. * z) / sqrt1minus4z * z_replace;
1677 cache_ps[index_p(cc, 1, 2, 1)] += (16. * z) / sqrt1minus4z * z_replace;
1678 cache_ps[index_p(cc, 2, 2, 1)] += (-12. * z) / sqrt1minus4z * z_replace;
1679
1680 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 2))
1681 {
1682 // equation (6.14)
1683 cache_p[index_p(qq, 1, 3, 1)] = (320. / 9. - 4. * L_1) * z + 47. / 18. * L_1 + 56. / 9. * L_2 - 5. / (18. * sqrt3) * M_PI + 1523. / 108.;
1684 cache_p[index_p(qq, 1, 4, 1)] = (59. / 3. * L_1 + 5. / 9. * M_PI2 + 4565. / 108.) * z - 281. / 108. * L_1 + L_2 / 54. + 5. / 18. * M_PI2 - 25. / (108. * sqrt3) * M_PI - 712. / 81.;
1685 cache_p[index_p(qq, 1, 5, 1)] = z * (-136. * L_1 - 192. * L_2 - 768. * logz - 16408. / 9.) + 376. / 9. * L_1 + 896. / 9. * L_2 - 40. / (9. * sqrt3) * M_PI + 318.;
1686 cache_p[index_p(qq, 1, 6, 1)] = z * (764. / 3. * L_1 + 8. * L_2 + 32. * logz + 8. / 9. * M_PI2 + 22850. / 27.) - 1259. / 27. * L_1 + 8. / 27. * L_2 + 40. / 9. * M_PI2 - 55. / (27. * sqrt3) * M_PI - 4243. / 27.;
1687 cache_p[index_p(qq, 2, 3, 1)] = (24. * L_1 + 170. / 3.) * z - 47. / 3. * L_1 + 14. / 3. * L_2 + 5. / (3. * sqrt3) * M_PI - 677. / 18.;
1688 cache_p[index_p(qq, 2, 4, 1)] = (26. * L_1 - 10. / 3. * M_PI2 + 1429. / 18.) * z - 35. / 9. * L_1 - L_2 / 9. - 5. / 3. * M_PI2 + 25. / (18. * sqrt3) * M_PI - 88. / 27.;
1689 cache_p[index_p(qq, 2, 5, 1)] = z * (816. * L_1 - 144. * L_2 - 576. * logz + 3656. / 3.) - 752. / 3. * L_1 + 224. / 3. * L_2 + 80. / (3. * sqrt3) * M_PI - 580.;
1690 cache_p[index_p(qq, 2, 6, 1)] = z * (128. * L_1 - 48. * L_2 - 192. * logz - 16. / 3. * M_PI2 + 6140. / 9.) - 290. / 9. * L_1 - 16. / 9. * L_2 - 80. / 3. * M_PI2 + 110. / (9. * sqrt3) * M_PI - 442. / 9.;
1691
1692 cache_ps[index_p(qq, 1, 3, 1)] = -4. / 3. * L_1 - 64. / 9. * L_2 - 1720. / 9. * z - 4. / (9. * sqrt3) * M_PI - 130. / 27.;
1693 cache_ps[index_p(qq, 1, 4, 1)] = 2. * L_1 - 16. / 27. * L_2 + (80. / 27. + 8. / 9. * M_PI2) * z + 4. / 9. * M_PI2 - 10. / (27. * sqrt3) * M_PI + 404. / 81.;
1694 cache_ps[index_p(qq, 1, 5, 1)] = -64. / 3. * L_1 - 1024. / 9. * L_2 - 27952. / 9. * z - 64. / (9. * sqrt3) * M_PI - 2128. / 9.;
1695 cache_ps[index_p(qq, 1, 6, 1)] = 24. * L_1 - 256. / 27. * L_2 + (128. / 9. * M_PI2 - 520. / 27.) * z - 64. / 9. * M_PI2 - 88. / (27. * sqrt3) * M_PI + 2824. / 27.;
1696 cache_ps[index_p(qq, 2, 3, 1)] = 8. * L_1 - 16. / 3. * L_2 - 448. / 3. * z + 8. / (3. * sqrt3) * M_PI + 116. / 9.;
1697 cache_ps[index_p(qq, 2, 4, 1)] = 32. / 9. * L_2 + (488. / 9. - 16. / 3. * M_PI2) * z - 8. / 3. * M_PI2 + 20. / (9. * sqrt3) * M_PI + 272. / 27.;
1698 cache_ps[index_p(qq, 2, 5, 1)] = 128. * L_1 - 256. / 3. * L_2 - 6304. / 3. * z + 128. / (3. * sqrt3) * M_PI + 32. / 3.;
1699 cache_ps[index_p(qq, 2, 6, 1)] = 48. * L_1 + 512. / 9. * L_2 + (7520. / 9. - 256. / 3. * M_PI2) * z - 128. / 3. * M_PI2 + 176. / (9. * sqrt3) * M_PI + 1840. / 9.;
1700
1701 // Gerlach thesis eq. (6.13) and (6.15)
1702 z = 0.;
1703 }
1704 z = cache_z;
1705 // Gerlach thesis eq. (6.15)
1706 cache_p[index_p(uu, 1, 4, 1)] += 5. / 9. * z;
1707 cache_p[index_p(uu, 1, 6, 1)] += 50. / 9. * z;
1708 cache_p[index_p(uu, 2, 4, 1)] += -10. / 3. * z;
1709 cache_p[index_p(uu, 2, 6, 1)] += -100. / 3. * z;
1710
1711 cache_ps[index_p(uu, 1, 4, 1)] += 8. / 9. * z;
1712 cache_ps[index_p(uu, 1, 6, 1)] += 80. / 9. * z;
1713 cache_ps[index_p(uu, 2, 4, 1)] += -16. / 3. * z;
1714 cache_ps[index_p(uu, 2, 6, 1)] += -160. / 3. * z;
1715
1716 // Corrections from LO coefficients when resummation logz
1717 cache_p[index_p(cc, 1, 5, 1)] += -96. * z_replace;
1718 cache_p[index_p(cc, 1, 6, 1)] += 4. * z_replace;
1719 cache_p[index_p(cc, 2, 5, 1)] += -72. * z_replace;
1720 cache_p[index_p(cc, 2, 6, 1)] += -24. * z_replace;
1721
1722 // Gerlach thesis eq. (6.13) and (6.16)
1723 for (int i = 1; i <= 2; i++)
1724 {
1725 for (int j = i; j <= 6; j++)
1726 {
1727 cache_p[index_p(cu, i, j, 1)] =
1728 0.5 * (cache_p[index_p(cc, i, j, 1)] + cache_p[index_p(uu, i, j, 1)]);
1729 cache_ps[index_p(cu, i, j, 1)] =
1730 0.5 * (cache_ps[index_p(cc, i, j, 1)] + cache_ps[index_p(uu, i, j, 1)]);
1731 }
1732 }
1733
1734 cache_p[index_p(cu, 1, 1, 1)] = (15. * log1minusz + 2407. * z + 894. * L_2 * z - 1065. * log1minusz * z + 1014. * log1minusz * logz * z - 1539. * log1minusz * z4 * z +
1735 1539. * logz * z4 * z - 36. * L_1 * oneminusz2 * z * (-19. + 4. * z) - 9255. * z2 - 1188. * L_2 * z2 + 5679. * log1minusz * z2 - 3738. * logz * z2 -
1736 2970. * log1minusz * logz * z2 + 10008. * z3 - 306. * L_2 * z3 - 9762. * log1minusz * z3 + 7794. * logz * z3 + 3060. * log1minusz * logz * z3 -
1737 12. * Dilogz * z * (-169. + 495. * z - 510. * z2 + 184. * z3) - 3160. * z4 + 600. * L_2 * z4 + 6672. * log1minusz * z4 - 6876. * logz * z4 -
1738 1104. * log1minusz * logz * z4 - 30. * z * (M_PI2) + 6. * z2 * (M_PI2) + 24. * z3 * (M_PI2)) /
1739 (648. * z);
1740 cache_p[index_p(cu, 1, 2, 1)] = -1. / 108. * (48. * log1minusz + 1856. * z - 228. * L_2 * z - 627. * log1minusz * z - 276. * log1minusz * logz * z + 378. * log1minusz * z4 * z - 378. * logz * z4 * z - 18. * L_1 * oneminusz2 * z * (-37. + 4. * z) - 3588. * z2 + 216. * L_2 * z2 + 72. * log1minusz * z2 + 588. * logz * z2 + 972. * log1minusz * logz * z2 + 1143. * z3 + 252. * L_2 * z3 + 1923. * log1minusz * z3 - 2421. * logz * z3 - 792. * log1minusz * logz * z3 + 24. * Dilogz * z * (-23. + 81. * z - 66. * z2 + 8. * z3) + 589. * z4 - 240. * L_2 * z4 - 1794. * log1minusz * z4 + 1746. * logz * z4 + 96. * log1minusz * logz * z4 - 60. * z * (M_PI2) + 12. * z2 * (M_PI2) + 48. * z3 * (M_PI2)) / z;
1741 cache_p[index_p(cu, 2, 2, 1)] = (70. + 12. * L_2 - 210. * log1minusz + 6. * log1minusz * logz + (33. * log1minusz) / z - 3. * z - 54. * L_2 * z + 225. * log1minusz * z - 210. * logz * z +
1742 54. * log1minusz * logz * z + 18. * L_1 * oneminusz2 * (-1. + 4. * z) - 360. * z2 + 72. * L_2 * z2 + 21. * log1minusz * z2 + 153. * logz * z2 +
1743 36. * log1minusz * logz * z2 + 293. * z3 - 30. * L_2 * z3 - 42. * log1minusz * z3 - 126. * logz * z3 - 96. * log1minusz * logz * z3 -
1744 12. * Dilogz * (-1. - 9. * z - 6. * z2 + 16. * z3) - 27. * log1minusz * z4 + 27. * logz * z4 - 30. * (M_PI2) + 6. * z * (M_PI2) + 24. * z2 * (M_PI2)) /
1745 18.;
1746 cache_ps[index_p(cu, 1, 1, 1)] = -1. / 162. * (12. * log1minusz + 8. * z + 240. * L_2 * z - 978. * log1minusz * z + 516. * log1minusz * logz * z + 774. * log1minusz * z4 * z - 774. * logz * z4 * z + 72. * L_1 * oneminusz2 * z * (1. + 2. * z) + 1461. * z2 - 1674. * log1minusz * z2 + 516. * logz * z2 - 36. * log1minusz * logz * z2 - 3654. * z3 - 720. * L_2 * z3 + 7008. * log1minusz * z3 - 5796. * logz * z3 - 1584. * log1minusz * logz * z3 + 24. * Dilogz * z * (43. - 3. * z - 132. * z2 + 92. * z3) + 2185. * z4 + 480. * L_2 * z4 - 5142. * log1minusz * z4 + 5346. * logz * z4 + 1104. * log1minusz * logz * z4 + 12. * z * (M_PI2) + 12. * z2 * (M_PI2)-24. * z3 * (M_PI2)) / z;
1747 cache_ps[index_p(cu, 1, 2, 1)] = (6. * log1minusz + 94. * z - 96. * L_2 * z + 402. * log1minusz * z - 120. * log1minusz * logz * z - 180. * log1minusz * z4 * z +
1748 180. * logz * z4 * z + 36. * L_1 * oneminusz2 * z * (1. + 2. * z) - 363. * z2 + 216. * log1minusz * z2 - 120. * logz * z2 -
1749 72. * log1minusz * logz * z2 + 792. * z3 + 288. * L_2 * z3 - 1842. * log1minusz * z3 + 1638. * logz * z3 +
1750 288. * log1minusz * logz * z3 - 48. * Dilogz * z * (5. + 3. * z - 12. * z2 + 4. * z3) - 523. * z4 - 192. * L_2 * z4 +
1751 1398. * log1minusz * z4 - 1350. * logz * z4 - 96. * log1minusz * logz * z4 + 24. * z * (M_PI2) + 24. * z2 * (M_PI2)-48. * z3 * (M_PI2)) /
1752 (27. * z);
1753 cache_ps[index_p(cu, 2, 2, 1)] = (4. * (12. * oneminusz2 * (1. + 2. * z) + 18. * L_1 * oneminusz2 * (1. + 2. * z) - 12. * L_2 * oneminusz2 * (1. + 2. * z) +
1754 18. * (1. + L_2) * oneminusz2 * (1. + 2. * z) - 6. * (2. * Dilogz + log1minusz * logz) * (-1. + z) * (1. + 2. * z) * (-1. + 4. * z) - (3. * log1minusz * oneminusz2 * (1. + z) * (-1. + 13. * z + 3. * z2)) / z +
1755 7. * (-1. + z) * (-5. - 8. * z + 19. * z2) + 3. * logz * z * (-2. + 3. * z - 18. * z2 + 3. * z3) +
1756 6. * (-1. + z) * (1. + 2. * z) * (M_PI2))) /
1757 9.;
1758
1759 // pengFlag terms from P12-36 here in full z dependence
1760 cache_p[index_p(cu, 1, 1, 1)] += (5. * (-2. - 3. * L_1 + 3. * logz - 12. * z - 2. * sqrt1minus4z * (1. + 2. * z) -
1761 3. * L_1 * sqrt1minus4z * (1. + 2. * z) - 3. * logsigma * sqrt1minus4z * (1. + 2. * z))) /
1762 1944.;
1763 cache_p[index_p(cu, 1, 2, 1)] += (5. * (2. + 3. * L_1 - 3. * logz + 12. * z + 2. * sqrt1minus4z * (1. + 2. * z) +
1764 3. * L_1 * sqrt1minus4z * (1. + 2. * z) + 3. * logsigma * sqrt1minus4z * (1. + 2. * z))) /
1765 162.;
1766 cache_p[index_p(cu, 2, 2, 1)] += (5. * (-2. - 3. * L_1 + 3. * logz - 12. * z - 2. * sqrt1minus4z * (1. + 2. * z) -
1767 3. * L_1 * sqrt1minus4z * (1. + 2. * z) - 3. * logsigma * sqrt1minus4z * (1. + 2. * z))) /
1768 54.;
1769 cache_ps[index_p(cu, 1, 1, 1)] += (-2. - 3. * L_1 + 3. * logz - 12. * z - 2. * sqrt1minus4z * (1. + 2. * z) -
1770 3. * L_1 * sqrt1minus4z * (1. + 2. * z) - 3. * logsigma * sqrt1minus4z * (1. + 2. * z)) /
1771 243.;
1772 cache_ps[index_p(cu, 1, 2, 1)] += (4. * (2. + 3. * L_1 - 3. * logz + 12. * z + 2. * sqrt1minus4z * (1. + 2. * z) +
1773 3. * L_1 * sqrt1minus4z * (1. + 2. * z) + 3. * logsigma * sqrt1minus4z * (1. + 2. * z))) /
1774 81.;
1775 cache_ps[index_p(cu, 2, 2, 1)] += (4. * (-2. - 3. * L_1 + 3. * logz - 12. * z - 2. * sqrt1minus4z * (1. + 2. * z) -
1776 3. * L_1 * sqrt1minus4z * (1. + 2. * z) - 3. * logsigma * sqrt1minus4z * (1. + 2. * z))) /
1777 27.;
1778
1779 // Corrections from LO coefficients when resummation logz
1780 cache_p[index_p(cu, 1, 1, 1)] += (-11. / 12. + 7. / 4. * z + 5. / 6. * z2) * z_replace;
1781 cache_p[index_p(cu, 1, 2, 1)] += (-1. + 3. * z - 2. * z2) * z_replace;
1782 cache_p[index_p(cu, 2, 2, 1)] += (-3. / 2. + 3. / 2. * z2) * z_replace;
1783 cache_ps[index_p(cu, 1, 1, 1)] += (10. / 3. * z - 10. / 3. * z2) * z_replace;
1784 cache_ps[index_p(cu, 1, 2, 1)] += (8. * z - 8. * z2) * z_replace;
1785 cache_ps[index_p(cu, 2, 2, 1)] += (-6. * z + 6. * z2) * z_replace;
1786
1787 // Gerlach thesis eq. (6.18)
1788 cache_p[index_p(cc, 3, 3, 1)] = -154. / 9. * L_1 + 184. / 3. * L_2 + 90. * z - 5. / 3. * M_PI2 + 5. / (3. * sqrt3) * M_PI + 1390. / 27.;
1789 cache_p[index_p(cc, 3, 4, 1)] = -811. / 54. * L_1 + 74. / 9. * L_2 - 10. / 3. * z - 10. / 9. * M_PI2 + 70. / (9. * sqrt3) * M_PI - 27991. / 324.;
1790 cache_p[index_p(cc, 3, 5, 1)] = -4928. / 9. * L_1 + 3872. / 3. * L_2 + 1800. * z - 160. / 3. * M_PI2 + 160. / (3. * sqrt3) * M_PI + 16880. / 27.;
1791 cache_p[index_p(cc, 3, 6, 1)] = (144. * L_1 + 440. / 3.) * z - 12932. / 27. * L_1 + 1184. / 9. * L_2 - 160. / 9. * M_PI2 + 670. / (9. * sqrt3) * M_PI - 131410. / 81.;
1792 cache_p[index_p(cc, 4, 4, 1)] = 181. / 162. * L_1 + 127. / 108. * L_2 + (323. / 36. - 5. / 3. * M_PI2) * z - 335. / 108. * M_PI2 + 575. / (108. * sqrt3) * M_PI + 779. / 486.;
1793 cache_p[index_p(cc, 4, 5, 1)] = (576. * L_1 + 3836. / 3.) * z - 14912. / 27. * L_1 + 1184. / 9. * L_2 - 160. / 9. * M_PI2 + 1120. / (9. * sqrt3) * M_PI - 127990. / 81.;
1794 cache_p[index_p(cc, 4, 6, 1)] = (60. * L_1 - 100. / 3. * M_PI2 + 2455. / 9.) * z - 8759. / 81. * L_1 + 1088. / 27. * L_2 - 1600. / 27. * M_PI2 + 2665. / (27. * sqrt3) * M_PI - 50083. / 243.;
1795 cache_p[index_p(cc, 5, 5, 1)] = z * (-2592. * L_2 - 10368. * logz - 33120.) - 39424. / 9. * L_1 + 26944. / 3. * L_2 - 1280. / 3. * M_PI2 + 1280. / (3. * sqrt3) * M_PI + 347104. / 27.;
1796 cache_p[index_p(cc, 5, 6, 1)] = (7200. * L_1 + 74000. / 3.) * z - 240608. / 27. * L_1 + 18944. / 9. * L_2 - 2560. / 9. * M_PI2 + 10720. / (9. * sqrt3) * M_PI - 2253568. / 81.;
1797 cache_p[index_p(cc, 6, 6, 1)] = z * (-48. * L_1 - 144. * L_2 - 576. * logz - 248. / 3. * M_PI2 + 12290. / 9.) - 59632. / 81. * L_1 + 8848. / 27. * L_2 - 10640. / 27. * M_PI2 + 12320. / (27. * sqrt3) * M_PI - 662144. / 243.;
1798
1799 cache_ps[index_p(cc, 3, 3, 1)] = 176. / 9. * L_1 - 200. / 3. * L_2 - 432. * z - 8. / 3. * M_PI2 + 8. / (3. * sqrt3) * M_PI - 620. / 27.;
1800 cache_ps[index_p(cc, 3, 4, 1)] = 268. / 27. * L_1 - 64. / 9. * L_2 - 16. / 3. * z - 16. / 9. * M_PI2 + 112. / (9. * sqrt3) * M_PI + 3506. / 81.;
1801 cache_ps[index_p(cc, 3, 5, 1)] = 5632. / 9. * L_1 - 4096. / 3. * L_2 - 8640. * z - 256. / 3. * M_PI2 + 256. / (3. * sqrt3) * M_PI + 9728. / 27.;
1802 cache_ps[index_p(cc, 3, 6, 1)] = 9184. / 27. * L_1 - 1024. / 9. * L_2 - 160. / 3. * z - 256. / 9. * M_PI2 + 1072. / (9. * sqrt3) * M_PI + 88688. / 81.;
1803 cache_ps[index_p(cc, 4, 4, 1)] = 1028. / 81. * L_1 + 136. / 27. * L_2 - 8. / 3. * M_PI2 * z + 230. / 9. * z - 134. / 27. * M_PI2 + 230. / (27. * sqrt3) * M_PI + 6214. / 243.;
1804 cache_ps[index_p(cc, 4, 5, 1)] = 9472. / 27. * L_1 - 1024. / 9. * L_2 + 608. / 3. * z - 256. / 9. * M_PI2 + 1792. / (9. * sqrt3) + 64784. / 81.;
1805 cache_ps[index_p(cc, 4, 6, 1)] = 10792. / 81. * L_1 + 2048. / 27. * L_2 - 160. / 3. * M_PI2 * z + 3568. / 9. * z - 2560. / 27. * M_PI2 + 4264. / (27. * sqrt3) * M_PI + 123080. / 243.;
1806 cache_ps[index_p(cc, 5, 5, 1)] = 45056. / 9. * L_1 - 28160. / 3. * L_2 - 58752. * z - 2048. / 3. * M_PI2 - 2048. / (3. * sqrt3) * M_PI - 349184. / 27.;
1807 cache_ps[index_p(cc, 5, 6, 1)] = 167680. / 27. * L_1 - 16384. / 9. * L_2 + 6080. / 3. * z - 4096. / 9. * M_PI2 + 17152. / (9. * sqrt3) * M_PI + 1502720. / 81.;
1808 cache_ps[index_p(cc, 6, 6, 1)] = 75392. / 81. * L_1 + 11776. / 27. * L_2 - 1088. / 3. * M_PI2 * z + 23696. / 9. * z - 17024. / 27. * M_PI2 + 19712. / (27. * sqrt3) * M_PI + 717184. / 243.;
1809
1810 // Corrections from LO coefficients when resummation logz
1811 cache_p[index_p(cc, 5, 5, 1)] += -1296. * n_v * z_replace;
1812 cache_p[index_p(cc, 6, 6, 1)] += -72. * n_v * z_replace;
1813
1814 // Gerlach thesis eq. (6.17)
1815 for (int i = 3; i <= 6; i++)
1816 {
1817 for (int j = i; j <= 6; j++)
1818 {
1819 cache_p[index_p(cu, i, j, 1)] = cache_p[index_p(cc, i, j, 1)];
1820 cache_p[index_p(uu, i, j, 1)] = cache_p[index_p(cc, i, j, 1)];
1821 cache_ps[index_p(cu, i, j, 1)] = cache_ps[index_p(cc, i, j, 1)];
1822 cache_ps[index_p(uu, i, j, 1)] = cache_ps[index_p(cc, i, j, 1)];
1823 }
1824 }
1825
1826 // Gerlach thesis eq. (6.19)
1827 cache_p[index_p(cc, 1, 8, 1)] = 5. / 18. * sqrt1minus4z + 5. / 9. * z * sqrt1minus4z;
1828 cache_p[index_p(cc, 2, 8, 1)] = -5. / 3. * sqrt1minus4z - 10. / 3. * z * sqrt1minus4z;
1829 cache_ps[index_p(cc, 1, 8, 1)] = 4. / 9. * sqrt1minus4z + 8. / 9. * z * sqrt1minus4z;
1830 cache_ps[index_p(cc, 2, 8, 1)] = -8. / 3. * sqrt1minus4z - 16. / 3. * z * sqrt1minus4z;
1831 cache_p[index_p(uu, 1, 8, 1)] = 5. / 18.;
1832 cache_p[index_p(uu, 2, 8, 1)] = -5. / 3.;
1833 cache_ps[index_p(uu, 1, 8, 1)] = 4. / 9.;
1834 cache_ps[index_p(uu, 2, 8, 1)] = -8. / 3.;
1835
1836 // Gerlach thesis eq. (6.27)
1837 for (int i = 1; i <= 2; i++)
1838 {
1839 cache_p[index_p(cu, i, 8, 1)] = 0.5 * (cache_p[index_p(cc, i, 8, 1)] + cache_p[index_p(uu, i, 8, 1)]);
1840 cache_ps[index_p(cu, i, 8, 1)] = 0.5 * (cache_ps[index_p(cc, i, 8, 1)] + cache_ps[index_p(uu, i, 8, 1)]);
1841 }
1842
1843 // Gerlach thesis eq. (6.21)
1844 cache_p[index_p(cc, 3, 8, 1)] = -32. / 3.;
1845 cache_p[index_p(cc, 4, 8, 1)] = (-139. - 30. * sqrt1minus4z - 60. * sqrt1minus4z * z) / 18.;
1846 cache_p[index_p(cc, 5, 8, 1)] = -512. / 3.;
1847 cache_p[index_p(cc, 6, 8, 1)] = (-1684. - 300. * sqrt1minus4z - 600. * sqrt1minus4z * z) / 18.;
1848 cache_ps[index_p(cc, 3, 8, 1)] = 64. / 3.;
1849 cache_ps[index_p(cc, 4, 8, 1)] = (4. * (1. - 6. * sqrt1minus4z - 12. * sqrt1minus4z * z)) / 9.;
1850 cache_ps[index_p(cc, 5, 8, 1)] = 1024. / 3.;
1851 cache_ps[index_p(cc, 6, 8, 1)] = (4 * (124. - 60. * sqrt1minus4z - 120. * sqrt1minus4z * z)) / 9.;
1852
1853 // Gerlach thesis eq. (6.20)
1854 for (int i = 3; i <= 6; i++)
1855 {
1856 cache_p[index_p(cu, i, 8, 1)] = cache_p[index_p(cc, i, 8, 1)];
1857 cache_p[index_p(uu, i, 8, 1)] = cache_p[index_p(cc, i, 8, 1)];
1858 cache_ps[index_p(cu, i, 8, 1)] = cache_ps[index_p(cc, i, 8, 1)];
1859 cache_ps[index_p(uu, i, 8, 1)] = cache_ps[index_p(cc, i, 8, 1)];
1860 }
1861
1862 double L_12 = L_1 * L_1;
1863 double L_22 = L_2 * L_2;
1864
1865 gslpp::complex log1M1OverSqrtz = log(abs(1. - 1. / sqrtz));
1866 if (1. / sqrtz > 1)
1867 log1M1OverSqrtz += M_PI * complex::i();
1868 gslpp::complex logM1OverSqrtz = log(abs(-1. / sqrtz)) + M_PI * complex::i();
1869 gslpp::complex logM1OverSqrtz2 = logM1OverSqrtz * logM1OverSqrtz;
1870
1871 // LO in z
1872 cache_p[index_p(cc, 1, 1, 2)] = (814589597. / 4199040. + (1320817. * L_1) / 17496. + (3211. * L_12) / 324. + (259603. * L_2) / 11664. + (12911. * L_1 * L_2) / 972. - (311. * L_22) / 216. + (56. * Cl2PI3 * sqrt3) / 729. -
1873 ((5. * complex::i()) / 3888.) * log3 * log3 * sqrt3 + (855371. * sqrtz) / 180000. + (22. * log2z * sqrtz) / 9. + (88. * logM1OverSqrtz2 * sqrtz) / 9. + (88. * logM1OverSqrtz * logz * sqrtz) / 9. -
1874 ((5. * -1.) / 486.) * sqrt3 * t_2 - (22. * log2z) / (9. * z) - (88. * logM1OverSqrtz2) / (9. * z) - (88. * logM1OverSqrtz * logz) / (9. * z) + (22. * log2z) / (9. * sqrtz) +
1875 (88. * logM1OverSqrtz2) / (9. * sqrtz) + (88. * logM1OverSqrtz * logz) / (9. * sqrtz) - (3547371902315179. * z) / 3455518320000. - (721919. * L_1 * z) / 1944. - (2347. * L_12 * z) / 54. +
1876 (1891. * L_2 * z) / 81. - (337. * L_1 * L_2 * z) / 9. + (187. * L_22 * z) / 18. - (88. * logM1OverSqrtz2 * z) / 9. - (4823. * logz * z) / 9. - (1348. * L_1 * logz * z) / 9. - (88. * L_2 * logz * z) / 3. -
1877 (88. * logM1OverSqrtz * logz * z) / 9. - (28333. * zeta3) / 486. + (128581. * z * zeta3) / 216. - (5. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 180. * z) * (M_PI)) / 17496. +
1878 ((-684288. + 684288. * sqrtz - (216641. + 87480. * L_1 - 432. * L_2 + 146016. * log12sqrt52 + 5112. * log2 - (50. * complex::i()) * sqrt3 + 158184. * sqrt5 - 684288. * sqrtz) * z +
1879 18. * (197453. + 2232. * L_1 + 912. * L_2 - 9792. * log12sqrt52 - 26508. * log2 + 576. * logz + 9744. * sqrt5) * z2) *
1880 (M_PI2)) /
1881 (69984. * z) +
1882 (23. * (M_PI4)) / 4860. - (13637. * z * (M_PI4)) / 116640.)
1883 .real();
1884 cache_p[index_p(cc, 1, 2, 2)] = (-95740679. / 349920. - (1026907. * L_1) / 5832. - (1751. * L_12) / 54. - (619. * L_2) / 972. + (166. * L_1 * L_2) / 81. - L_22 / 18. - (224. * Cl2PI3 * sqrt3) / 243. + ((5. * complex::i()) / 324.) * log3 * log3 * sqrt3 +
1885 (2895091. * sqrtz) / 60000. + (8. * log2z * sqrtz) / 3. + (32. * logM1OverSqrtz2 * sqrtz) / 3. + (32. * logM1OverSqrtz * logz * sqrtz) / 3. + ((10. * -1.) / 81.) * sqrt3 * t_2 - (8. * log2z) / (3. * z) -
1886 (32. * logM1OverSqrtz2) / (3. * z) - (32. * logM1OverSqrtz * logz) / (3. * z) + (8. * log2z) / (3. * sqrtz) + (32. * logM1OverSqrtz2) / (3. * sqrtz) +
1887 (32. * logM1OverSqrtz * logz) / (3. * sqrtz) + (2370097879. * z) / 1944000. + (117443. * L_1 * z) / 162. + (1193. * L_12 * z) / 9. + (6350. * L_2 * z) / 27. + (64. * L_1 * L_2 * z) / 3. + (34. * L_22 * z) / 3. -
1888 (32. * logM1OverSqrtz2 * z) / 3. + 124. * logz * z + (256. * L_1 * logz * z) / 3. - 32. * L_2 * logz * z - (32. * logM1OverSqrtz * logz * z) / 3. - (10573. * zeta3) / 324. + (85027. * z * zeta3) / 90. +
1889 (5. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 180. * z) * (M_PI)) / 1458. -
1890 ((622080. - 622080. * sqrtz - 5. * (497221. + 116640. * L_1 - 864. * L_2 - 39744. * log12sqrt52 + 85824. * log2 - (100. * complex::i()) * sqrt3 - 43056. * sqrt5 + 124416. * sqrtz) * z +
1891 72. * (64865. + 3960. * L_1 + 2280. * L_2 + 3168. * log12sqrt52 + 35070. * log2 + 1440. * logz - 3288. * sqrt5) * z2) *
1892 (M_PI2)) /
1893 (58320. * z) -
1894 (799. * (M_PI4)) / 810. + (20833. * z * (M_PI4)) / 4860.)
1895 .real();
1896 cache_p[index_p(cc, 2, 2, 2)] = (74041. / 14580. + (106199. * L_1) / 972. + (239. * L_12) / 18. - (5117. * L_2) / 81. - (202. * L_1 * L_2) / 27. - (19. * L_22) / 3. + (224. * Cl2PI3 * sqrt3) / 81. - ((5. * complex::i()) / 108.) * log3 * log3 * sqrt3 -
1897 (1052759. * sqrtz) / 10000. + 4. * log2z * sqrtz + 16. * logM1OverSqrtz2 * sqrtz + 16. * logM1OverSqrtz * logz * sqrtz - ((10. * -1.) / 27.) * sqrt3 * t_2 - (4. * log2z) / z -
1898 (16. * logM1OverSqrtz2) / z - (16. * logM1OverSqrtz * logz) / z + (4. * log2z) / sqrtz + (16. * logM1OverSqrtz2) / sqrtz + (16. * logM1OverSqrtz * logz) / sqrtz -
1899 (69930883. * z) / 101250. - (16463. * L_1 * z) / 54. - (122. * L_12 * z) / 3. - (109. * L_2 * z) / 18. - 22. * L_1 * L_2 * z + 17. * L_22 * z - 16. * logM1OverSqrtz2 * z - 496. * logz * z - 88. * L_1 * logz * z -
1900 48. * L_2 * logz * z - 16. * logM1OverSqrtz * logz * z - (3157. * zeta3) / 54. + (2521. * z * zeta3) / 15. - (5. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 180. * z) * (M_PI)) / 486. +
1901 (-177247. / 3888. - (4. * log12sqrt52) / 9. + (148. * log2) / 27. + ((25. * complex::i()) / 972.) * sqrt3 - (13. * sqrt5) / 27. + 16. * sqrtz - 16. / z + 16. / sqrtz + (5369. * z) / 108. - (16. * log12sqrt52 * z) / 15. -
1902 (178. * log2 * z) / 9. + (16. * logz * z) / 3. + (28. * sqrt5 * z) / 45. + L_1 * (-15. + (26. * z) / 3.) + (2. * L_2 * (1. + 38. * z)) / 9.) *
1903 (M_PI2) +
1904 (971. * (M_PI4)) / 540. + (5203. * z * (M_PI4)) / 3240.)
1905 .real();
1906
1907 cache_ps[index_p(cc, 1, 1, 2)] = (-67489177. / 262440. - (77617. * L_1) / 2187. - (902. * L_12) / 243. -
1908 (5504. * L_2) / 729. - (3064. * L_1 * L_2) / 243. + (260. * L_22) / 27. +
1909 (104. * Cl2PI3 * sqrt3) / 729. - (complex::i() / 486.) * log3 * log3 * sqrt3 +
1910 (166687. * sqrtz) / 6000. - ((4. * -1.) / 243.) * sqrt3 * t_2 -
1911 (27341897029. * z) / 29160000. - (97999. * L_1 * z) / 243. - (9272. * L_2 * z) / 81. -
1912 (9272. * logz * z) / 27. + (28528. * zeta3) / 243. + (29. * z * zeta3) / 3. -
1913 (sqrt3 * (20. + 30. * L_1 + 3. * log3 + 180. * z) * (M_PI)) / 2187. -
1914 ((44209. - 37152. * log12sqrt52 + 126216. * log2 - (10. * complex::i()) * sqrt3 -
1915 40248. * sqrt5 + 127854. * z - 197208. * log2 * z + 10368. * logz * z +
1916 37152. * sqrt5 * z + 17496. * L_1 * (1. + 2. * z) + 1728. * L_2 * (1. + 2. * z)) *
1917 (M_PI2)) /
1918 8748. +
1919 (449. * (M_PI4)) / 1215. - (27529. * z * (M_PI4)) / 14580.)
1920 .real();
1921 cache_ps[index_p(cc, 1, 2, 2)] = (-1336127. / 2187. - (28733. * L_1) / 729. + (44. * L_12) / 81. - (2176. * L_2) / 243. -
1922 (1856. * L_1 * L_2) / 81. + (208. * L_22) / 9. - (416. * Cl2PI3 * sqrt3) / 243. +
1923 ((2. * complex::i()) / 81.) * log3 * log3 * sqrt3 + (8773. * sqrtz) / 100. + ((16. * -1.) / 81.) * sqrt3 * t_2 +
1924 (1672496939. * z) / 4860000. - (23372. * L_1 * z) / 81. - (5248. * L_2 * z) / 27. -
1925 (5248. * logz * z) / 9. + (13934. * zeta3) / 81. - 244. * z * zeta3 +
1926 (4. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 180. * z) * (M_PI)) / 729. +
1927 ((39995. + 8640. * log12sqrt52 - 29232. * log2 - (20. * complex::i()) * sqrt3 + 9360. * sqrt5 +
1928 58284. * z + 11232. * log2 * z + 20736. * logz * z - 8640. * sqrt5 * z +
1929 23328. * L_1 * (1. + 2. * z) + 3456. * L_2 * (1. + 2. * z)) *
1930 (M_PI2)) /
1931 1458. +
1932 (226. * (M_PI4)) / 405. + (5692. * z * (M_PI4)) / 1215.)
1933 .real();
1934 cache_ps[index_p(cc, 2, 2, 2)] = (27476329. / 58320. + (40370. * L_1) / 243. + (604. * L_12) / 27. + (6928. * L_2) / 81. +
1935 (1064. * L_1 * L_2) / 27. - (52. * L_22) / 3. + (416. * Cl2PI3 * sqrt3) / 81. -
1936 ((2. * complex::i()) / 27.) * log3 * log3 * sqrt3 - (26319. * sqrtz) / 250. - ((16. * -1.) / 27.) * sqrt3 * t_2 +
1937 (287805209. * z) / 81000. + (18836. * L_1 * z) / 27. + (928. * L_2 * z) / 9. + (928. * logz * z) / 3. -
1938 (4388. * zeta3) / 27. - 600. * z * zeta3 -
1939 (4. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 180. * z) * (M_PI)) / 243. -
1940 ((41279. - 1728. * log12sqrt52 + 11808. * log2 - (20. * complex::i()) * sqrt3 - 1872. * sqrt5 +
1941 144684. * z - 14688. * log2 * z + 20736. * logz * z + 1728. * sqrt5 * z +
1942 11664. * L_1 * (1. + 2. * z) + 3456. * L_2 * (1. + 2. * z)) *
1943 (M_PI2)) /
1944 486. +
1945 (398. * (M_PI4)) / 135. + (7991. * z * (M_PI4)) / 405.)
1946 .real();
1947
1948 cache_p[index_p(uu, 1, 1, 2)] = (814589597. / 4199040. + (1320817. * L_1) / 17496. + (3211. * L_12) / 324. +
1949 (259603. * L_2) / 11664. + (12911. * L_1 * L_2) / 972. - (311. * L_22) / 216. +
1950 (56. * Cl2PI3 * sqrt3) / 729. - ((5. * complex::i()) / 3888.) * log3 * log3 * sqrt3 +
1951 (855371. * sqrtz) / 180000. - ((5. * -1.) / 486.) * sqrt3 * t_2 +
1952 (5298817581707. * z) / 1151839440000. + (5. * L_1 * z) / 81. - (50. * logz * z) / 9. -
1953 (28333. * zeta3) / 486. - (5. * (20. + 30. * L_1 + 3. * log3) * sqrt3 * (M_PI)) / 17496. -
1954 ((216641. + 87480. * L_1 - 432. * L_2 + 146016. * log12sqrt52 + 5112. * log2 -
1955 (50. * complex::i()) * sqrt3 + 158184. * sqrt5) *
1956 (M_PI2)) /
1957 69984. +
1958 (23. * (M_PI4)) / 4860.)
1959 .real();
1960 cache_p[index_p(uu, 1, 2, 2)] = (-95740679. / 349920. - (1026907. * L_1) / 5832. - (1751. * L_12) / 54. - (619. * L_2) / 972. +
1961 (166. * L_1 * L_2) / 81. - L_22 / 18. - (224. * Cl2PI3 * sqrt3) / 243. +
1962 ((5. * complex::i()) / 324.) * log3 * log3 * sqrt3 + (2895091. * sqrtz) / 60000. +
1963 ((10. * -1.) / 81.) * sqrt3 * t_2 - (55644107. * z) / 648000. - (20. * L_1 * z) / 27. +
1964 (8. * logz * z) / 3. - (10573. * zeta3) / 324. +
1965 (5. * (20. + 30. * L_1 + 3. * log3) * sqrt3 * (M_PI)) / 1458. +
1966 ((497221. + 116640. * L_1 - 864. * L_2 - 39744. * log12sqrt52 + 85824. * log2 -
1967 (100. * complex::i()) * sqrt3 - 43056. * sqrt5) *
1968 (M_PI2)) /
1969 11664. -
1970 (799. * (M_PI4)) / 810.)
1971 .real();
1972 cache_p[index_p(uu, 2, 2, 2)] = (74041. / 14580. + (106199. * L_1) / 972. + (239. * L_12) / 18. - (5117. * L_2) / 81. -
1973 (202. * L_1 * L_2) / 27. - (19. * L_22) / 3. + (224. * Cl2PI3 * sqrt3) / 81. -
1974 ((5. * complex::i()) / 108.) * log3 * log3 * sqrt3 - (1052759. * sqrtz) / 10000. -
1975 ((10. * -1.) / 27.) * sqrt3 * t_2 + (9532631. * z) / 135000. + (20. * L_1 * z) / 9. - 32. * logz * z -
1976 (3157. * zeta3) / 54. - (5. * (20. + 30. * L_1 + 3. * log3) * sqrt3 * (M_PI)) / 486. -
1977 ((177247. + 58320. * L_1 - 864. * L_2 + 1728. * log12sqrt52 - 21312. * log2 -
1978 (100. * complex::i()) * sqrt3 + 1872. * sqrt5) *
1979 (M_PI2)) /
1980 3888. +
1981 (971. * (M_PI4)) / 540.)
1982 .real();
1983 cache_ps[index_p(uu, 1, 1, 2)] = (-67489177. / 262440. - (77617. * L_1) / 2187. - (902. * L_12) / 243. - (5504. * L_2) / 729. -
1984 (3064. * L_1 * L_2) / 243. + (260. * L_22) / 27. + (104. * Cl2PI3 * sqrt3) / 729. -
1985 (complex::i() / 486.) * log3 * log3 * sqrt3 + (166687. * sqrtz) / 6000. - ((4. * -1.) / 243.) * sqrt3 * t_2 -
1986 (261095543. * z) / 9720000. + (8. * L_1 * z) / 81. + (28528. * zeta3) / 243. -
1987 ((20. + 30. * L_1 + 3. * log3) * sqrt3 * (M_PI)) / 2187. -
1988 ((44209. + 17496. * L_1 + 1728. * L_2 - 37152. * log12sqrt52 + 126216. * log2 -
1989 (10. * complex::i()) * sqrt3 - 40248. * sqrt5) *
1990 (M_PI2)) /
1991 8748. +
1992 (449. * (M_PI4)) / 1215.)
1993 .real();
1994 cache_ps[index_p(uu, 1, 2, 2)] = (-1336127. / 2187. - (28733. * L_1) / 729. + (44. * L_12) / 81. - (2176. * L_2) / 243. -
1995 (1856. * L_1 * L_2) / 81. + (208. * L_22) / 9. - (416. * Cl2PI3 * sqrt3) / 243. +
1996 ((2. * complex::i()) / 81.) * log3 * log3 * sqrt3 + (8773. * sqrtz) / 100. + ((16. * -1.) / 81.) * sqrt3 * t_2 -
1997 (117168887. * z) / 1620000. - (32. * L_1 * z) / 27. + (13934. * zeta3) / 81. +
1998 (4. * (20. + 30. * L_1 + 3. * log3) * sqrt3 * (M_PI)) / 729. +
1999 ((39995. + 23328. * L_1 + 3456. * L_2 + 8640. * log12sqrt52 - 29232. * log2 -
2000 (20. * complex::i()) * sqrt3 + 9360. * sqrt5) *
2001 (M_PI2)) /
2002 1458. +
2003 (226. * (M_PI4)) / 405.)
2004 .real();
2005 cache_ps[index_p(uu, 2, 2, 2)] = (27476329. / 58320. + (40370. * L_1) / 243. + (604. * L_12) / 27. + (6928. * L_2) / 81. +
2006 (1064. * L_1 * L_2) / 27. - (52. * L_22) / 3. + (416. * Cl2PI3 * sqrt3) / 81. -
2007 ((2. * complex::i()) / 27.) * log3 * log3 * sqrt3 - (26319. * sqrtz) / 250. - ((16. * -1.) / 27.) * sqrt3 * t_2 +
2008 (4778443. * z) / 27000. + (32. * L_1 * z) / 9. - (4388. * zeta3) / 27. -
2009 (4. * (20. + 30. * L_1 + 3. * log3) * sqrt3 * (M_PI)) / 243. -
2010 ((41279. + 11664. * L_1 + 3456. * L_2 - 1728. * log12sqrt52 + 11808. * log2 -
2011 (20. * complex::i()) * sqrt3 - 1872. * sqrt5) *
2012 (M_PI2)) /
2013 486. +
2014 (398. * (M_PI4)) / 135.)
2015 .real();
2016
2017 // Corrections from LO and NLO coefficients (incl. pengFlag)
2018 // resummation of logz
2019 cache_p[index_p(cc, 1, 1, 2)] += (-2. * (1661. + 1113. * log2z + 132. * M_PI2) * z + logz * (-30. + (39727. + 12132. * L_1 + 2376. * L_2 - 12. * M_PI2) * z)) / 81.;
2020 cache_p[index_p(cc, 1, 2, 2)] += (-8. * ((151 + 147. * log2z + 12. * M_PI2) * z + 2 * logz * (-12. + (448. + 144. * L_1 - 54. * L_2 - 3. * M_PI2) * z))) / 27.;
2021 cache_p[index_p(cc, 2, 2, 2)] += (-4. * (66. * logz - 2. * logz * (518. + 99. * L_1 + 54. * L_2 - 6. * M_PI2) * z + (151. + 21. * log2z + 12. * M_PI2) * z)) / 9.;
2022 cache_ps[index_p(cc, 1, 1, 2)] += (8. * logz * (4. + (507. + 172. * logz + 4. * M_PI2) * z)) / 27.;
2023 cache_ps[index_p(cc, 1, 2, 2)] += (32. * logz * (-1. + 4. * (12. + 5. * logz - M_PI2) * z)) / 9.;
2024 cache_ps[index_p(cc, 2, 2, 2)] += (32. * logz * (-2. + (-9. + 4. * logz + 4. * M_PI2) * z)) / 3.;
2025
2026 // resummation affecting arguments of logs and Dilogs
2027 cache_p[index_p(cc, 1, 1, 2)] += 2. / 81. * logz * (15. + 1615. * z + 1014. * z * logz);
2028 cache_p[index_p(cc, 1, 2, 2)] += 4. / 27. * logz * (-48. + 973. * z + 276. * z * logz);
2029 cache_p[index_p(cc, 2, 2, 2)] += 8. / 9. * logz * (33. + 4. * z + 6. * z * logz);
2030 cache_ps[index_p(cc, 1, 1, 2)] += -32. / 27. * logz + 5216. / 27. * logz * z - 1376. / 27. * log2z * z;
2031 cache_ps[index_p(cc, 1, 2, 2)] += 32. / 9. * logz + 3712. / 9. * logz * z - 640. / 9. * log2z * z;
2032 cache_ps[index_p(cc, 2, 2, 2)] += 64. / 3. * logz - 640. / 3. * logz * z - 128. / 3. * log2z * z;
2033
2034 double L_b = 2. * log(mu_b / Mb);
2035
2036 // Transforming mb in NLO coefficients from Pole scheme to MSbar
2037 cache_p[index_p(cc, 1, 1, 2)] += (8. * (4. + 3. * L_b) * (-196. + 675. * z)) / 243.;
2038 cache_p[index_p(cc, 1, 2, 2)] += (-44. * (4. + 3. * L_b) * (-19. + 108. * z)) / 81.;
2039 cache_p[index_p(cc, 2, 2, 2)] += (-16. * (4. + 3. * L_b) * (-4. + 27. * z)) / 27.;
2040 cache_ps[index_p(cc, 1, 1, 2)] += (1264. * (4. + 3. * L_b)) / 243.;
2041 cache_ps[index_p(cc, 1, 2, 2)] += (416. * (4. + 3. * L_b)) / 81.;
2042 cache_ps[index_p(cc, 2, 2, 2)] += (-704. * (4. + 3. * L_b)) / 27.;
2043
2044 cache_p[index_p(uu, 1, 1, 2)] += (-1568. * (4. + 3. * L_1)) / 243.;
2045 cache_p[index_p(uu, 1, 2, 2)] += (836. * (4. + 3. * L_1)) / 81.;
2046 cache_p[index_p(uu, 2, 2, 2)] += (64. * (4. + 3. * L_1)) / 27.;
2047 cache_ps[index_p(uu, 1, 1, 2)] += (1264. * (4. + 3. * L_b)) / 243.;
2048 cache_ps[index_p(uu, 1, 2, 2)] += (416. * (4. + 3. * L_b)) / 81.;
2049 cache_ps[index_p(uu, 2, 2, 2)] += (-704. * (4. + 3. * L_b)) / 27.;
2050
2051 // Gerlach thesis eq. (6.27)
2052 for (int i = 1; i <= 2; i++)
2053 {
2054 for (int j = i; j <= 2; j++)
2055 {
2056 cache_p[index_p(cu, i, j, 2)] = 0.5 * (cache_p[index_p(cc, i, j, 2)] + cache_p[index_p(uu, i, j, 2)]);
2057 cache_ps[index_p(cu, i, j, 2)] = 0.5 * (cache_ps[index_p(cc, i, j, 2)] + cache_ps[index_p(uu, i, j, 2)]);
2058 }
2059 }
2060
2061 // LO in z
2062 cache_p[index_p(cu, 1, 1, 2)] = (814589597. / 4199040. + (56. * Cl2PI3) / (243. * sqrt3) + (1320817. * L_1) / 17496. + (3211. * L_12) / 324. +
2063 (259603. * L_2) / 11664. + (12911. * L_1 * L_2) / 972. - (311. * L_22) / 216. - (((5. * complex::i()) / 1296.) * log3 * log3) / sqrt3 +
2064 (855371. * sqrtz) / 180000. + (11. * log2z * sqrtz) / 9. + (44. * logM1OverSqrtz2 * sqrtz) / 9. +
2065 (44. * logM1OverSqrtz * logz * sqrtz) / 9. - (((5. * -1.) / 162.) * t_2) / sqrt3 - (11. * log2z) / (9. * z) -
2066 (44. * logM1OverSqrtz2) / (9. * z) - (44. * logM1OverSqrtz * logz) / (9. * z) + (11. * log2z) / (9. * sqrtz) +
2067 (44. * logM1OverSqrtz2) / (9. * sqrtz) + (44. * logM1OverSqrtz * logz) / (9. * sqrtz) -
2068 (1765737724785029. * z) / 3455518320000. - (721799. * L_1 * z) / 3888. - (2347. * L_12 * z) / 108. + (1891. * L_2 * z) / 162. -
2069 (337. * L_1 * L_2 * z) / 18. + (187. * L_22 * z) / 36. - (44. * logM1OverSqrtz2 * z) / 9. - (4873. * logz * z) / 18. -
2070 (674. * L_1 * logz * z) / 9. - (44. * L_2 * logz * z) / 3. - (44. * logM1OverSqrtz * logz * z) / 9. - (28333. * zeta3) / 486. +
2071 (128581. * z * zeta3) / 432. - (5. * (3. * sqrt3 * log3 + 30. * L_1 * sqrt3 + 10. * sqrt3 * (2. + 9. * z)) * (M_PI)) / 17496. +
2072 ((-342144. + 342144. * sqrtz + (-216641. + (50. * complex::i()) * sqrt3 - 87480. * L_1 + 432. * L_2 - 5112. * log2 - 158184. * sqrt5 + 342144. * sqrtz) * z + 9. * (197453. + 2232. * L_1 + 912. * L_2 - 26508. * log2 + 576. * logz + 9744. * sqrt5) * z2 - 864. * z * (169. + 102. * z) * log12sqrt52) * (M_PI2)) / (69984. * z) +
2073 (23. * (M_PI4)) / 4860. - (13637. * z * (M_PI4)) / 233280.)
2074 .real();
2075 cache_p[index_p(cu, 1, 2, 2)] = (-95740679. / 349920. - (1026907. * L_1) / 5832. - (1751. * L_12) / 54. - (619. * L_2) / 972. + (166. * L_1 * L_2) / 81. - L_22 / 18. -
2076 (224. * Cl2PI3 * sqrt3) / 243. + ((5. * complex::i()) / 324.) * log3 * log3 * sqrt3 + (2895091. * sqrtz) / 60000. + (4. * log2z * sqrtz) / 3. +
2077 (16. * logM1OverSqrtz2 * sqrtz) / 3. + (16. * logM1OverSqrtz * logz * sqrtz) / 3. + ((10. * -1.) / 81.) * sqrt3 * t_2 -
2078 (4. * log2z) / (3. * z) - (16. * logM1OverSqrtz2) / (3. * z) - (16. * logM1OverSqrtz * logz) / (3. * z) +
2079 (4. * log2z) / (3. * sqrtz) + (16. * logM1OverSqrtz2) / (3. * sqrtz) +
2080 (16. * logM1OverSqrtz * logz) / (3. * sqrtz) + (1101582779. * z) / 1944000. + (117323. * L_1 * z) / 324. +
2081 (1193. * L_12 * z) / 18. + (3175. * L_2 * z) / 27. + (32. * L_1 * L_2 * z) / 3. + (17. * L_22 * z) / 3. - (16. * logM1OverSqrtz2 * z) / 3. +
2082 (190. * logz * z) / 3. + (128. * L_1 * logz * z) / 3. - 16. * L_2 * logz * z - (16. * logM1OverSqrtz * logz * z) / 3. -
2083 (10573. * zeta3) / 324. + (85027. * z * zeta3) / 180. + (5. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 90. * z) * (M_PI)) / 1458. -
2084 ((311040. - 311040. * sqrtz - 5. * (497221. + 116640. * L_1 - 864. * L_2 - 39744. * log12sqrt52 + 85824. * log2 - (100. * complex::i()) * sqrt3 - 43056. * sqrt5 + 62208. * sqrtz) * z +
2085 36. * (64865. + 3960. * L_1 + 2280. * L_2 + 3168. * log12sqrt52 + 35070. * log2 + 1440. * logz - 3288. * sqrt5) * z2) *
2086 (M_PI2)) /
2087 (58320. * z) -
2088 (799. * (M_PI4)) / 810. + (20833. * z * (M_PI4)) / 9720.)
2089 .real();
2090 cache_p[index_p(cu, 2, 2, 2)] = (74041. / 14580. + (106199. * L_1) / 972. + (239. * L_12) / 18. - (5117. * L_2) / 81. - (202. * L_1 * L_2) / 27. - (19. * L_22) / 3. +
2091 (224. * Cl2PI3 * sqrt3) / 81. - ((5. * complex::i()) / 108.) * log3 * log3 * sqrt3 - (1052759. * sqrtz) / 10000. + 2. * log2z * sqrtz +
2092 8. * logM1OverSqrtz2 * sqrtz + 8. * logM1OverSqrtz * logz * sqrtz - ((10. * -1.) / 27.) * sqrt3 * t_2 - (2. * log2z) / z -
2093 (8. * logM1OverSqrtz2) / z - (8. * logM1OverSqrtz * logz) / z + (2. * log2z) / sqrtz +
2094 (8. * logM1OverSqrtz2) / sqrtz + (8. * logM1OverSqrtz * logz) / sqrtz - (251125639. * z) / 810000. -
2095 (16343. * L_1 * z) / 108. - (61. * L_12 * z) / 3. - (109. * L_2 * z) / 36. - 11. * L_1 * L_2 * z + (17. * L_22 * z) / 2. -
2096 8. * logM1OverSqrtz2 * z - 264. * logz * z - 44. * L_1 * logz * z - 24. * L_2 * logz * z - 8. * logM1OverSqrtz * logz * z -
2097 (3157. * zeta3) / 54. + (2521. * z * zeta3) / 30. - (5. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 90. * z) * (M_PI)) / 486. +
2098 (-177247. / 3888. - (4. * log12sqrt52) / 9. + (148. * log2) / 27. + ((25. * complex::i()) / 972.) * sqrt3 - (13. * sqrt5) / 27. +
2099 8. * sqrtz - 8. / z + 8. / sqrtz + (5369. * z) / 216. - (8. * log12sqrt52 * z) / 15. - (89. * log2 * z) / 9. +
2100 (8. * logz * z) / 3. + (14. * sqrt5 * z) / 45. + L_1 * (-15. + (13. * z) / 3.) + (2. * L_2 * (1. + 19. * z)) / 9.) *
2101 (M_PI2) +
2102 (971. * (M_PI4)) / 540. + (5203. * z * (M_PI4)) / 6480.)
2103 .real();
2104 cache_ps[index_p(cu, 1, 1, 2)] = (-67489177. / 262440. + (104. * Cl2PI3) / (243. * sqrt3) - (77617. * L_1) / 2187. -
2105 (902. * L_12) / 243. - (5504. * L_2) / 729. - (3064. * L_1 * L_2) / 243. + (260. * L_22) / 27. -
2106 ((complex::i() / 162.) * log3 * log3) / sqrt3 + (166687. * sqrtz) / 6000. - (((4. * -1.) / 81.) * t_2) / sqrt3 -
2107 (14062591829. * z) / 29160000. - (97975. * L_1 * z) / 486. - (4636. * L_2 * z) / 81. -
2108 (4636. * logz * z) / 27. + (28528. * zeta3) / 243. + (29. * z * zeta3) / 6. -
2109 ((3. * sqrt3 * log3 + 30. * L_1 * sqrt3 + 10. * sqrt3 * (2. + 9. * z)) * (M_PI)) / 2187. +
2110 ((-44209. + (10. * complex::i()) * sqrt3 - 1728. * L_2 - 163368. * log2 + 40248. * sqrt5 - 63927. * z -
2111 1728. * L_2 * z + 98604. * log2 * z - 5184. * logz * z - 18576. * sqrt5 * z - 17496. * L_1 * (1. + z) +
2112 37152. * (log12sqrt52 + log2)) *
2113 (M_PI2)) /
2114 8748. +
2115 (449. * (M_PI4)) / 1215. -
2116 (27529. * z * (M_PI4)) / 29160.)
2117 .real();
2118 cache_ps[index_p(cu, 1, 2, 2)] = (-1336127. / 2187. - (28733. * L_1) / 729. + (44. * L_12) / 81. - (2176. * L_2) / 243. - (1856. * L_1 * L_2) / 81. +
2119 (208. * L_22) / 9. - (416. * Cl2PI3 * sqrt3) / 243. + ((2. * complex::i()) / 81.) * log3 * log3 * sqrt3 +
2120 (8773. * sqrtz) / 100. + ((16. * -1.) / 81.) * sqrt3 * t_2 + (660495139. * z) / 4860000. -
2121 (11734. * L_1 * z) / 81. - (2624. * L_2 * z) / 27. - (2624. * logz * z) / 9. + (13934. * zeta3) / 81. -
2122 122. * z * zeta3 + (4. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 90. * z) * (M_PI)) / 729. +
2123 ((39995. + 8640. * log12sqrt52 - 29232. * log2 - (20. * complex::i()) * sqrt3 + 9360. * sqrt5 + 29142. * z +
2124 5616. * log2 * z + 10368. * logz * z - 4320. * sqrt5 * z + 23328. * L_1 * (1. + z) +
2125 3456. * L_2 * (1. + z)) *
2126 (M_PI2)) /
2127 1458. +
2128 (226. * (M_PI4)) / 405. + (2846. * z * (M_PI4)) / 1215.)
2129 .real();
2130 cache_ps[index_p(cu, 2, 2, 2)] = (27476329. / 58320. + (40370. * L_1) / 243. + (604. * L_12) / 27. + (6928. * L_2) / 81. +
2131 (1064. * L_1 * L_2) / 27. - (52. * L_22) / 3. + (416. * Cl2PI3 * sqrt3) / 81. -
2132 ((2. * complex::i()) / 27.) * log3 * log3 * sqrt3 - (26319. * sqrtz) / 250. - ((16. * -1.) / 27.) * sqrt3 * t_2 +
2133 (151070269. * z) / 81000. + (9466. * L_1 * z) / 27. + (464. * L_2 * z) / 9. + (464. * logz * z) / 3. -
2134 (4388. * zeta3) / 27. - 300. * z * zeta3 - (4. * sqrt3 * (20. + 30. * L_1 + 3. * log3 + 90. * z) * (M_PI)) / 243. - ((41279. - 1728. * log12sqrt52 + 11808. * log2 - (20. * complex::i()) * sqrt3 - 1872. * sqrt5 + 72342. * z - 7344. * log2 * z + 10368. * logz * z + 864. * sqrt5 * z + 11664. * L_1 * (1. + z) + 3456. * L_2 * (1. + z)) * (M_PI2)) / 486. + (398. * (M_PI4)) / 135. + (7991. * z * (M_PI4)) / 810.)
2135 .real();
2136
2137 // Corrections from LO and NLO coefficients (incl. pengFlag)
2138 // resummation logz in NLO coefficients
2139 cache_p[index_p(cu, 1, 1, 2)] += ((logz * (33433. + 12132. * L_1 + 2376. * L_2 - 12. * M_PI2) - 22. * (151. + 9. * log2z + 12. * M_PI2)) * z) / 162.;
2140 cache_p[index_p(cu, 1, 2, 2)] += (-2. * (302. + 18. * log2z + logz * (1663. + 576. * L_1 - 216. * L_2 - 12. * M_PI2) + 24. * M_PI2) * z) / 27.;
2141 cache_p[index_p(cu, 2, 2, 2)] += (2. * (-151. - 9. * log2z + 2. * logz * (296. + 99. * L_1 + 54. * L_2 - 6. * M_PI2) - 12. * M_PI2) * z) / 9.;
2142 cache_ps[index_p(cu, 1, 1, 2)] += (4. * logz * (3473. + 12. * M_PI2) * z) / 81.;
2143 cache_ps[index_p(cu, 1, 2, 2)] += (-64. * logz * (-124. + 3. * M_PI2) * z) / 27.;
2144 cache_ps[index_p(cu, 2, 2, 2)] += (16. * logz * (-91. + 12. * M_PI2) * z) / 9.;
2145
2146 // resummation affecting arguments of logs and Dilogs
2147 cache_p[index_p(cu, 1, 1, 2)] += 4762. / 81. * logz * z;
2148 cache_p[index_p(cu, 1, 2, 2)] += 1688. / 27. * logz * z;
2149 cache_p[index_p(cu, 2, 2, 2)] += 904. / 9. * logz * z;
2150 cache_ps[index_p(cu, 1, 1, 2)] += 16. / 81. * logz * z;
2151 cache_ps[index_p(cu, 1, 2, 2)] += -64. / 27. * logz * z;
2152 cache_ps[index_p(cu, 2, 2, 2)] += 64. / 9. * logz * z;
2153
2154 // Transforming mb in NLO coefficients from Pole scheme to MSbar
2155 cache_p[index_p(cu, 1, 1, 2)] += (4. * (4. + 3. * L_b) * (-392. + 675. * z)) / 243.;
2156 cache_p[index_p(cu, 1, 2, 2)] += (-44. * (4. + 3. * L_b) * (-19. + 54. * z)) / 81.;
2157 cache_p[index_p(cu, 2, 2, 2)] += (-8. * (4. + 3. * L_b) * (-8. + 27. * z)) / 27.;
2158 cache_ps[index_p(cu, 1, 1, 2)] += (1264. * (4. + 3. * L_b)) / 243.;
2159 cache_ps[index_p(cu, 1, 2, 2)] += (416. * (4. + 3. * L_b)) / 81.;
2160 cache_ps[index_p(cu, 2, 2, 2)] += (-704. * (4. + 3. * L_b)) / 27.;
2161
2162 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 2))
2163 {
2164 // Gerlach thesis eq. (6.28)
2165 cache_p[index_p(qq, 1, 8, 2)] = 208. / 81. * L_1 - L_2 / 27. + (2615. / 54. - 10. / 9. * M_PI2) * z - 5. / 9. * M_PI2 + 25. / (54. * sqrt3) * M_PI - 115. / 486.;
2166 cache_p[index_p(qq, 2, 8, 2)] = -11. / 27. * L_1 + 2. / 9. * L_2 + (20. / 3. * M_PI2 - 833. / 9.) * z + 10. / 3. * M_PI2 - 25. / (9. * sqrt3) * M_PI - 3125. / 81.;
2167 cache_ps[index_p(qq, 1, 8, 2)] = 448. / 81. * L_1 + 32. / 27. * L_2 + (1192. / 27. - 16. / 9. * M_PI2) * z - 8. / 9. * M_PI2 + 20. / (27. * sqrt3) * M_PI + 3580. / 243.;
2168 cache_ps[index_p(qq, 2, 8, 2)] = -248. / 27. * L_1 - 64. / 9. * L_2 + (32. / 3. * M_PI2 - 1088. / 9.) * z + 16. / 3. * M_PI2 - 40. / (9. * sqrt3) * M_PI - 4568. / 81.;
2169
2170 // equation (6.30)
2171 cache_p[index_p(qq, 3, 8, 2)] = -85. / 27. * L_1 - 448. / 9. * L_2 - 196. / 3. * z + 25. / 6. * M_PI2 - 107. / (18. * sqrt3) * M_PI - 17201. / 81.;
2172 cache_p[index_p(qq, 4, 8, 2)] = -3269. / 162. * L_1 - 427. / 27. * L_2 + (20. / 3. * M_PI2 - 404. / 3.) * z + 169. / 12. * M_PI2 - 514. / (27. * sqrt3) * M_PI - 43016. / 243.;
2173 cache_p[index_p(qq, 5, 8, 2)] = 5120. / 27. * L_1 - 7168. / 9. * L_2 - 760. / 3. * z + 770. / 9. * M_PI2 - 28. / (9. * sqrt3) * M_PI - 430238. / 81.;
2174 cache_p[index_p(qq, 6, 8, 2)] = -8962. / 81. * L_1 - 6976. / 27. * L_2 + (200. / 3. * M_PI2 - 4222. / 3.) * z + 3761. / 27. * M_PI2 - 3220. / (27. * sqrt3) * M_PI - 474656. / 243.;
2175 cache_ps[index_p(qq, 3, 8, 2)] = 440. / 27. * L_1 + 512. / 9. * L_2 + 608. / 3. * z - 596. / 27. * M_PI2 - 52. / (9. * sqrt3) * M_PI + 22504. / 81.;
2176 cache_ps[index_p(qq, 4, 8, 2)] = -4804. / 81. * L_1 - 160. / 27. * L_2 + (32. / 3. * M_PI2 - 128. / 3.) * z + 1090. / 81. * M_PI2 - 1120. / (27. * sqrt3) * M_PI - 46988. / 243.;
2177 cache_ps[index_p(qq, 5, 8, 2)] = 17408. / 27. * L_1 + 8192. / 9. * L_2 + 11456. / 3. * z - 8912. / 27. * M_PI2 - 1984. / (9. * sqrt3) * M_PI + 420304. / 81.;
2178 cache_ps[index_p(qq, 6, 8, 2)] = -28624. / 81. * L_1 + 2048. / 27. * L_2 + (320. / 3. * M_PI2 - 160. / 3.) * z + 5608. / 81. * M_PI2 - 8416. / (27. * sqrt3) * M_PI - 423440. / 243.;
2179
2180 // Gerlach thesis eq. (6.31) and (6.29)
2181 z = 0.;
2182 }
2183 z = cache_z;
2184
2185 // Gerlach thesis eq. (6.29)
2186 cache_p[index_p(uu, 1, 8, 2)] += -10. / 9. * z;
2187 cache_p[index_p(uu, 2, 8, 2)] += 20. / 3. * z;
2188 cache_ps[index_p(uu, 1, 8, 2)] += -16. / 9. * z;
2189 cache_ps[index_p(uu, 1, 8, 2)] += 32. / 3. * z;
2190
2191 // Gerlach thesis eq. (6.31)
2192 cache_p[index_p(uu, 3, 8, 2)] += -196. / 3. * z;
2193 cache_p[index_p(uu, 4, 8, 2)] += (-404. / 3. + 20. / 3. * M_PI2) * z;
2194 cache_p[index_p(uu, 5, 8, 2)] += -760. / 3. * z;
2195 cache_p[index_p(uu, 6, 8, 2)] += (-4222. / 3. + 200. / 3. * M_PI2) * z;
2196 cache_ps[index_p(uu, 3, 8, 2)] += 608. / 3. * z;
2197 cache_ps[index_p(uu, 4, 8, 2)] += (-128. / 3. + 32. / 3. * M_PI2) * z;
2198 cache_ps[index_p(uu, 5, 8, 2)] += 11456. / 3. * z;
2199 cache_ps[index_p(uu, 6, 8, 2)] += (-160. / 3. + 320. / 3. * M_PI2) * z;
2200
2201 // as in Gerlach thesis eq. (6.20)
2202 for (int i = 1; i <= 6; i++)
2203 {
2204 cache_p[index_p(cu, i, 8, 2)] =
2205 0.5 * (cache_p[index_p(cc, i, 8, 2)] + cache_p[index_p(uu, i, 8, 2)]);
2206 cache_ps[index_p(cu, i, 8, 2)] =
2207 0.5 * (cache_ps[index_p(cc, i, 8, 2)] + cache_ps[index_p(uu, i, 8, 2)]);
2208 }
2209
2210 // Gerlach thesis eq. (6.32)
2211 cache_p[index_p(cc, 8, 8, 2)] = -13. / 18.;
2212 cache_p[index_p(cu, 8, 8, 2)] = -13. / 18.;
2213 cache_p[index_p(uu, 8, 8, 2)] = -13. / 18.;
2214 cache_ps[index_p(cc, 8, 8, 2)] = -68. / 9.;
2215 cache_ps[index_p(cu, 8, 8, 2)] = -68. / 9.;
2216 cache_ps[index_p(uu, 8, 8, 2)] = -68. / 9.;
2217
2218 // compute flag_LOz terms
2219 for (int i = 0; i < 576; i++)
2220 {
2221 cache_p_LO[i] = cache_p[i];
2222 cache_ps_LO[i] = cache_ps[i];
2223 }
2224
2225 cache_p_LO[index_p(cc, 1, 1, 0)] = 23. / 72. - 11. / 6. * z;
2226 cache_p_LO[index_p(cc, 1, 2, 0)] = 1. / 6. - 2. * z;
2227 cache_p_LO[index_p(cc, 2, 2, 0)] = 1. - 3. * z;
2228 cache_ps_LO[index_p(cc, 1, 1, 0)] = -5. / 9.;
2229 cache_ps_LO[index_p(cc, 1, 2, 0)] = -4. / 3.;
2230 cache_ps_LO[index_p(cc, 2, 2, 0)] = 1.;
2231
2232 cache_p_LO[index_p(cc, 1, 5, 0)] = 64. / 3. - 96. * z;
2233 cache_p_LO[index_p(cc, 1, 6, 0)] = 4. * z - 20. / 9.;
2234 cache_p_LO[index_p(cc, 2, 5, 0)] = 16. - 72. * z;
2235 cache_p_LO[index_p(cc, 2, 6, 0)] = 40. / 3. - 24. * z;
2236
2237 cache_p_LO[index_p(cc, 5, 5, 0)] = -1296. * n_v * z + 408. * (n_l + n_v) + 512.;
2238 cache_p_LO[index_p(cc, 6, 6, 0)] = -72. * n_v * z + 170. / 3. * (n_l + n_v) + 416. / 9.;
2239
2240 for (int i = 3; i <= 6; i++)
2241 {
2242 for (int j = i; j <= 6; j++)
2243 {
2244 cache_p_LO[index_p(uu, i, j, 0)] = cache_p_LO[index_p(cc, i, j, 0)];
2245 cache_ps_LO[index_p(uu, i, j, 0)] = cache_ps_LO[index_p(cc, i, j, 0)];
2246 }
2247 }
2248
2249 // Gerlach thesis eq. (6.10)
2250 for (int i = 1; i <= 6; i++)
2251 {
2252 for (int j = i; j <= 6; j++)
2253 {
2254 cache_p_LO[index_p(cu, i, j, 0)] =
2255 0.5 * (cache_p_LO[index_p(cc, i, j, 0)] + cache_p_LO[index_p(uu, i, j, 0)]);
2256 cache_ps_LO[index_p(cu, i, j, 0)] =
2257 0.5 * (cache_ps_LO[index_p(cc, i, j, 0)] + cache_ps_LO[index_p(uu, i, j, 0)]);
2258 }
2259 }
2260
2261 cache_p_LO[index_p(cc, 1, 1, 1)] = (1196. + 342. * L_1 + 447. * L_2 - 15. * (M_PI2)) / 324. + (z * (-4113. - 1008. * L_1 - 792. * L_2 - 3168. * logz + 4. * (M_PI2))) / 216.;
2262 cache_p_LO[index_p(cc, 1, 2, 1)] = (z * (1179. + 468. * L_1 - 72. * L_2 - 288. * logz - 4. * (M_PI2))) / 18. + (-452. - (333. * L_1) / 2. + 57. * L_2 + 15. * (M_PI2)) / 27.;
2263 cache_p_LO[index_p(cc, 2, 2, 1)] = (37. - 18. * L_1 + 12. * L_2 - 30. * (M_PI2)) / 18. + (z * (135. + 72. * L_1 - 36. * L_2 - 144. * logz + 4. * (M_PI2))) / 6.;
2264 cache_ps_LO[index_p(cc, 1, 1, 1)] = z * (-385. / 9. - (4. * (M_PI2)) / 27.) - (2. * (-1. + 18. * L_1 + 60. * L_2 + 3. * (M_PI2))) / 81.;
2265 cache_ps_LO[index_p(cc, 1, 2, 1)] = (16. * z * (-42. + (M_PI2))) / 9. + (8. * (11. + (9. * L_1) / 2. - 12. * L_2 + 3. * (M_PI2))) / 27.;
2266 cache_ps_LO[index_p(cc, 2, 2, 1)] = z * (44. - (16. * (M_PI2)) / 3.) - (8. * (-31. - 9. * L_1 - 3. * L_2 + 3. * (M_PI2))) / 9.;
2267
2268 cache_p_LO[index_p(cc, 1, 1, 1)] += -5. / 486. - (5. * L_1) / 324. - (5. * z) / 54.;
2269 cache_p_LO[index_p(cc, 1, 2, 1)] += 10. / 81. + (5. * L_1) / 27. + (10. * z) / 9.;
2270 cache_p_LO[index_p(cc, 2, 2, 1)] += -10. / 27. - (5. * L_1) / 9. - (10. * z) / 3.;
2271 cache_ps_LO[index_p(cc, 1, 1, 1)] += -4. / 243. - (2. * L_1) / 81. - (4. * z) / 27.;
2272 cache_ps_LO[index_p(cc, 1, 2, 1)] += 16. / 81. + (8. * L_1) / 27. + (16. * z) / 9.;
2273 cache_ps_LO[index_p(cc, 2, 2, 1)] += -16. / 27. - (8. * L_1) / 9. - (16. * z) / 3.;
2274
2275 cache_p_LO[index_p(cc, 1, 1, 1)] += -11. / 6. * z_replace;
2276 cache_p_LO[index_p(cc, 1, 2, 1)] += -2. * z_replace;
2277 cache_p_LO[index_p(cc, 2, 2, 1)] += -3. * z_replace;
2278
2279 // Gerlach thesis eq. (6.13) and (6.16)
2280 for (int i = 1; i <= 2; i++)
2281 {
2282 for (int j = i; j <= 2; j++)
2283 {
2284 cache_p_LO[index_p(cu, i, j, 1)] =
2285 0.5 * (cache_p_LO[index_p(cc, i, j, 1)] + cache_p_LO[index_p(uu, i, j, 1)]);
2286 cache_ps_LO[index_p(cu, i, j, 1)] =
2287 0.5 * (cache_ps_LO[index_p(cc, i, j, 1)] + cache_ps_LO[index_p(uu, i, j, 1)]);
2288 }
2289 }
2290
2291 // Gerlach thesis eq. (6.19)
2292 cache_p_LO[index_p(cc, 1, 8, 1)] = 5. / 18.;
2293 cache_p_LO[index_p(cc, 2, 8, 1)] = -5. / 3.;
2294 cache_ps_LO[index_p(cc, 1, 8, 1)] = 4. / 9.;
2295 cache_ps_LO[index_p(cc, 2, 8, 1)] = -8. / 3.;
2296
2297 // Gerlach thesis eq. (6.21)
2298 cache_p_LO[index_p(cc, 3, 8, 1)] = -32. / 3.;
2299 cache_p_LO[index_p(cc, 4, 8, 1)] = -169. / 18.;
2300 cache_p_LO[index_p(cc, 5, 8, 1)] = -512. / 3.;
2301 cache_p_LO[index_p(cc, 6, 8, 1)] = -992. / 9.;
2302 cache_ps_LO[index_p(cc, 3, 8, 1)] = 64. / 3.;
2303 cache_ps_LO[index_p(cc, 4, 8, 1)] = -20. / 9.;
2304 cache_ps_LO[index_p(cc, 5, 8, 1)] = 1024. / 3.;
2305 cache_ps_LO[index_p(cc, 6, 8, 1)] = 256. / 9.;
2306
2307 // Gerlach thesis eq. (6.20)
2308 for (int i = 1; i <= 6; i++)
2309 {
2310 cache_p_LO[index_p(cu, i, 8, 1)] = cache_p_LO[index_p(cc, i, 8, 1)];
2311 cache_p_LO[index_p(uu, i, 8, 1)] = cache_p_LO[index_p(cc, i, 8, 1)];
2312 cache_ps_LO[index_p(cu, i, 8, 1)] = cache_ps_LO[index_p(cc, i, 8, 1)];
2313 cache_ps_LO[index_p(uu, i, 8, 1)] = cache_ps_LO[index_p(cc, i, 8, 1)];
2314 }
2315
2316 logz = cache_logz;
2317 //lastInput_compute_pp_s[0] = z;
2318 //lastInput_compute_pp_s[1] = mu_1;
2319 //lastInput_compute_pp_s[2] = mu_2;
2320 //lastInput_compute_pp_s[3] = mu_b;
2321 return;
2322}
2323
2325{
2326 // arxiv:2106.05979 eq. (33)
2327 double log_mub_Mb = 2. * log(mu_b / Mb);
2328 PoletoMS_as1 = 4. / 3. + log_mub_Mb;
2329 PoletoMS_as2_z0 = (307. / 32. + M_PI2 / 3. + M_PI2 / 9. * log2 - 1. / 6. * zeta3 - (71. / 144. + M_PI2 / 18.) * nl + log_mub_Mb * (493. / 72. - nl * 13. / 36. + log_mub_Mb * (43. / 24. - nl / 12.)));
2330 PoletoMS_as2_z1 = 4. / 3. * M_PI2 / 8. * Mc / Mb - z;
2331 // a_s(mu_b) to a_s(mu_1)
2332 double beta0 = 23. / 3.;
2333 double log_mu1_mub = 2. * log(mu_1 / mu_b);
2334 double as_running1 = beta0 * log_mu1_mub;
2335 bool flag_LOz = true;
2336 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
2337 {
2338 for (int i = 1; i <= 6; i++)
2339 {
2340 // not all terms used for n=2
2341 for (int j = i; j <= 8; j++)
2342 {
2343 if (j == 3)
2344 j = 8;
2345 if (i >= 3)
2346 j = 8;
2347 cache_p[index_p(qq, i, j, 2)] += 8. * PoletoMS_as1 * p(qq, i, j, 1, flag_LOz) + (32. * PoletoMS_as2_z0 + 16. * PoletoMS_as1 * PoletoMS_as1 + 8. * PoletoMS_as1 * as_running1) * p(qq, i, j, 0, flag_LOz) + 16. * 2. * PoletoMS_as2_z1 * p(uu, i, j, 0, flag_LOz);
2348 cache_ps[index_p(qq, i, j, 2)] += 8. * PoletoMS_as1 * p_s(qq, i, j, 1, flag_LOz) + (32. * PoletoMS_as2_z0 + 16. * PoletoMS_as1 * PoletoMS_as1 + 8. * PoletoMS_as1 * as_running1) * p_s(qq, i, j, 0, flag_LOz) + 16. * 2. * PoletoMS_as2_z1 * p_s(uu, i, j, 0, flag_LOz);
2349 cache_p_LO[index_p(qq, i, j, 2)] = cache_p[index_p(qq, i, j, 2)];
2350 cache_ps_LO[index_p(qq, i, j, 2)] = cache_ps[index_p(qq, i, j, 2)];
2351 }
2352 for (int j = i; j <= 8; j++)
2353 {
2354 cache_p_LO[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p(qq, i, j, 0, flag_LOz);
2355 cache_ps_LO[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p_s(qq, i, j, 0, flag_LOz);
2356 if (j == 1 or j == 2 or j == 8)
2357 {
2358 cache_p[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p(qq, i, j, 0);
2359 cache_ps[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p_s(qq, i, j, 0);
2360 }
2361 else if (3 <= j and j <= 6)
2362 {
2363 cache_p[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p(qq, i, j, 0, flag_LOz);
2364 cache_ps[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p_s(qq, i, j, 0, flag_LOz);
2365 }
2366 }
2367 }
2368 }
2369 return;
2370}
2371
2373{
2374 // analog to arxiv:2106.05979 eq. (33) for PS mass
2375 double log_mu1_Mb = 2. * log(mu_1 / Mb);
2376 double log_mub_Mb = 2. * log(mu_b / Mb);
2377 // hep-ph/9804241v2 eq. (21)
2378 PoletoPS_as1 = 4. / 3. * mu_f / Mb;
2379 PoletoPS_as2 = 4. / 3. * mu_f / (Mb * 4.) * (a1 - b0 * (2. * log(mu_f / Mb) - 2.));
2380 bool flag_LOz = true;
2381 double beta0 = 23. / 3.;
2382 double as_running1 = beta0 * log_mu1_Mb; // a_s(Mb) to a_s(mu_1)
2383 PoletoMS_as1 = 4. / 3. + log_mub_Mb;
2384 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
2385 {
2386 for (int i = 1; i <= 6; i++)
2387 {
2388 // not all terms used for n=2
2389 for (int j = i; j <= 8; j++)
2390 {
2391 if (j == 3)
2392 j = 8;
2393 if (i >= 3)
2394 j = 8;
2395 cache_p[index_p(qq, i, j, 2)] += 8. * PoletoPS_as1 * p(qq, i, j, 1, flag_LOz) + (32. * PoletoPS_as2 + 16. * PoletoPS_as1 * PoletoPS_as1 +
2396 8. * PoletoPS_as1 * as_running1 -
2397 8. * PoletoPS_as1 * 4. * (-PoletoPS_as1 + PoletoMS_as1) // internal Mb_PS to Mb(mu_b)
2398 ) * p(qq, i, j, 0, flag_LOz);
2399 cache_ps[index_p(qq, i, j, 2)] += 8. * PoletoPS_as1 * p_s(qq, i, j, 1, flag_LOz) + (32. * PoletoPS_as2 + 16. * PoletoPS_as1 * PoletoPS_as1 +
2400 8. * PoletoPS_as1 * as_running1 -
2401 8. * PoletoPS_as1 * 4. * (-PoletoPS_as1 + PoletoMS_as1)) *
2402 p_s(qq, i, j, 0, flag_LOz);
2403 cache_p_LO[index_p(qq, i, j, 2)] = cache_p[index_p(qq, i, j, 2)];
2404 cache_ps_LO[index_p(qq, i, j, 2)] = cache_ps[index_p(qq, i, j, 2)];
2405 }
2406 for (int j = i; j <= 8; j++)
2407 {
2408 cache_p_LO[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p(qq, i, j, 0, flag_LOz);
2409 cache_ps_LO[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p_s(qq, i, j, 0, flag_LOz);
2410 if (j == 1 or j == 2 or j == 8)
2411 {
2412 cache_p[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p(qq, i, j, 0);
2413 cache_ps[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p_s(qq, i, j, 0);
2414 }
2415 else if (3 <= j and j <= 6)
2416 {
2417 cache_p[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p(qq, i, j, 0, flag_LOz);
2418 cache_ps[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p_s(qq, i, j, 0, flag_LOz);
2419 }
2420 }
2421 }
2422 }
2423 return;
2424}
2425
2427{
2428 // arxiv:2106.05979 eq. (33)
2429 double log_mub_Mb = 2. * log(mu_b / Mb);
2430 double log_mub_Mb_2 = log_mub_Mb * log_mub_Mb;
2431 double log_mub_Mb_3 = log_mub_Mb_2 * log_mub_Mb;
2432 double nl2 = nl * nl;
2433 double Dilogsqrtz = gslpp_special_functions::dilog(sqrtz);
2434 double Dilogminussqrtz = gslpp_special_functions::dilog(-sqrtz);
2435 double oneminussqrtz2 = (1. - sqrtz) * (1. - sqrtz);
2436 double log1minussqrtz = log(1. - sqrtz);
2437 double log1plussqrtz = log(1. + sqrtz);
2438 double sqrtz3 = sqrtz * sqrtz * sqrtz;
2439 double log_mub_Mc = 2. * log(mu_b / Mc);
2440 PoletoMS_as1 = 4. / 3. + log_mub_Mb;
2441 PoletoMS_as2 = (307. / 32. + M_PI2 / 3. + M_PI2 / 9. * log2 - 1. / 6. * zeta3 - (71. / 144. + M_PI2 / 18.) * nl + log_mub_Mb * (493. / 72. - nl * 13. / 36. + log_mub_Mb * (43. / 24. - nl / 12.))) + 4. / 3. * M_PI2 / 8. * sqrtz - z;
2442 PoletoMS_as3 = (8481925. / 93312. + (2. * Dilogminussqrtz) / 9. + (2. * Dilogsqrtz) / 9. - (55. * log2_4) / 162. + (652841. * M_PI2) / 38880. - (575. * log2 * M_PI2) / 162. - (22. * log2_2 * M_PI2) / 81. - (695. * M_PI4) / 7776. + (137. * nl) / 216. - (M_PI2 * nl) / 27. +
2443 (log_mub_Mb_3 * (1591. - 160. * nl + 4. * nl2)) / 432. + (log_mub_Mb_2 * (19315. - 2206. * nl + 52. * nl2)) / 864. - (220. * polylog4_12) / 27. + 22.968067156 * sqrtz + (2. * Dilogminussqrtz * sqrtz) / 9. - (2. * Dilogsqrtz * sqrtz) / 9. - 0.982666666 * nl * sqrtz +
2444 1.022111111 * sqrtz3 + (2. * Dilogminussqrtz * sqrtz3) / 9. - (2. * Dilogsqrtz * sqrtz3) / 9. + (M_PI2 * sqrtz3) / 9. + 4.014666667 * z - 0.300333333 * nl * z - (log_mub_Mc * sqrtz * (3. * log1minussqrtz * logz - 3. * log1plussqrtz * logz - 3. * M_PI2 + 24. * sqrtz + 6. * logz * sqrtz + 6. * log2z * sqrtz3 - 12. * log1minussqrtz * logz * sqrtz3 - 12. * log1plussqrtz * logz * sqrtz3 + 4. * M_PI2 * sqrtz3 + 9. * log1minussqrtz * logz * z - 9. * log1plussqrtz * logz * z - 9. * M_PI2 * z - 6. * Dilogminussqrtz * (1. + 4. * sqrtz3 + 3. * z) + Dilogsqrtz * (6. - 24. * sqrtz3 + 18. * z))) / 18. + 0.0493333333 * zeta2 + (2. * Dilogminussqrtz * zeta2) / 9. + (2. * Dilogsqrtz * zeta2) / 9. - (log2z * zeta2) / 18. - (M_PI2 * zeta2) / 27. +
2445 (log_mub_Mb * (12. * Dilogminussqrtz + 12. * Dilogsqrtz + 118.990000008 * sqrtz + 6. * Dilogminussqrtz * sqrtz - 6. * Dilogsqrtz * sqrtz + 3. * M_PI2 * sqrtz - 9.624000006 * nl * sqrtz + 13.037999994 * sqrtz3 - 6. * Dilogminussqrtz * sqrtz3 +
2446 6. * Dilogsqrtz * sqrtz3 - 3. * M_PI2 * sqrtz3 - 1.206 * nl * sqrtz3 - 38.372000004 * z + 3.96 * nl * z - 3. * logz * (-1. + z) * (log1minussqrtz * (2. - sqrtz + 2. * z) + log1plussqrtz * (2. + sqrtz + 2. * z)) - 12. * Dilogminussqrtz * zeta2 -
2447 12. * Dilogsqrtz * zeta2 + 3. * log2z * zeta2 + 2. * M_PI2 * zeta2)) /
2448 18. +
2449 (logz * (log1minussqrtz * oneminussqrtz2 * (1. + sqrtz + z) + 1. * (sqrtz * (-76.2645000015 + 4.9559999985 * nl - 13.544000001 * sqrtz + 0.1544999985 * z) +
2450 log1plussqrtz * (1. + sqrtz + sqrtz3 + zeta2)))) /
2451 9. +
2452 (nl * (-246643. + 288. * log2_4 + 36. * (-967. - 88. * log2 + 16. * log2_2) * M_PI2 + 732. * M_PI4 + 6912. * polylog4_12 - 78084. * zeta3)) / 23328. + (58. * zeta3) / 27. - (1439. * M_PI2 * zeta3) / 432. +
2453 (nl2 * (2353. + 936. * M_PI2 + 3024. * zeta3)) / 23328. + (log_mub_Mb * (177305. + 10656. * (3. + log2) * zeta2 + 4. * nl2 * (89. + 72. * zeta2) - 4824. * zeta3 - 2. * nl * (72. * (49. + 4. * log2) * zeta2 + 7. * (1447. + 144. * zeta3)))) / 2592. + (1975. * zeta5) / 216.) /
2454 M_PI3;
2455 // a_s(mu_b) to a_s(mu_1)
2456 double beta0 = 23. / 3.;
2457 double beta1 = 51. / 8. - 19. / 24. * 5.;
2458 double log_mu1_mub = 2. * log(mu_1 / mu_b);
2459 double as_running1 = beta0 * log_mu1_mub;
2460 double as_running2 = -beta0 * beta0 * log_mu1_mub * log_mu1_mub + beta1 * log_mu1_mub;
2461
2462 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
2463 {
2464 for (int i = 1; i <= 8; i++)
2465 {
2466 if (i == 7)
2467 i++;
2468 for (int j = i; j <= 8; j++)
2469 {
2470 if (j == 7)
2471 j++;
2472 if (j < i)
2473 continue;
2474 cache_p[index_p(qq, i, j, 3)] = 8. * PoletoMS_as1 * p(qq, i, j, 2) + (32. * PoletoMS_as2 + 16. * PoletoMS_as1 * PoletoMS_as1 + 8. * PoletoMS_as1 * as_running1) * p(qq, i, j, 1) + (128. * (PoletoMS_as3 + PoletoMS_as1 * PoletoMS_as2) + 8. * PoletoMS_as1 * as_running2 + 32. * PoletoMS_as2 * as_running1) * p(qq, i, j, 0);
2475 cache_ps[index_p(qq, i, j, 3)] = 8. * PoletoMS_as1 * p_s(qq, i, j, 2) + (32. * PoletoMS_as2 + 16. * PoletoMS_as1 * PoletoMS_as1 + 8. * PoletoMS_as1 * as_running1) * p_s(qq, i, j, 1) + (128. * (PoletoMS_as3 + PoletoMS_as1 * PoletoMS_as2) + 8. * PoletoMS_as1 * as_running2 + 32. * PoletoMS_as2 * as_running1) * p_s(qq, i, j, 0);
2476 if (j >= 3 and j <= 6)
2477 {
2478 cache_p[index_p(qq, i, j, 2)] = 0.;
2479 cache_ps[index_p(qq, i, j, 2)] = 0.;
2480 }
2481 cache_p[index_p(qq, i, j, 2)] += 8. * PoletoMS_as1 * p(qq, i, j, 1) + (32. * PoletoMS_as2 + 16. * PoletoMS_as1 * PoletoMS_as1 +
2482 8. * PoletoMS_as1 * as_running1) *
2483 p(qq, i, j, 0);
2484 cache_ps[index_p(qq, i, j, 2)] += 8. * PoletoMS_as1 * p_s(qq, i, j, 1) + (32. * PoletoMS_as2 + 16. * PoletoMS_as1 * PoletoMS_as1 +
2485 8. * PoletoMS_as1 * as_running1) *
2486 p_s(qq, i, j, 0);
2487 cache_p_LO[index_p(qq, i, j, 2)] = cache_p[index_p(qq, i, j, 2)];
2488 cache_ps_LO[index_p(qq, i, j, 2)] = cache_ps[index_p(qq, i, j, 2)];
2489
2490 cache_p[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p(qq, i, j, 0);
2491 cache_ps[index_p(qq, i, j, 1)] += 8. * PoletoMS_as1 * p_s(qq, i, j, 0);
2492 cache_p_LO[index_p(qq, i, j, 1)] = cache_p[index_p(qq, i, j, 1)];
2493 cache_ps_LO[index_p(qq, i, j, 1)] = cache_ps[index_p(qq, i, j, 1)];
2494 cache_p_LO[index_p(qq, i, j, 0)] = cache_p[index_p(qq, i, j, 0)];
2495 cache_ps_LO[index_p(qq, i, j, 0)] = cache_ps[index_p(qq, i, j, 0)];
2496 }
2497 }
2498 }
2499 return;
2500}
2501
2503{
2504 // analog to arxiv:2106.05979 eq. (33) for PS mass
2505 double log_mu1_Mb = 2. * log(mu_1 / Mb);
2506 double log_mub_Mb = 2. * log(mu_b / Mb);
2507 // hep-ph/9804241v2 eq. (21)
2508 double log_muf_Mb = 2. * log(mu_f / Mb);
2509 PoletoPS_as1 = 4. / 3. * mu_f / Mb;
2510 double PoletoPS_as1_2 = PoletoPS_as1 * PoletoPS_as1;
2511 PoletoPS_as2 = 4. / 3. * mu_f / (Mb * 4.) * (a1 - b0 * (log_muf_Mb - 2.));
2512 PoletoPS_as3 = 4. / 3. * mu_f / (Mb * 16.) * (a2 - (2. * a1 * b0 + b1) * (log_muf_Mb - 2.) + b0_2 * (log_muf_Mb * log_muf_Mb - 4. * log_muf_Mb + 8.));
2513 PoletoMS_as1 = 4. / 3. + log_mub_Mb;
2514 PoletoMS_as2 = (307. / 32. + M_PI2 / 3. + M_PI2 / 9. * log2 - 1. / 6. * zeta3 - (71. / 144. + M_PI2 / 18.) * nl + log_mub_Mb * (493. / 72. - nl * 13. / 36. + log_mub_Mb * (43. / 24. - nl / 12.))) + 4. / 3. * M_PI2 / 8. * sqrtz - z;
2515 double beta0 = 23. / 3.;
2516 double beta1 = 51. / 8. - 19. / 24. * 5.;
2517 double as_running1 = beta0 * log_mu1_Mb;
2518 double as_running1_mub = beta0 * 2. * log(mu_1 / mu_b);
2519 double as_running2 = -beta0 * beta0 * log_mu1_Mb * log_mu1_Mb + beta1 * log_mu1_Mb;
2520 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
2521 {
2522 for (int i = 1; i <= 8; i++)
2523 {
2524 if (i == 7)
2525 i++;
2526 for (int j = i; j <= 8; j++)
2527 {
2528 if (j == 7)
2529 j++;
2530 if (j < i)
2531 continue;
2532 cache_p[index_p(qq, i, j, 3)] = 8. * PoletoPS_as1 * p(qq, i, j, 2) + (32. * PoletoPS_as2 + 16. * PoletoPS_as1_2 + 8. * PoletoPS_as1 * as_running1 - 8. * PoletoPS_as1 * 4. * (-PoletoPS_as1 + PoletoMS_as1)) * p(qq, i, j, 1) + (128. * (PoletoPS_as3 + PoletoPS_as1 * PoletoPS_as2) - (-PoletoPS_as1 + PoletoMS_as1) * (128. * (PoletoPS_as1_2 + PoletoPS_as2) + 32. * PoletoPS_as1 * (as_running1 + as_running1_mub)) - (-PoletoPS_as2 + PoletoMS_as2) * 128. * PoletoPS_as1 + (32. * PoletoPS_as1_2 + 64. * PoletoPS_as2) * as_running1 + 8. * PoletoPS_as1 * as_running2) * p(qq, i, j, 0);
2533 cache_ps[index_p(qq, i, j, 3)] = 8. * PoletoPS_as1 * p_s(qq, i, j, 2) + (32. * PoletoPS_as2 + 16. * PoletoPS_as1_2 + 8. * PoletoPS_as1 * as_running1 - 8. * PoletoPS_as1 * 4. * (-PoletoPS_as1 + PoletoMS_as1)) * p_s(qq, i, j, 1) + (128. * (PoletoPS_as3 + PoletoPS_as1 * PoletoPS_as2) - (-PoletoPS_as1 + PoletoMS_as1) * (128. * (PoletoPS_as1_2 + PoletoPS_as2) + 32. * PoletoPS_as1 * (as_running1 + as_running1_mub)) - (-PoletoPS_as2 + PoletoMS_as2) * 128. * PoletoPS_as1 + (32. * PoletoPS_as1_2 + 64. * PoletoPS_as2) * as_running1 + 8. * PoletoPS_as1 * as_running2) * p_s(qq, i, j, 0);
2534 if (j >= 3 and j <= 6)
2535 {
2536 cache_p[index_p(qq, i, j, 2)] = 0.;
2537 cache_ps[index_p(qq, i, j, 2)] = 0.;
2538 }
2539 cache_p[index_p(qq, i, j, 2)] += 8. * PoletoPS_as1 * p(qq, i, j, 1) + (32. * PoletoPS_as2 + 16. * PoletoPS_as1_2 +
2540 8. * PoletoPS_as1 * as_running1 -
2541 8. * PoletoPS_as1 * 4. * (-PoletoPS_as1 + PoletoMS_as1)) *
2542 p(qq, i, j, 0);
2543 cache_ps[index_p(qq, i, j, 2)] += 8. * PoletoPS_as1 * p_s(qq, i, j, 1) + (32. * PoletoPS_as2 + 16. * PoletoPS_as1_2 +
2544 8. * PoletoPS_as1 * as_running1 -
2545 8. * PoletoPS_as1 * 4. * (-PoletoPS_as1 + PoletoMS_as1)) *
2546 p_s(qq, i, j, 0);
2547 cache_p_LO[index_p(qq, i, j, 2)] = cache_p[index_p(qq, i, j, 2)];
2548 cache_ps_LO[index_p(qq, i, j, 2)] = cache_ps[index_p(qq, i, j, 2)];
2549
2550 cache_p[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p(qq, i, j, 0);
2551 cache_ps[index_p(qq, i, j, 1)] += 8. * PoletoPS_as1 * p_s(qq, i, j, 0);
2552 cache_p_LO[index_p(qq, i, j, 1)] = cache_p[index_p(qq, i, j, 1)];
2553 cache_ps_LO[index_p(qq, i, j, 1)] = cache_ps[index_p(qq, i, j, 1)];
2554 cache_p_LO[index_p(qq, i, j, 0)] = cache_p[index_p(qq, i, j, 0)];
2555 cache_ps_LO[index_p(qq, i, j, 0)] = cache_ps[index_p(qq, i, j, 0)];
2556 }
2557 }
2558 }
2559 return;
2560}
2561
2563{
2564 for (quarks qq = cc; qq <= uu; qq = quarks(qq + 1))
2565 {
2566 for (int i = 1; i <= 6; i++)
2567 {
2568 // not all terms used for n=2
2569 for (int j = i; j <= 8; j++)
2570 {
2571 if (j == 3)
2572 j = 8;
2573 if (i >= 3)
2574 j = 8;
2575 cache_p[index_p(qq, i, j, 2)] = 0.;
2576 cache_ps[index_p(qq, i, j, 2)] = 0.;
2577 }
2578 }
2579 }
2580 for (int i = 0; i < 8; i++)
2581 {
2582 if (i == 6)
2583 i = 7;
2584 C_Misiak_NNLO[i] = 0.;
2585 }
2586 return;
2587}
2588
2589gslpp::complex AmpDB2::PBd()
2590{
2592 double Mw = mySM.Mw();
2593 double kappa = -2. * M_PI * mbpole * mbpole /
2594 (3. * Mw * Mw * mySM.getFlavour().getHDF2().getUDF2().etabS0(mySM.getBBd().getMu()));
2595
2596 double n[13] = {0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
2597
2598 n[0] = 0.1797;
2599 n[1] = 0.1391;
2600 n[5] = 1.0116;
2601 n[6] = 0.0455;
2602 n[8] = -0.0714;
2603 n[10] = -0.3331;
2604
2605 double B1 = mySM.getBBd().getBpars()(0);
2606 double B2 = mySM.getBBd().getBpars()(1);
2607
2608 gslpp::complex PBd = -2. * kappa / mySM.getCBd() *
2609 (gslpp::complex(1, 2. * mySM.getPhiBd(), true) * (n[0] + (n[5] * B2 + n[10]) / B1) - gslpp::complex(1. / mySM.getCKM().computeRt(), mySM.getCKM().computeBeta() + 2. * mySM.getPhiBd(), true) * (n[1] + (n[6] * B2 + n[11]) / B1) + gslpp::complex(1. / mySM.getCKM().computeRt() / mySM.getCKM().computeRt(), 2. * (mySM.getCKM().computeBeta() + mySM.getPhiBd()), true) * (n[2] + (n[7] * B2 + n[12]) / B1));
2610
2611 return PBd;
2612}
2613
2614gslpp::complex AmpDB2::PBs()
2615{
2617
2618 double Mw = mySM.Mw();
2619 double kappa = -2. * M_PI * mbpole * mbpole /
2620 (3. * Mw * Mw * mySM.getFlavour().getHDF2().getUDF2().etabS0(mySM.getBBs().getMu()));
2621
2622 double n[13] = {0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
2623
2624 n[0] = 0.1797;
2625 n[1] = 0.1391;
2626 n[5] = 1.0116;
2627 n[6] = 0.0455;
2628 n[8] = -0.0714;
2629 n[10] = -0.3331;
2630
2631 double B1 = mySM.getBBs().getBpars()(0);
2632 double B2 = mySM.getBBs().getBpars()(1);
2633
2634 gslpp::complex PBs = -2. * kappa / mySM.getCBs() *
2635 (gslpp::complex(1, 2. * mySM.getPhiBs(), true) * (n[0] + (n[5] * B2 + n[10]) / B1) - gslpp::complex(1. / mySM.getCKM().computeRts(), -mySM.getCKM().computeBetas() + 2. * mySM.getPhiBs(), true) * (n[1] + (n[6] * B2 + n[11]) / B1) + gslpp::complex(1. / mySM.getCKM().computeRts() / mySM.getCKM().computeRts(), 2. * (-mySM.getCKM().computeBetas() + mySM.getPhiBs()), true) * (n[2] + (n[7] * B2 + n[12]) / B1));
2636
2637 return PBs;
2638}
@ FULLNNNLO
Definition: OrderScheme.h:40
@ NNLO
Definition: OrderScheme.h:36
@ LO
Definition: OrderScheme.h:34
@ NLO
Definition: OrderScheme.h:35
@ FULLNNLO
Definition: OrderScheme.h:39
@ FULLNLO
Definition: OrderScheme.h:38
gslpp::vector< double > me
Definition: AmpDB2.h:201
int index_deltas(quarks qq, quark q)
Definition: AmpDB2.cpp:980
double PoletoMS_as1
Definition: AmpDB2.h:417
gslpp::complex deltas_1overm(quarks qq, quark q)
Definition: AmpDB2.cpp:974
double mu_f
Definition: AmpDB2.h:280
double Mb2_prefactor
Definition: AmpDB2.h:273
gslpp::complex C1_LO_1overm
Definition: AmpDB2.h:467
gslpp::vector< gslpp::complex > c_H(quark q, orders order)
Definition: AmpDB2.cpp:1188
gslpp::complex VcbVcd2
Definition: AmpDB2.h:319
double Ms
Definition: AmpDB2.h:268
double cacheP[84]
Definition: AmpDB2.h:331
double p(quarks qq, int i, int j, int n, bool flag_LOz=false)
Definition: AmpDB2.cpp:1427
double z4
Definition: AmpDB2.h:239
gslpp::matrix< double > meMStoRI
Definition: AmpDB2.h:210
void computeCKMandMasses(orders order=NNLO, mass_schemes mass_scheme=MSbar)
A method to compute CKM elements, quark masses and alpha_s.
Definition: AmpDB2.cpp:317
double Mc
Definition: AmpDB2.h:269
double z
Definition: AmpDB2.h:236
void compute_deltas_1overm(quark q)
Definition: AmpDB2.cpp:1006
gslpp::complex lambda_u_d
Definition: AmpDB2.h:375
void poletoPS_pp_s()
Definition: AmpDB2.cpp:2372
double sigma
Definition: AmpDB2.h:247
const double zeta2
Definition: AmpDB2.h:181
gslpp::vector< gslpp::complex > H_allpartial(quarks qq)
Definition: AmpDB2.cpp:1295
double Mb2_prefactor_1overm
Definition: AmpDB2.h:274
gslpp::complex Gamma21overM21_tradBasis(orders order, quark q)
A method to compute in the traditional basis @detail source: Ciuchini (hep-ph/0308029v2)
Definition: AmpDB2.cpp:256
gslpp::complex M21_Bd(orders order)
A method to compute .
Definition: AmpDB2.cpp:163
double PoletoPS_as1
Definition: AmpDB2.h:427
gslpp::vector< double > me_R
Definition: AmpDB2.h:203
int indexF(quarks qq, int k, int i, int j)
Definition: AmpDB2.cpp:764
const double log2_2
Definition: AmpDB2.h:186
void compute_pp_s()
Definition: AmpDB2.cpp:1457
double cache_p[768]
Definition: AmpDB2.h:400
double log1minusz
Definition: AmpDB2.h:243
double MB_s
Definition: AmpDB2.h:272
gslpp::complex cache_deltas_1overm[6]
Definition: AmpDB2.h:452
double mu_1_overm
Definition: AmpDB2.h:197
double a1
Definition: AmpDB2.h:282
double sqrtz
Definition: AmpDB2.h:240
double b0
Definition: AmpDB2.h:285
double Mb_pole
Definition: AmpDB2.h:276
double F1(quarks qq, int k, int i, int j)
Definition: AmpDB2.cpp:748
const double sqrt5
Definition: AmpDB2.h:190
int indexP(quarks qq, int k, int i, int j)
Definition: AmpDB2.cpp:769
double z_1overm
Definition: AmpDB2.h:262
quarks
Definition: AmpDB2.h:65
@ cc
Definition: AmpDB2.h:65
@ cu
Definition: AmpDB2.h:65
@ uu
Definition: AmpDB2.h:65
double mu_2
Definition: AmpDB2.h:198
double log1minus4z
Definition: AmpDB2.h:244
double PoletoMS_as3
Definition: AmpDB2.h:419
double F(quarks qq, int k, int i, int j)
Definition: AmpDB2.cpp:753
gslpp::complex C_Misiak_NLO[8]
Definition: AmpDB2.h:300
double b0_2
Definition: AmpDB2.h:286
void computeF0()
Definition: AmpDB2.cpp:490
double PoletoMS_as2
Definition: AmpDB2.h:418
void compute_partialNNLO()
Definition: AmpDB2.cpp:2562
gslpp::complex PBd()
Definition: AmpDB2.cpp:2589
gslpp::complex g(quarks qq, int i)
Definition: AmpDB2.cpp:1063
double PoletoMS_as2_z0
Definition: AmpDB2.h:420
double as_4pi
Definition: AmpDB2.h:259
double oneminusz_1overm2
Definition: AmpDB2.h:264
double Dilogz
Definition: AmpDB2.h:254
double cache_ps[768]
Definition: AmpDB2.h:401
const double log2_4
Definition: AmpDB2.h:187
gslpp::complex delta_1overm(quark q)
Value of 1/mb corrections of (hep-ph/0612167)
Definition: AmpDB2.cpp:985
gslpp::complex K_2
Definition: AmpDB2.h:471
gslpp::complex H_s_partial(quarks qq, int i_start, int i_end, int j_start, int j_end, int n)
Definition: AmpDB2.cpp:1379
gslpp::complex C_Misiak_LO[8]
Definition: AmpDB2.h:299
gslpp::complex M21_Bs(orders order)
A method to compute .
Definition: AmpDB2.cpp:209
bool flag_resumz
Definition: AmpDB2.h:207
const double M_PI3
Definition: AmpDB2.h:179
double PoletoPS_as3
Definition: AmpDB2.h:429
double sqrt1minus4z_1overm
Definition: AmpDB2.h:265
double F0(quarks qq, int k, int i, int j)
Definition: AmpDB2.cpp:743
gslpp::complex H(quarks qq, orders order)
Definition: AmpDB2.cpp:1232
double logx_2
Definition: AmpDB2.h:253
double z2
Definition: AmpDB2.h:237
gslpp::complex PBs()
Definition: AmpDB2.cpp:2614
gslpp::complex VcbVcs
Definition: AmpDB2.h:318
const StandardModel & mySM
Definition: AmpDB2.h:169
gslpp::complex cachegtilde[12]
Definition: AmpDB2.h:461
double Md
Definition: AmpDB2.h:267
double P(quarks qq, int k, int i, int j)
Definition: AmpDB2.cpp:758
gslpp::complex H_partial(quarks qq, int i_start, int i_end, int j_start, int j_end, int n)
Definition: AmpDB2.cpp:1331
gslpp::complex cacheg[12]
Definition: AmpDB2.h:460
double logsigma
Definition: AmpDB2.h:248
gslpp::complex C_Buras_LO[8]
Definition: AmpDB2.h:302
gslpp::complex cacheD[6]
Definition: AmpDB2.h:332
gslpp::complex gtilde(quarks qq, int i)
Definition: AmpDB2.cpp:1068
double cacheF1[24]
Definition: AmpDB2.h:330
double Mb_PS
Definition: AmpDB2.h:277
double sqrt1minus4z
Definition: AmpDB2.h:246
gslpp::complex lambda_c_s
Definition: AmpDB2.h:376
void compute_g()
Definition: AmpDB2.cpp:1025
const double sqrt3
Definition: AmpDB2.h:189
double PoletoMS_as2_z1
Definition: AmpDB2.h:421
void computeD(orders order)
Definition: AmpDB2.cpp:640
double MB
Definition: AmpDB2.h:271
void computeP()
Definition: AmpDB2.cpp:588
void poletoMSbar_pp_s_partialN3LO()
Definition: AmpDB2.cpp:2426
double mu_b
Definition: AmpDB2.h:199
double logz
Definition: AmpDB2.h:241
int BMeson
Definition: AmpDB2.h:171
double Gf2
Definition: AmpDB2.h:235
double logx_1
Definition: AmpDB2.h:252
double as_4pi_mu2
Definition: AmpDB2.h:258
void poletoPS_pp_s_partialN3LO()
Definition: AmpDB2.cpp:2502
bool flag_LOz
Definition: AmpDB2.h:403
const double polylog4_12
Definition: AmpDB2.h:194
double x_1
Definition: AmpDB2.h:250
gslpp::complex VtbVtd
Definition: AmpDB2.h:313
int index_p(quarks qq, int i, int j, int n)
Definition: AmpDB2.cpp:1452
gslpp::complex lambda_c_d
Definition: AmpDB2.h:374
double z3
Definition: AmpDB2.h:238
gslpp::complex VcbVcd
Definition: AmpDB2.h:317
double x_2
Definition: AmpDB2.h:251
double Dilogsigma2
Definition: AmpDB2.h:256
double PoletoPS_as2
Definition: AmpDB2.h:428
gslpp::complex VcbVcs2
Definition: AmpDB2.h:320
gslpp::complex C_Buras_NNLO[8]
Definition: AmpDB2.h:304
double Mb
Definition: AmpDB2.h:270
mass_schemes
Definition: AmpDB2.h:63
@ MSbar_partialN3LO
Definition: AmpDB2.h:63
@ MSbar
Definition: AmpDB2.h:63
@ PS
Definition: AmpDB2.h:63
@ PS_partialN3LO
Definition: AmpDB2.h:63
@ pole
Definition: AmpDB2.h:63
@ MSbar_partialNNLO
Definition: AmpDB2.h:63
@ only1overmb
Definition: AmpDB2.h:63
@ PS_partialNNLO
Definition: AmpDB2.h:63
double Dilogsigma
Definition: AmpDB2.h:255
const double log3
Definition: AmpDB2.h:188
double z_1overm2
Definition: AmpDB2.h:263
const double zeta5
Definition: AmpDB2.h:184
gslpp::complex C2_LO_1overm
Definition: AmpDB2.h:468
double Mb_Mb
Definition: AmpDB2.h:275
quark
Definition: AmpDB2.h:64
@ d
Definition: AmpDB2.h:64
@ s
Definition: AmpDB2.h:64
gslpp::complex delta_1overm_tradBasis(quark q)
Value of 1/mb corrections of (hep-ph/0308029v2)
Definition: AmpDB2.cpp:945
AmpDB2(const StandardModel &SM_i, int BMeson_i, bool flag_fixmub=false, bool flag_RI=false)
Constructor.
Definition: AmpDB2.cpp:13
const double Cl2PI3
Definition: AmpDB2.h:193
double cache_ps_LO[576]
Definition: AmpDB2.h:405
gslpp::complex Gamma21overM21(orders order, mass_schemes mass_scheme, int BMeson)
A method to compute @detail source: Marvin Gerlach (2205.07907 and thesis) with 1/mb corrections fro...
Definition: AmpDB2.cpp:1082
double cacheF0[24]
Definition: AmpDB2.h:329
gslpp::complex RBs(orders order)
A method to compute the ratio of the absolute value of the $B_s$ mixing amplitude over the Standard M...
Definition: AmpDB2.cpp:57
gslpp::complex RBd(orders order)
A method to compute the ratio of the absolute value of the $B_d$ mixing amplitude over the Standard M...
Definition: AmpDB2.cpp:110
gslpp::complex D(quarks qq, int k)
Definition: AmpDB2.cpp:926
double b1
Definition: AmpDB2.h:287
const double t_2
Definition: AmpDB2.h:192
void computeWilsonCoeffsBuras()
Definition: AmpDB2.cpp:467
double as_4pi_mu1
Definition: AmpDB2.h:257
int indexD(quarks qq, int k)
Definition: AmpDB2.cpp:932
int indexg(quarks qq, int i)
Definition: AmpDB2.cpp:1073
gslpp::complex deltas_1overm_tradBasis(quarks qq, quark q)
Definition: AmpDB2.cpp:969
gslpp::complex lambda_u_s
Definition: AmpDB2.h:377
gslpp::complex C_Buras_NLO[8]
Definition: AmpDB2.h:303
const double M_PI4
Definition: AmpDB2.h:180
gslpp::complex VtbVtd2
Definition: AmpDB2.h:315
gslpp::vector< double > me_Rtilde
Definition: AmpDB2.h:204
double log2z
Definition: AmpDB2.h:242
const double log12sqrt52
Definition: AmpDB2.h:191
double a2
Definition: AmpDB2.h:283
gslpp::matrix< double > coeffsMStoRI
Definition: AmpDB2.h:212
void computeF1()
Definition: AmpDB2.cpp:523
gslpp::complex cache_deltas_1overm_tradBasis[6]
Definition: AmpDB2.h:364
void compute_matrixelements(quark q, orders order)
A method to compute all DB=2 Wilson coefficients (me, me_R, me_Rtilde)
Definition: AmpDB2.cpp:774
double oneminusz2
Definition: AmpDB2.h:245
double p_s(quarks qq, int i, int j, int n, bool flag_LOz=false)
Definition: AmpDB2.cpp:1439
const double log2
Definition: AmpDB2.h:185
gslpp::complex VtbVts2
Definition: AmpDB2.h:316
gslpp::vector< gslpp::complex > c(quark q, orders order)
Values of DB=2 Wilson coefficients from (hep-ph/0308029v2) transformed to the new basis.
Definition: AmpDB2.cpp:875
double mu_1
Definition: AmpDB2.h:196
const double zeta3
Definition: AmpDB2.h:182
gslpp::complex H_s(quarks qq, orders order)
Definition: AmpDB2.cpp:1248
const double M_PI2
Definition: AmpDB2.h:178
double cache_p_LO[576]
Definition: AmpDB2.h:404
gslpp::vector< double > meoverme0
Definition: AmpDB2.h:202
gslpp::complex VtbVts
Definition: AmpDB2.h:314
gslpp::complex C_1_SM
Definition: AmpDB2.h:173
gslpp::vector< gslpp::complex > c_H_partial(quark q, int i)
Definition: AmpDB2.cpp:1265
bool flag_fixmub
Definition: AmpDB2.h:213
gslpp::vector< gslpp::complex > H_s_allpartial(quarks qq)
Definition: AmpDB2.cpp:1313
double log2sigma
Definition: AmpDB2.h:249
double nl
Definition: AmpDB2.h:281
void computeWilsonCoeffsMisiak()
Definition: AmpDB2.cpp:1173
bool flag_RI
Definition: AmpDB2.h:214
void poletoMSbar_pp_s()
Definition: AmpDB2.cpp:2324
gslpp::complex C_Misiak_NNLO[8]
Definition: AmpDB2.h:301
gslpp::complex K_1
Definition: AmpDB2.h:470
void compute_deltas_1overm_tradBasis(quark q)
Definition: AmpDB2.cpp:960
const double & getMu() const
A get method for the scale of the bag parameters.
Definition: BParameter.h:204
schemes getScheme() const
A get method for the scheme of the bag parameters.
Definition: BParameter.h:222
const gslpp::vector< double > & getBpars() const
A get method for the vector of the bag parameters.
Definition: BParameter.h:176
const double computeBeta() const
The CKM angle .
Definition: CKM.cpp:120
const gslpp::complex computelamt_s() const
The product of the CKM elements .
Definition: CKM.cpp:174
const gslpp::complex computelamu_s() const
The product of the CKM elements .
Definition: CKM.cpp:184
const gslpp::complex computelamc_s() const
The product of the CKM elements .
Definition: CKM.cpp:179
const gslpp::complex computelamu_d() const
The product of the CKM elements .
Definition: CKM.cpp:168
const gslpp::complex computelamc_d() const
The product of the CKM elements .
Definition: CKM.cpp:163
const double computeBetas() const
The CKM angle .
Definition: CKM.cpp:135
const gslpp::complex computelamt_d() const
The product of the CKM elements .
Definition: CKM.cpp:158
const double computeRt() const
.
Definition: CKM.cpp:190
const double computeRts() const
.
Definition: CKM.cpp:194
gslpp::matrix< double > & Df2Evol(double mu, double M, orders order, schemes scheme=NDR)
Definition: EvolDF2.cpp:148
double etabS0(double mu) const
Buras et al, hep-ph/9512380.
Definition: EvolDF2.cpp:419
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:179
gslpp::vector< gslpp::complex > ** ComputeCoeffsgamma_Buras(double mu, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:184
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:101
HeffDF2 & getHDF2() const
The member that returns an object of the class HeffDF2.
Definition: Flavour.cpp:81
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR, bool SM=false) const
Computes the Wilson coefficient for the process .
Definition: Flavour.cpp:106
EvolDF2 & getUDF2() const
Definition: HeffDF2.h:120
WilsonCoefficient getCoeffBs() const
Definition: HeffDF2.h:104
WilsonCoefficient getCoeffBd() const
Definition: HeffDF2.h:100
const double & getDecayconst() const
A get method for the decay constant of the meson.
Definition: Meson.h:360
An observable class for the -boson mass.
Definition: Mw.h:22
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
Definition: Particle.h:133
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
@ B_D
Definition: QCD.h:344
@ B_S
Definition: QCD.h:346
const Meson & getMesons(const QCD::meson m) const
A get method to access a meson as an object of the type Meson.
Definition: QCD.h:526
const BParameter & getBBd_subleading() const
For getting the subleading bag parameters in process in the meson system.
Definition: QCD.h:651
const double Mrun(const double mu, const double m, const quark q, const orders order=FULLNNLO) const
Computes a running quark mass from .
Definition: QCD.cpp:1353
@ BOTTOM
Definition: QCD.h:329
@ DOWN
Definition: QCD.h:325
@ STRANGE
Definition: QCD.h:327
@ CHARM
Definition: QCD.h:326
const BParameter & getBBs_subleading() const
For getting the subleading bag parameters in process in the meson system.
Definition: QCD.h:662
const double getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV.
Definition: QCD.h:573
void initializeBParameter(std::string name_i) const
A method to initialize B Parameter and the corresponding meson.
Definition: QCD.cpp:211
const BParameter & getBBs() const
For getting the bag parameters corresponding to the operator basis in process in the meson system.
Definition: QCD.h:640
const BParameter & getBBd() const
For getting the bag parameters corresponding to the operator basis in process in the meson system.
Definition: QCD.h:629
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:536
void initializeMeson(QCD::meson meson_i) const
A method to initialize a meson.
Definition: QCD.cpp:280
const double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:582
const double Mbar2Mp(const double mbar, const quark q, const orders order=FULLNNLO) const
Converts the mass to the pole mass.
Definition: QCD.cpp:1552
A model class for the Standard Model.
virtual const double getPhiBs() const
Half the relative phase of the $B_s$ mixing amplitude w.r.t. the Standard Model one.
virtual const double getCBd() const
The ratio of the absolute value of the $B_d$ mixing amplitude over the Standard Model value.
const CKM & getCKM() const
A get method to retrieve the member object of type CKM.
virtual const double getPhiBd() const
Half the relative phase of the $B_d$ mixing amplitude w.r.t. the Standard Model one.
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
const Flavour & getFlavour() const
const double getGF() const
A get method to retrieve the Fermi constant .
const double Als(const double mu, const orders order, const bool Nf_thr, const bool qed_flag) const
The running QCD coupling in the scheme including QED corrections.
virtual const double getCBs() const
The ratio of the absolute value of the $B_s$ mixing amplitude over the Standard Model value.
orders getOrder() const
Test Observable.
orders getHighest(orders order)
returns the highest order in QCD without the prefix FULL
Definition: OrderScheme.cpp:10
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:33