29 for (
unsigned int k = 0; k <
dim; k++) {
32 for (
unsigned int j = 0; j <
dim; j++) {
33 for (
unsigned int i = 0; i <
dim; i++) {
34 b[i][j][k] = v(i, k) * vi(k, j);
42 for (
int l = 0; l < 3; l++) {
44 double b0 = model.
Beta0(6 - l);
45 for (
unsigned int i = 0; i <
dim; i++)
46 for (
unsigned int j = 0; j <
dim; j++)
47 h(i, j) = (i == j) * e(i) * model.
Beta1(6 - l) / (2. * b0 * b0) -
48 gg(i, j) / (2. * b0 + e(i) - e(j));
52 for (
unsigned int i = 0; i <
dim; i++)
53 for (
unsigned int j = 0; j <
dim; j++)
54 for (
unsigned int k = 0; k <
dim; k++) {
55 c[l][i][j][k] = jv(i, k) * vi(k, j);
58 d[l][i][j][k] = -v(i, k) * vij(k, j);
76 ad(0, 0) = (6. * Nc - 6.) / Nc;
77 ad(1, 1) = -(6. * Nc * Nc - 8. * Nc - 2.) / Nc;
78 ad(1, 2) = (4. * Nc - 8.) / Nc;
79 ad(2, 1) = (4. * Nc * Nc - 4. * Nc - 8.) / Nc;
80 ad(2, 2) = (2. * Nc * Nc + 4. * Nc + 2.) / Nc;
81 ad(3, 3) = -(6. * Nc * Nc - 6.) / Nc;
89 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6))
90 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): wrong number of flavours");
91 ad(0, 0) = -(-1. + Nc)*(-171. + 19. * Nc * Nc + Nc * (63. - 4. * nf)) / (6. * Nc * Nc);
92 ad(1, 1) = (-1251. - 609. * Nc * Nc * Nc * Nc + Nc * (432. - 52. * nf) - 8. * Nc * Nc * (-71 + 2. * nf) +
93 20. * Nc * Nc * Nc * (32. + 3. * nf)) / (18. * Nc * Nc);
94 ad(1, 2) = -(2. * (-2. + Nc)*(-72. + Nc * Nc + 2. * Nc * (63. + nf))) / (9. * Nc * Nc);
95 ad(2, 1) = 2. * (119. * Nc * Nc * Nc + 8. * (-9. + 5. * nf) + 2. * Nc * (-125. + 7. * nf) -
96 Nc * Nc * (101. + 14. * nf)) / (9. * Nc);
97 ad(2, 2) = (477. + 343. * Nc * Nc * Nc * Nc + Nc * Nc * Nc * (380. - 52. * nf) - 4. * Nc * (-36. + nf) -
98 8. * Nc * Nc * (16. + 13. * nf)) / (18. * Nc * Nc);
99 ad(3, 3) = (45. + 479. * Nc * Nc - 203. * Nc * Nc * Nc * Nc - 44. * Nc * nf + 20. * Nc * Nc * Nc * nf) /
101 ad(3, 4) = -(18. / Nc)-(71. * Nc) / 2. + 4. * nf;
102 ad(4, 3) = 3. / Nc - (100. * Nc) / 3. + (22. * nf) / 3.;
103 ad(4, 4) = (45. + 137. * Nc * Nc - 44. * Nc * nf) / (6. * Nc * Nc);
106 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): order not implemented");
112 ad(0, 0) = 6. - 6. / Nc;
115 ad(2, 2) = 6. / Nc - 6. * Nc;
116 ad(3, 3) = 6. + 6. / Nc - 6. * Nc;
117 ad(3, 4) = 1. / 2. - 1. / Nc;
118 ad(4, 3) = -24. - 48. / Nc;
119 ad(4, 4) = 6. - 2. / Nc + 2. * Nc;
125 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6))
126 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): wrong number of flavours");
127 ad(0, 0) = -22. / 3. - 57. / (2. * Nc * Nc) + 39. / Nc - (19. * Nc) / 6. + (2. * nf) / 3. - (2. * nf) / 3. / Nc;
128 ad(1, 1) = 137. / 6. + 15. / (2 * Nc * Nc) - (22 * nf) / (3 * Nc);
129 ad(1, 2) = -(6. / Nc) + (200. * Nc) / 3. - (44 * nf) / 3.;
130 ad(2, 1) = 9. / Nc + (71. * Nc) / 4. - 2. * nf;
131 ad(2, 2) = 479. / 6. + 15. / (2. * Nc * Nc) - (203. * Nc * Nc) / 6. - (22. * nf) / (3. * Nc) + (10. * Nc * nf) / 3.;
132 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.;
133 ad(3, 4) = -31. / 9. - 4. / (Nc * Nc) + 9. / Nc - Nc / 36. - nf / 18. + nf / (9 * Nc);
134 ad(4, 3) = -704. / 3. - 320. / (Nc * Nc) - 208. / Nc - (364. * Nc) / 3. + (136. * nf) / 3. + (176. * nf) / (3. * Nc);
135 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.;
138 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): order not implemented");
142 throw std::runtime_error(
"EvolDF2::AnomalousDimension(): basis not implemented");
155 std::stringstream out;
157 throw std::runtime_error(
"EvolDF2::Df2Evol(): scheme " + out.str() +
" not implemented ");
163 if (mu == this->mu && M == this->M && scheme == this->scheme)
164 return (*
Evol(order));
170 std::stringstream out;
171 out <<
"M = " << M <<
" < mu = " <<
mu;
182 Df2Evol(m_down, m_up, nf, scheme);
187 Df2Evol(m_down, M, nf, scheme);
188 return (*
Evol(order));
196 int l = 6 - (int) nf;
200 double eta = alsM / alsmu;
202 for (
unsigned int k = 0; k <
dim; k++) {
204 for (
unsigned int i = 0; i <
dim; i++)
205 for (
unsigned int j = 0; j <
dim; j++) {
207 resNLO(i, j) +=
c[l][i][j][k] * etap * alsmu;
208 resNLO(i, j) +=
d[l][i][j][k] * etap * alsM;
209 resLO(i, j) +=
b[i][j][k] * etap;
223 throw std::runtime_error(
"Error in EvolDF2::Df2Evol()");
231 double gamma0[2] = {0.}, gamma1[2][4] = {
256 gamma0[0] = 6. * (N - 1.) / N;
257 gamma0[1] = -6. * (N + 1.) / N;
259 gamma1[0][0] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 3.);
260 gamma1[1][0] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 3.);
261 gamma1[0][1] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 4.);
262 gamma1[1][1] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 4.);
263 gamma1[0][2] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 5.);
264 gamma1[1][2] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 5.);
265 gamma1[0][3] = ((N - 1.) / (2. * N)) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * 6.);
266 gamma1[1][3] = ((N + 1.) / (2. * N)) * (-21. - 57. / N + 19. / 3. * N - 4. / 3. * 6.);
268 for (
int i = 0; i < 2; i++) {
269 for (
int j = 0; j < 4; j++) {
277 for (
int i = 0; i < 2; i++) {
278 for (
int j = 0; j < 2; j++) {
279 for (
int k = 0; k < 4; k++) {
280 dd[i][j][k] =
d[i][k] +
d[j][k];
281 JJ[i][j][k] = J[i][k] + J[j][k];
286 tau[0][0] = (N + 3.) / 4.;
287 tau[1][0] = -(N - 1.) / 4.;
288 tau[0][1] = tau[1][0];
289 tau[1][1] = (N - 1.) / 4.;
291 K[0][0] = 3. * (N - 1.) * tau[0][0];
292 K[1][0] = 3. * (N + 1.) * tau[0][1];
294 K[1][1] = 3. * (N + 3.) * tau[1][1];
296 beta[0][0] = (1. - N) * (M_PI * M_PI * (N2 - 6.) / (12. * N) + 3. * (-N2 + 2. * N + 13.) / (4. * N));
297 beta[1][0] = (1. - N) * (M_PI * M_PI * (-N2 + 2. * N - 2.) / (12. * N) + (3. * N2 + 13.) / (4. * N));
298 beta[0][1] = beta[1][0];
299 beta[1][1] = (1. - N) * (M_PI * M_PI * (N2 - 4. * N + 2) / (12. * N) - (3. * N2 + 10. * N + 13.) / (4. * N));
301 B[0] = 11. * (N - 1.) / (2. * N);
302 B[1] = -11. * (N + 1.) / (2. * N);
313 for (
int i = 0; i < 2; i++) {
314 for (
int j = 0; j < 2; j++) {
315 eta +=
pow(as_mb__as_muc, dd[i][j][1]) *
316 pow(as_muw__as_mb, dd[i][j][2]) *
317 (tau[i][j] + as_muc__4pi * (2. * K[i][j] *
318 log_muc__mc + tau[i][j] * (JJ[i][j][1] - J[0][0]) + beta[i][j]) +
319 tau[i][j]*(as_mb__4pi * (JJ[i][j][2] - JJ[i][j][1]) +
320 as_muw__4pi * (B[i] + B[j] - JJ[i][j][2])));
336 double Kpp =
pow(K, 12. / 25.);
337 double Kpm =
pow(K, -6. / 25.);
338 double Kmm =
pow(K, -24. / 25.);
339 double K7 =
pow(K, 1. / 5.);
346 ((3. - 1.) / (2. * 3.)) * (-21. + 57. / 3. - 19. + 4.) / 2. /
model.
Beta0(3);
352 eta = (M_PI / AlsC * (-18. / 7. * Kpp - 12. / 11. * Kpm + 6. / 29. * Kmm + 7716. / 2233. * K7) *
355 262497. / 35000. * Kpp - 123. / 625. * Kpm + 1108657. / 1305000. * Kmm - 277133. / 50750. * K7 +
356 K * (-21093. / 8750. * Kpp + 13331. / 13750. * Kpm - 10181. / 18125. * Kmm - 1731104. / 2512125. * K7) +
357 (
log(xt) - (3. * xt) / (4. - 4. * xt) -
log(xt) * (3. * xt * xt) / (4. * (1. - xt) * (1. - xt)) + 0.5) * K * K7) * xc / (
model.
getMyMatching()->
S0(xc, xt)) *
pow(AlsC, 2. / 9.);
369 double xm2 = (1 - x) * (1 - x);
370 double xm3 = xm2 * (1 - x);
372 double logx =
log(x);
375 double S0tt = (4. * x - 11. * x2 + x3) / 4. / xm2 -
376 3. * x3 / (2. * xm3) * logx;
378 double Bt = 5. * (N - 1.) / 2. / N + 3. * (N * N - 1.) / 2. / N;
380 double gamma0 = 6. * (N - 1.) / N;
382 double gamma1[4] = {0.}, J[4] = {0.};
384 for (
int i = 0; i < 4; ++i) {
385 gamma1[i] = (N - 1.) / (2. * N) * (-21. + 57. / N - 19. / 3. * N + 4. / 3. * (i + 3.));
390 double b = (4. - 22. * x + 15. * x2 + 2. * x3 + x4 - 18. * x2 * logx)
391 / ((-1. + x) * (-4. + 15. * x - 12. * x2 + x3 + 6. * x2 * logx));
double etatt(double mu) const
Buras et al, hep-ph/9512380.
double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
A class for constructing and defining operations on real matrices.
double Beta1(const double nf) const
The coefficient for a certain number of flavours .
const StandardModel & model
virtual StandardModelMatching * getMyMatching() const
A get method to access the member pointer of type StandardModelMatching.
orders
An enum type for orders in QCD.
double etact(double mu) const
Buras et al, hep-ph/9512380.
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
complex pow(const complex &z1, const complex &z2)
double S1(double x) const
EvolDF2(unsigned int dim_i, schemes scheme, orders order, const StandardModel &model)
constructor
double Als(const double mu, const orders order=FULLNLO) const
Computes the running strong coupling in the scheme. In the cases of LO, NLO and FULLNNLO...
double getNc() const
A get method to access the number of colours .
virtual ~EvolDF2()
destructor
void setScales(double mu, double M)
Sets the upper and lower scale for the running of the Wilson Coefficients.
A model class for the Standard Model.
schemes
An enum type for regularization schemes.
double getMuw() const
A get method to retrieve the matching scale around the weak scale.
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
matrix< double > transpose()
double AboveTh(const double mu) const
The active flavour threshold above the scale as defined in QCD::Thresholds().
gslpp::matrix< double > * Evol(orders order)
Evolution matrix set at a fixed order of QCD coupling.
gslpp::matrix< double > & Df2Evol(double mu, double M, orders order, schemes scheme=NDR)
void eigensystem(matrix< complex > &U, vector< complex > &S)
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
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...
const double & getMass() const
A get method to access the particle mass.
double getMuc() const
A get method to access the threshold between four- and three-flavour theory in GeV.
gslpp::matrix< double > * elem[MAXORDER_EW+1]
double S0(double, double) const
double etacc(double mu) const
Buras et al, hep-ph/9512380.
complex log(const complex &z)
A class for constructing and defining operations on real vectors.
A class for the RG evolutor of the Wilson coefficients.
double Nf(const double mu) const
The number of active flavour at scale .
double x_t(const double mu, const orders order=FULLNNLO) const
matrix< double > inverse()
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
double Als4(const double mu) const
The value of at any scale with the number of flavours .
double getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV. ...
double getMz() const
A get method to access the mass of the boson .
double getAlsMz() const
A get method to access the value of .