EvolDF2.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include <cstring>
9 #include "EvolDF2.h"
10 
11 EvolDF2::EvolDF2(unsigned int dim_i, schemes scheme, orders order, const StandardModel& model)
12 : RGEvolutor(dim_i, scheme, order),
13  model(model),
14  dim(dim_i)
15 {
16  //double Nc = model.getNc();
17  int basis = 0; //0: Gabbiani, 1: Buras
18  gslpp::matrix<double> g0t(AnomalousDimension(LO, 3, basis).transpose());
19 
22 
23  g0t.eigensystem(vv, ee);
24 
25  gslpp::matrix<double> v(vv.real());
26  gslpp::vector<double> e(ee.real());
27 
29  for (unsigned int k = 0; k < dim; k++) {
30  a[k] = e(k);
31 // std::cout << "a[" << k << "] = " << a[k] << std::endl;
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);
35 // if (b[i][j][k] != 0.)
36 // std::cout << "b[" << i << "][" << j << "][" << k << "] = " << b[i][j][k] << std::endl;
37  }
38  }
39  }
40 
41  gslpp::matrix<double> h(dim, dim, 0.);
42  for (int l = 0; l < 3; l++) {
43  gslpp::matrix<double> gg = vi * (AnomalousDimension(NLO, 6 - l, basis).transpose()) * v;
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));
49  gslpp::matrix<double> j = v * h * vi;
50  gslpp::matrix<double> jv = j*v;
51  gslpp::matrix<double> vij = vi*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);
56 // if (c[l][i][j][k] != 0.)
57 // std::cout << "c[" << l << "][" << i << "][" << j << "][" << k << "] = " << c[l][i][j][k] << std::endl;
58  d[l][i][j][k] = -v(i, k) * vij(k, j);
59 // if (d[l][i][j][k] != 0.)
60 // std::cout << "d[" << l << "][" << i << "][" << j << "][" << k << "] = " << d[l][i][j][k] << std::endl;
61  }
62  }
63 }
64 
66 {}
67 
68 gslpp::matrix<double> EvolDF2::AnomalousDimension(orders order, unsigned int nf, int basis) const
69 {
70  gslpp::matrix<double> ad(dim, dim, 0.);
71  double Nc = model.getNc();
72  switch (basis) {
73  case 0:
74  switch (order) {
75  case LO:
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;
82  ad(4, 3) = -6.;
83  ad(4, 4) = 6. / Nc;
84  break;
85  case NLO:
86 
87  // MSbar-NDR scheme with evanescent operators of Buras, Misiak & Urban
88 
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) /
100  (6. * Nc * Nc);
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);
104  break;
105  default:
106  throw std::runtime_error("EvolDF2::AnomalousDimension(): order not implemented");
107  }
108  break;
109  case 1:
110  switch (order) {
111  case LO:
112  ad(0, 0) = 6. - 6. / Nc;
113  ad(1, 1) = 6. / Nc;
114  ad(1, 2) = 12.;
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;
120  break;
121  case NLO:
122 
123  // MSbar-NDR scheme with evanescent operators of Buras, Misiak & Urban
124 
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.;
136  break;
137  default:
138  throw std::runtime_error("EvolDF2::AnomalousDimension(): order not implemented");
139  }
140  break;
141  default:
142  throw std::runtime_error("EvolDF2::AnomalousDimension(): basis not implemented");
143  }
144  return (ad);
145 }
146 
147 gslpp::matrix<double>& EvolDF2::Df2Evol(double mu, double M, orders order, schemes scheme)
148 {
149  switch (scheme) {
150  case NDR:
151  break;
152  case LRI:
153  case HV:
154  default:
155  std::stringstream out;
156  out << scheme;
157  throw std::runtime_error("EvolDF2::Df2Evol(): scheme " + out.str() + " not implemented ");
158  }
159 
160  double alsMZ = model.getAlsMz();
161  double Mz = model.getMz();
162  if(alsMZ == alsMZ_cache && Mz == Mz_cache) {
163  if (mu == this->mu && M == this->M && scheme == this->scheme)
164  return (*Evol(order));
165  }
166  alsMZ_cache = alsMZ;
167  Mz_cache = Mz;
168 
169  if (M < mu) {
170  std::stringstream out;
171  out << "M = " << M << " < mu = " << mu;
172  throw out.str();
173  }
174 
175  setScales(mu, M); // also assign evol to identity
176 
177  double m_down = mu;
178  double m_up = model.AboveTh(m_down);
179  double nf = model.Nf(m_down);
180 
181  while (m_up < M) {
182  Df2Evol(m_down, m_up, nf, scheme);
183  m_down = m_up;
184  m_up = model.AboveTh(m_down);
185  nf += 1.;
186  }
187  Df2Evol(m_down, M, nf, scheme);
188  return (*Evol(order));
189 }
190 
191 void EvolDF2::Df2Evol(double mu, double M, double nf, schemes scheme)
192 {
193 
194  gslpp::matrix<double> resLO(dim, 0.), resNLO(dim, 0.), resNNLO(dim, 0.);
195 
196  int l = 6 - (int) nf;
197  double alsM = model.Als(M, FULLNLO) / 4. / M_PI;
198  double alsmu = model.Als(mu, FULLNLO) / 4. / M_PI;
199 
200  double eta = alsM / alsmu;
201 
202  for (unsigned int k = 0; k < dim; k++) {
203  double etap = pow(eta, a[k] / 2. / model.Beta0(nf));
204  for (unsigned int i = 0; i < dim; i++)
205  for (unsigned int j = 0; j < dim; j++) {
206  resNNLO(i, j) += 0.;
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;
210  }
211  }
212  switch (order) {
213  case NNLO:
214  *elem[NNLO] = 0.; // Marco can implement it if he wishes to!
215  case NLO:
216  *elem[NLO] = (*elem[LO]) * resNLO + (*elem[NLO]) * resLO;
217  case LO:
218  *elem[LO] = (*elem[LO]) * resLO;
219  break;
220  case FULLNNLO:
221  case FULLNLO:
222  default:
223  throw std::runtime_error("Error in EvolDF2::Df2Evol()");
224  }
225 }
226 
227 double EvolDF2::etacc(double mu) const
228 {
229  double N = model.getNc();
230  double N2 = N * N;
231  double gamma0[2] = {0.}, gamma1[2][4] = {
232  {0.}
233  }, d[2][4] = {
234  {0.}
235  },
236  J[2][4] = {
237  {0.}
238  }, dd[2][2][4] = {
239  {
240  {0.}
241  }
242  }, JJ[2][2][4] = {
243  {
244  {0.}
245  }
246  },
247  B[2] = {0.}; // 0 = + ; 1 = - ;
248  double tau[2][2] = {
249  {0.}
250  }, K[2][2] = {
251  {0.}
252  }, beta[2][2] = {
253  {0.}
254  };
255 
256  gamma0[0] = 6. * (N - 1.) / N;
257  gamma0[1] = -6. * (N + 1.) / N;
258 
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.);
267 
268  for (int i = 0; i < 2; i++) { // 0 = + ; 1 = - ;
269  for (int j = 0; j < 4; j++) { // j = nf - 3;
270  d[i][j] = gamma0[i] / 2. / model.Beta0(j + 3);
271  J[i][j] = d[i][j] / model.Beta0(j + 3) * model.Beta1(j + 3) -
272  gamma1[i][j] / 2. / model.Beta0(j + 3);
273  }
274 
275  }
276 
277  for (int i = 0; i < 2; i++) { // 0 = + ; 1 = - ;
278  for (int j = 0; j < 2; j++) { // 0 = + ; 1 = - ;
279  for (int k = 0; k < 4; k++) { // k = nf - 3;
280  dd[i][j][k] = d[i][k] + d[j][k];
281  JJ[i][j][k] = J[i][k] + J[j][k];
282  }
283  }
284  }
285 
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.;
290 
291  K[0][0] = 3. * (N - 1.) * tau[0][0];
292  K[1][0] = 3. * (N + 1.) * tau[0][1];
293  K[0][1] = K[1][0];
294  K[1][1] = 3. * (N + 3.) * tau[1][1];
295 
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));
300 
301  B[0] = 11. * (N - 1.) / (2. * N);
302  B[1] = -11. * (N + 1.) / (2. * N);
303 
304  double eta = 0.;
305  double as_mb__as_muc = model.Als(model.getMub(), FULLNLO) / model.Als(model.getMuc(), FULLNLO);
306  double as_muw__as_mb = model.Als(model.getMuw(), FULLNLO) / model.Als(model.getMub(), FULLNLO);
307  double as_muc__4pi = model.Als(model.getMuc(), FULLNLO) / 4. / M_PI;
308  double log_muc__mc = log(model.getMuc() / model.getQuarks(QCD::CHARM).getMass());
309  double as_mb__4pi = model.Als(model.getMub(), FULLNLO) / 4. / M_PI;
310  double as_muw__4pi = model.Als(model.getMuw(), FULLNLO) / 4. / M_PI;
311 
312 
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])));
321  }
322  }
323 
324  eta *= pow(model.Als(model.getMuc()), d[0][0]);
325  eta *= pow(model.Als(mu, FULLNLO), -2. / 9.);
326 
327  return (eta * (1. + model.Als(mu, FULLNLO) / 4. / M_PI * J[0][0]));
328 }
329 
330 double EvolDF2::etact(double mu) const
331 {
332 
333  //temporary fix waiting for NNLO
334 
335  double K = model.Als4(model.getMuw()) / model.Als4(model.getMuc());
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.);
341  xc *= xc;
343  xt *= xt;
344 
345  double J3 = 6. * (3. - 1.) / 3. / 2. / model.Beta0(3) / model.Beta0(3) * model.Beta1(3) -
346  ((3. - 1.) / (2. * 3.)) * (-21. + 57. / 3. - 19. + 4.) / 2. / model.Beta0(3);
347 
348 
349  double eta = 0.;
350  double AlsC = model.Als4(model.getMuc());
351 
352  eta = (M_PI / AlsC * (-18. / 7. * Kpp - 12. / 11. * Kpm + 6. / 29. * Kmm + 7716. / 2233. * K7) *
353  (1. - AlsC / (4. * M_PI) * 307. / 162.) + (log(model.getMuc() /
354  model.getQuarks(QCD::CHARM).getMass()) - 0.25) * (3. * Kpp - 2. * Kpm + Kmm) +
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.);
358 
359  return (eta * (1. + model.Als(mu, FULLNLO) / 4. / M_PI * J3) * pow(model.Als(mu, FULLNLO), -2. / 9.));
360 }
361 
362 double EvolDF2::etatt(double m) const
363 {
364  double N = model.getNc();
365  double x = model.getMyMatching()->x_t(model.getMut());
366  double x2 = x * x;
367  double x3 = x2 * x;
368  double x4 = x3 * x;
369  double xm2 = (1 - x) * (1 - x);
370  double xm3 = xm2 * (1 - x);
371  //double xm4 = xm3 * (1 - x);
372  double logx = log(x);
373  //double Li2 = gsl_sf_dilog(1-x);
374 
375  double S0tt = (4. * x - 11. * x2 + x3) / 4. / xm2 -
376  3. * x3 / (2. * xm3) * logx;
377 
378  double Bt = 5. * (N - 1.) / 2. / N + 3. * (N * N - 1.) / 2. / N;
379 
380  double gamma0 = 6. * (N - 1.) / N;
381 
382  double gamma1[4] = {0.}, J[4] = {0.};
383 
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.));
386  J[i] = gamma0 * model.Beta1(3 + i) / 2. / model.Beta0(3 + i) / model.Beta0(3 + i)
387  - gamma1[i] / 2. / model.Beta0(3 + i);
388  }
389 
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));
392  //double AlsT = model.Als(model.getMut());
393  //double AlsB = model.Als(model.getMub());
394  //double AlsC = model.Als(model.getMuc());
395 
396  double eta = pow(model.Als(model.getMuc()), 6. / 27.) *
397  pow(model.Als(model.getMub()) / model.Als(model.getMuc()), 6. / 25.) *
398  pow(model.Als(model.getMut()) / model.Als(model.getMub()), 6. / 23.) *
399  (1. + model.Als(model.getMuc()) / 4. / M_PI * (J[1] - J[0]) +
400  model.Als(model.getMub()) / 4. / M_PI * (J[2] - J[1])
401  + model.Als(model.getMut()) / 4. / M_PI * (model.getMyMatching()->S1(x) / S0tt
402  + Bt - J[2] + gamma0 * log(model.getMut() / model.getMuw())
403  + 6 * (N * N - 1) / N * log(model.getMut() / model.getMuw()) * b));
404  /* double J3 = 6. * (N - 1.) / N * (model.Beta1(3) / 2. / model.Beta0(3) / model.Beta0(3)) -
405  (N - 1.) / (2. * N) * (-21. + 57. / N - 19./3. * N + 4.) / 2. / model.Beta0(3);*/
406 
407  return (eta * (1. + model.Als(m, FULLNLO) / 4. / M_PI * J[0]) * pow(model.Als(m, FULLNLO), -2. / 9.));
408 }
409 
410 /*double EvolDF2::S1tt() const {
411  double N = model.getNc();
412  double x = model.getMyMatching()->x_t(model.getMut());
413  double x2 = x * x;
414  double x3 = x2 * x;
415  double x4 = x3 * x;
416  double xm2 = (1 - x) * (1 - x);
417  double xm3 = xm2 * (1 - x);
418  double xm4 = xm3 * (1 - x);
419  double logx = log(x);
420  double Li2 = gsl_sf_dilog(1-x);
421 
422  double S0tt = (4. * x - 11. * x2 + x3) / 4. / xm2 -
423  3. * x3 / (2. * xm3) * logx;
424 
425  double Bt = 5. * (N - 1.) / 2. / N + 3. * (N * N - 1.) / 2. / N;
426 
427  double gamma0 = 6. * (N - 1.) / N;
428 
429  double gamma1[4] = {0.}, J[4] = {0.};
430 
431  for(int i = 0; i < 4; ++i){
432  gamma1[i] = (N - 1.)/(2. * N) * (-21. + 57./N - 19./3. * N + 4./3. * (i + 3.));
433  J[i] = gamma0 * model.Beta1(3 + i) / 2. / model.Beta0(3 + i) / model.Beta0(3 + i)
434  - gamma1[i] / 2. / model.Beta0(3 + i);
435  }
436 
437  double b = (4. - 22. * x + 15. * x2 + 2. * x3 + x4 - 18. * x2 * logx)
438  / ((-1. + x) * (-4. + 15. * x - 12. * x2 + x3 + 6. * x2 * logx));
439  double AlsT = model.Als(model.getMut());
440  double AlsB = model.Als(model.getMub());
441  double AlsC = model.Als(model.getMuc());
442 
443  return (pow(model.Als(model.getMuc()), 6./27.) *
444  pow(model.Als(model.getMub())/model.Als(model.getMuc()), 6./25.) *
445  pow(model.Als(model.getMut())/model.Als(model.getMub()), 6./23.) *
446  (1. + model.Als(model.getMuc())/4./M_PI * (J[1]-J[0]) +
447  model.Als(model.getMub())/4./M_PI * (J[2]-J[1])
448  + model.Als(model.getMut())/4./M_PI * (model.getMyMatching()->S1(x)/S0tt
449  + Bt - J[2] + gamma0 * log(model.getMut() / model.getMuw())
450  + 6 * (N * N - 1) / N * log(model.getMut() / model.getMuw()) * b)));
451 }*/
unsigned int dim
Definition: EvolDF2.h:90
double b[5][5][5]
Definition: EvolDF2.h:86
double etatt(double mu) const
Buras et al, hep-ph/9512380.
Definition: EvolDF2.cpp:362
double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:905
A class for constructing and defining operations on real matrices.
double Beta1(const double nf) const
The coefficient for a certain number of flavours .
Definition: QCD.cpp:892
const StandardModel & model
Definition: EvolDF2.h:89
virtual StandardModelMatching * getMyMatching() const
A get method to access the member pointer of type StandardModelMatching.
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
double etact(double mu) const
Buras et al, hep-ph/9512380.
Definition: EvolDF2.cpp:330
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
Definition: Particle.h:133
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
Definition: EvolDF2.cpp:11
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...
Definition: QCD.cpp:1004
double getNc() const
A get method to access the number of colours .
Definition: QCD.h:840
virtual ~EvolDF2()
destructor
Definition: EvolDF2.cpp:65
void setScales(double mu, double M)
Sets the upper and lower scale for the running of the Wilson Coefficients.
Definition: RGEvolutor.cpp:85
double alsMZ_cache
Definition: EvolDF2.h:91
A model class for the Standard Model.
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
double getMuw() const
A get method to retrieve the matching scale around the weak scale.
Definition: QCD.h:735
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
double c[3][5][5][5]
Definition: EvolDF2.h:87
double AboveTh(const double mu) const
The active flavour threshold above the scale as defined in QCD::Thresholds().
Definition: QCD.cpp:849
gslpp::matrix< double > * Evol(orders order)
Evolution matrix set at a fixed order of QCD coupling.
Definition: RGEvolutor.cpp:125
gslpp::matrix< double > & Df2Evol(double mu, double M, orders order, schemes scheme=NDR)
Definition: EvolDF2.cpp:147
double d[3][5][5][5]
Definition: EvolDF2.h:88
Definition: OrderScheme.h:33
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.
Definition: QCD.h:869
double a[5]
Definition: EvolDF2.h:85
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...
Definition: EvolDF2.cpp:68
Definition: OrderScheme.h:22
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
double getMuc() const
A get method to access the threshold between four- and three-flavour theory in GeV.
Definition: QCD.h:914
gslpp::matrix< double > * elem[MAXORDER_EW+1]
double S0(double, double) const
double etacc(double mu) const
Buras et al, hep-ph/9512380.
Definition: EvolDF2.cpp:227
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.
Definition: RGEvolutor.h:24
double Mz_cache
Definition: EvolDF2.h:92
double Nf(const double mu) const
The number of active flavour at scale .
Definition: QCD.cpp:867
double x_t(const double mu, const orders order=FULLNNLO) const
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
Definition: QCD.cpp:887
double Als4(const double mu) const
The value of at any scale with the number of flavours .
Definition: QCD.cpp:923
double getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV. ...
Definition: QCD.h:896
double getMz() const
A get method to access the mass of the boson .
double getAlsMz() const
A get method to access the value of .