21 gslpp::matrix<gslpp::complex>vv(
dim,
dim, 0.);
22 gslpp::vector<gslpp::complex>ee(
dim, 0.);
24 g0t.eigensystem(vv, ee);
26 gslpp::matrix<double> v(vv.real());
27 gslpp::vector<double> e(ee.real());
29 gslpp::matrix<double> vi = v.inverse();
30 for (
unsigned int k = 0; k <
dim; k++) {
33 for (
unsigned int j = 0; j <
dim; j++) {
34 for (
unsigned int i = 0; i <
dim; i++) {
35 b[i][j][k] = v(i, k) * vi(k, j);
42 gslpp::matrix<double> h(
dim,
dim, 0.);
43 for (
int l = 0; l < 3; l++) {
46 for (
unsigned int i = 0; i <
dim; i++)
47 for (
unsigned int j = 0; j <
dim; j++)
48 h(i, j) = (i == j) * e(i) *
model.
Beta1(6 - l) / (2. * b0 * b0) -
49 gg(i, j) / (2. * b0 + e(i) - e(j));
50 gslpp::matrix<double> j = v * h * vi;
51 gslpp::matrix<double> jv = j*v;
52 gslpp::matrix<double> vij = vi*j;
53 for (
unsigned int i = 0; i <
dim; i++)
54 for (
unsigned int j = 0; j <
dim; j++)
55 for (
unsigned int k = 0; k <
dim; k++) {
56 c[l][i][j][k] = jv(i, k) * vi(k, j);
59 d[l][i][j][k] = -v(i, k) * vij(k, j);
71 gslpp::matrix<double> ad(
dim,
dim, 0.);
77 ad(0, 0) = (6. * Nc - 6.) / Nc;
78 ad(1, 1) = -(6. * Nc * Nc - 8. * Nc - 2.) / Nc;
79 ad(1, 2) = (4. * Nc - 8.) / Nc;
80 ad(2, 1) = (4. * Nc * Nc - 4. * Nc - 8.) / Nc;
81 ad(2, 2) = (2. * Nc * Nc + 4. * Nc + 2.) / Nc;
82 ad(3, 3) = -(6. * Nc * Nc - 6.) / Nc;
90 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6))
91 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): wrong number of flavours");
92 ad(0, 0) = -(-1. + Nc)*(-171. + 19. * Nc * Nc + Nc * (63. - 4. * nf)) / (6. * Nc * Nc);
93 ad(1, 1) = (-1251. - 609. * Nc * Nc * Nc * Nc + Nc * (432. - 52. * nf) - 8. * Nc * Nc * (-71 + 2. * nf) +
94 20. * Nc * Nc * Nc * (32. + 3. * nf)) / (18. * Nc * Nc);
95 ad(1, 2) = -(2. * (-2. + Nc)*(-72. + Nc * Nc + 2. * Nc * (63. + nf))) / (9. * Nc * Nc);
96 ad(2, 1) = 2. * (119. * Nc * Nc * Nc + 8. * (-9. + 5. * nf) + 2. * Nc * (-125. + 7. * nf) -
97 Nc * Nc * (101. + 14. * nf)) / (9. * Nc);
98 ad(2, 2) = (477. + 343. * Nc * Nc * Nc * Nc + Nc * Nc * Nc * (380. - 52. * nf) - 4. * Nc * (-36. + nf) -
99 8. * Nc * Nc * (16. + 13. * nf)) / (18. * Nc * Nc);
100 ad(3, 3) = (45. + 479. * Nc * Nc - 203. * Nc * Nc * Nc * Nc - 44. * Nc * nf + 20. * Nc * Nc * Nc * nf) /
102 ad(3, 4) = -(18. / Nc)-(71. * Nc) / 2. + 4. * nf;
103 ad(4, 3) = 3. / Nc - (100. * Nc) / 3. + (22. * nf) / 3.;
104 ad(4, 4) = (45. + 137. * Nc * Nc - 44. * Nc * nf) / (6. * Nc * Nc);
107 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): order not implemented");
113 ad(0, 0) = 6. - 6. / Nc;
116 ad(2, 2) = 6. / Nc - 6. * Nc;
117 ad(3, 3) = 6. + 6. / Nc - 6. * Nc;
118 ad(3, 4) = 1. / 2. - 1. / Nc;
119 ad(4, 3) = -24. - 48. / Nc;
120 ad(4, 4) = 6. - 2. / Nc + 2. * Nc;
126 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6))
127 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): wrong number of flavours");
128 ad(0, 0) = -22. / 3. - 57. / (2. * Nc * Nc) + 39. / Nc - (19. * Nc) / 6. + (2. * nf) / 3. - (2. * nf) / 3. / Nc;
129 ad(1, 1) = 137. / 6. + 15. / (2 * Nc * Nc) - (22 * nf) / (3 * Nc);
130 ad(1, 2) = -(6. / Nc) + (200. * Nc) / 3. - (44 * nf) / 3.;
131 ad(2, 1) = 9. / Nc + (71. * Nc) / 4. - 2. * nf;
132 ad(2, 2) = 479. / 6. + 15. / (2. * Nc * Nc) - (203. * Nc * Nc) / 6. - (22. * nf) / (3. * Nc) + (10. * Nc * nf) / 3.;
133 ad(3, 3) = 136. / 3. - 107. / (2. * Nc * Nc) - 12. / Nc + (107. * Nc) / 3. - (203. * Nc * Nc) / 6. - (2. * nf) / 3. - (10. * nf) / (3. * Nc) + (10. * Nc * nf) / 3.;
134 ad(3, 4) = -31. / 9. - 4. / (Nc * Nc) + 9. / Nc - Nc / 36. - nf / 18. + nf / (9 * Nc);
135 ad(4, 3) = -704. / 3. - 320. / (Nc * Nc) - 208. / Nc - (364. * Nc) / 3. + (136. * nf) / 3. + (176. * nf) / (3. * Nc);
136 ad(4, 4) = -188. / 9. + 21. / (2. * Nc * Nc) + 44. / Nc + 21. * Nc + (343. * Nc * Nc) / 18. - 6. * nf + (2. * nf) / (9. * Nc) - (26. * Nc * nf) / 9.;
139 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): order not implemented");
143 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): basis not implemented");
156 std::stringstream out;
158 throw std::runtime_error(
"EvolDF2::Df2Evol(): scheme " + out.str() +
" not implemented ");
164 if (
mu == this->mu &&
M == this->M &&
scheme == this->scheme)
171 std::stringstream out;
172 out <<
"M = " <<
M <<
" < mu = " <<
mu;
196 gslpp::matrix<double> resLO(
dim, 0.), resNLO(
dim, 0.), resNNLO(
dim, 0.);
198 int l = 6 - (int) nf;
202 double eta = alsM / alsmu;
204 for (
unsigned int k = 0; k <
dim; k++) {
205 double etap = pow(eta,
a[k] / 2. /
model.
Beta0(nf));
206 for (
unsigned int i = 0; i <
dim; i++)
207 for (
unsigned int j = 0; j <
dim; j++) {
209 resNLO(i, j) +=
c[l][i][j][k] * etap * alsmu;
210 resNLO(i, j) +=
d[l][i][j][k] * etap * alsM;
211 resLO(i, j) +=
b[i][j][k] * etap;
225 throw std::runtime_error(
"Error in EvolDF2::Df2Evol()");
233 double gamma0[2] = {0.}, gamma1[2][4] = {
258 gamma0[0] = 6. * (N - 1.) / N;
259 gamma0[1] = -6. * (N + 1.) / N;
261 gamma1[0][0] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 3.);
262 gamma1[1][0] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 3.);
263 gamma1[0][1] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 4.);
264 gamma1[1][1] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 4.);
265 gamma1[0][2] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 5.);
266 gamma1[1][2] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 5.);
267 gamma1[0][3] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 6.);
268 gamma1[1][3] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 6.);
270 for (
int i = 0; i < 2; i++) {
271 for (
int j = 0; j < 4; j++) {
279 for (
int i = 0; i < 2; i++) {
280 for (
int j = 0; j < 2; j++) {
281 for (
int k = 0; k < 4; k++) {
282 dd[i][j][k] =
d[i][k] +
d[j][k];
283 JJ[i][j][k] = J[i][k] + J[j][k];
288 tau[0][0] = (N + 3.) / 4.;
289 tau[1][0] = -(N - 1.) / 4.;
290 tau[0][1] = tau[1][0];
291 tau[1][1] = (N - 1.) / 4.;
293 K[0][0] = 3. * (N - 1.) * tau[0][0];
294 K[1][0] = 3. * (N + 1.) * tau[0][1];
296 K[1][1] = 3. * (N + 3.) * tau[1][1];
298 beta[0][0] = (1. - N) * (M_PI * M_PI * (N2 - 6.) / (12. * N) + 3. * (-N2 + 2. * N + 13.) / (4. * N));
299 beta[1][0] = (1. - N) * (M_PI * M_PI * (-N2 + 2. * N - 2.) / (12. * N) + (3. * N2 + 13.) / (4. * N));
300 beta[0][1] = beta[1][0];
301 beta[1][1] = (1. - N) * (M_PI * M_PI * (N2 - 4. * N + 2) / (12. * N) - (3. * N2 + 10. * N + 13.) / (4. * N));
303 B[0] = 11. * (N - 1.) / (2. * N);
304 B[1] = -11. * (N + 1.) / (2. * N);
315 for (
int i = 0; i < 2; i++) {
316 for (
int j = 0; j < 2; j++) {
317 eta += pow(as_mb__as_muc, dd[i][j][1]) *
318 pow(as_muw__as_mb, dd[i][j][2]) *
319 (tau[i][j] + as_muc__4pi * (2. * K[i][j] *
320 log_muc__mc + tau[i][j] * (JJ[i][j][1] - J[0][0]) + beta[i][j]) +
321 tau[i][j]*(as_mb__4pi * (JJ[i][j][2] - JJ[i][j][1]) +
322 as_muw__4pi * (B[i] + B[j] - JJ[i][j][2])));
339 std::cout <<
"K = " << K << std::endl;
341 double Kpp = pow(K, 12. / 25.);
342 double Kpm = pow(K, -6. / 25.);
343 double Kmm = pow(K, -24. / 25.);
344 double K7 = pow(K, 1. / 5.);
351 ((3. - 1.) / (2. * 3.)) * (-21. + 57. / 3. - 19. + 4.) / 2. /
model.
Beta0(3);
357 eta = (M_PI / AlsC * (-18. / 7. * Kpp - 12. / 11. * Kpm + 6. / 29. * Kmm + 7716. / 2233. * K7) *
358 (1. - AlsC / (4. * M_PI) * 307. / 162.) + (log(
model.
getMuc() /
360 262497. / 35000. * Kpp - 123. / 625. * Kpm + 1108657. / 1305000. * Kmm - 277133. / 50750. * K7 +
361 K * (-21093. / 8750. * Kpp + 13331. / 13750. * Kpm - 10181. / 18125. * Kmm - 1731104. / 2512125. * K7) +
362 (log(xt) - (3. * xt) / (4. - 4. * xt) - log(xt) * (3. * xt * xt) / (4. * (1. - xt) * (1. - xt)) + 0.5) * K * K7) * xc / (
model.
getMatching().S0(xc, xt)) * pow(AlsC, 2. / 9.);
374 double xm2 = (1 - x) * (1 - x);
375 double xm3 = xm2 * (1 - x);
377 double logx = log(x);
380 double S0tt = (4. * x - 11. * x2 + x3) / 4. / xm2 -
381 3. * x3 / (2. * xm3) * logx;
383 double Bt = 5. * (N - 1.) / 2. / N + 3. * (N * N - 1.) / 2. / N;
385 double gamma0 = 6. * (N - 1.) / N;
387 double gamma1[4] = {0.}, J[4] = {0.};
389 for (
int i = 0; i < 4; ++i) {
390 gamma1[i] = (N - 1.) / (2. * N) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * (i + 3.));
395 double b = (4. - 22. * x + 15. * x2 + 2. * x3 + x4 - 18. * x2 * logx)
396 / ((-1. + x) * (-4. + 15. * x - 12. * x2 + x3 + 6. * x2 * logx));
401 double eta = pow(AlsC, 6. / 27.) *
402 pow(AlsB / AlsC, 6. / 25.) *
403 pow(AlsT / AlsB, 6. / 23.) *
404 (1. + AlsC / 4. / M_PI * (J[1] - J[0]) +
405 AlsB / 4. / M_PI * (J[2] - J[1])
412 std::cout <<
"AlsT = " << AlsT <<
" AlsC = " << AlsC <<
" AlsB = " << AlsB <<
" mub = " <<
model.
getMub() << std::endl;
426 double xm2 = (1 - x) * (1 - x);
427 double xm3 = xm2 * (1 - x);
429 double logx = log(x);
432 double S0tt = (4. * x - 11. * x2 + x3) / 4. / xm2 -
433 3. * x3 / (2. * xm3) * logx;
435 double Bt = 5. * (N - 1.) / 2. / N + 3. * (N * N - 1.) / 2. / N;
437 double gamma0 = 6. * (N - 1.) / N;
439 double gamma1[4] = {0.}, J[4] = {0.};
441 for (
int i = 0; i < 4; ++i) {
442 gamma1[i] = (N - 1.) / (2. * N) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * (i + 3.));
447 double b = (4. - 22. * x + 15. * x2 + 2. * x3 + x4 - 18. * x2 * logx)
448 / ((-1. + x) * (-4. + 15. * x - 12. * x2 + x3 + 6. * x2 * logx));
453 pow(AlsT / Alsm, 6. / 23.) *
458 + Alsm / 4. / M_PI * J[2]);
gslpp::matrix< double > & Df2Evol(double mu, double M, orders order, schemes scheme=NDR)
double etacc(double mu) const
Buras et al, hep-ph/9512380.
double etatt(double mu) const
Buras et al, hep-ph/9512380.
double etabS0(double mu) const
Buras et al, hep-ph/9512380.
gslpp::matrix< double > AnomalousDimension(orders order, unsigned int nf, int basis=0) const
ADM in the basis used in Ciuchini et.al. hep-ph/9711402 (basis = 0, default) or in the basis (QVLL,...
EvolDF2(unsigned int dim_i, schemes scheme, orders order, const StandardModel &model)
constructor
virtual ~EvolDF2()
destructor
double etact(double mu) const
Buras et al, hep-ph/9512380.
const StandardModel & model
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
const double & getMass() const
A get method to access the particle mass.
const double getMuc() const
A get method to access the threshold between four- and three-flavour theory in GeV.
const double Als4(const double mu) const
The value of at any scale with the number of flavours .
const double Mrun4(const double mu_f, const double mu_i, const double m) const
The running of a mass with the number of flavours .
const double Beta1(const double nf) const
The coefficient for a certain number of flavours .
const double Beta0(const double nf) const
The coefficient for a certain number of flavours .
const double getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV.
const double AboveTh(const double mu) const
The active flavour threshold above the scale as defined in QCD::Thresholds().
const double Nf(const double mu) const
The number of active flavour at scale .
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
const double getNc() const
A get method to access the number of colours .
const double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
A class for the RG evolutor of the Wilson coefficients.
void setScales(double mu, double M)
Sets the upper and lower scale for the running of the Wilson Coefficients.
gslpp::matrix< double > * Evol(orders order)
Evolution matrix set at a fixed order of QCD coupling.
A model class for the Standard Model.
const double getMuw() const
A get method to retrieve the matching scale around the weak scale.
const double getMz() const
A get method to access the mass of the boson .
const double getAlsMz() const
A get method to access the value of .
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
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.
gslpp::matrix< double > * elem[MAXORDER_QED+1]
orders
An enum type for orders in QCD.
schemes
An enum type for regularization schemes.