EvolDF2 Class Reference

#include <EvolDF2.h>

Inheritance diagram for EvolDF2:
[legend]
Collaboration diagram for EvolDF2:
[legend]

Detailed Description

Definition at line 15 of file EvolDF2.h.

Public Member Functions

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, QLR, QSLL) used in Buras et.al. hep-ph/0005183 (basis = 1) More...
 
gslpp::matrix< double > & Df2Evol (double mu, double M, orders order, schemes scheme=NDR)
 
double etacc (double mu) const
 Buras et al, hep-ph/9512380. More...
 
double etact (double mu) const
 Buras et al, hep-ph/9512380. More...
 
double etatt (double mu) const
 Buras et al, hep-ph/9512380. More...
 
 EvolDF2 (unsigned int dim_i, schemes scheme, orders order, const StandardModel &model)
 constructor More...
 
virtual ~EvolDF2 ()
 destructor More...
 
- Public Member Functions inherited from RGEvolutor
gslpp::matrix< double > * Evol (orders order)
 Evolution matrix set at a fixed order of QCD coupling. More...
 
gslpp::matrix< double > * Evol (orders_ew order_ew)
 Evolution matrix set at a fixed order of Electroweak coupling. More...
 
gslpp::matrix< double > ** getEvol () const
 
double getM () const
 Retrieve the upper scale of the Wilson Coefficients. More...
 
 RGEvolutor (unsigned int dim, schemes scheme, orders order)
 constructor More...
 
 RGEvolutor (unsigned int dim, schemes scheme, orders order, orders_ew order_ew)
 constructor More...
 
void setEvol (unsigned int i, unsigned int j, double x, orders order_i)
 
void setEvol (unsigned int i, unsigned int j, double x, orders order_i, orders_ew order_ew)
 
void setEvol (const gslpp::matrix< double > &m, orders order_i)
 
void setEvol (const gslpp::matrix< double > &m, orders_ew order_ew_i)
 
void setM (double M)
 Sets the upper scale for the running of the Wilson Coefficients. More...
 
void setMu (double mu)
 Sets the lower scale for the running of the Wilson Coefficients. More...
 
void setScales (double mu, double M)
 Sets the upper and lower scale for the running of the Wilson Coefficients. More...
 
virtual ~RGEvolutor ()
 destructor More...
 
- Public Member Functions inherited from WilsonTemplate< gslpp::matrix< double > >
double getMu () const
 
orders getOrder () const
 
orders_ew getOrder_ew () const
 
schemes getScheme () const
 
unsigned int getSize () const
 
virtual void resetCoefficient ()
 
void setScheme (schemes scheme)
 
 WilsonTemplate (const WilsonTemplate< gslpp::matrix< double > > &orig)
 
 WilsonTemplate (unsigned int dim, schemes scheme_i, orders order_i, orders_ew order_ew_i=NULL_ew)
 
virtual ~WilsonTemplate ()
 

Private Member Functions

void Df2Evol (double mu, double M, double nf, schemes scheme)
 

Private Attributes

double a [5]
 
double alsMZ_cache
 
double b [5][5][5]
 
double c [3][5][5][5]
 
double d [3][5][5][5]
 
unsigned int dim
 
const StandardModelmodel
 
double Mz_cache
 

Additional Inherited Members

- Protected Member Functions inherited from WilsonTemplate< gslpp::matrix< double > >
gslpp::matrix< double > * Elem (orders order) const
 
gslpp::matrix< double > * Elem (orders_ew order_ew) const
 
void setElem (const gslpp::matrix< double > &v, orders order_i)
 
void setElem (const gslpp::matrix< double > &v, orders_ew order_ew_i)
 
- Protected Attributes inherited from RGEvolutor
double M
 
- Protected Attributes inherited from WilsonTemplate< gslpp::matrix< double > >
gslpp::matrix< double > * elem [MAXORDER_EW+1]
 
double mu
 
orders order
 
orders_ew order_ew
 
schemes scheme
 
unsigned int size
 

Constructor & Destructor Documentation

EvolDF2::EvolDF2 ( unsigned int  dim_i,
schemes  scheme,
orders  order,
const StandardModel model 
)

constructor

Parameters
dim
scheme
order
model

Definition at line 11 of file EvolDF2.cpp.

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 }
unsigned int dim
Definition: EvolDF2.h:90
double b[5][5][5]
Definition: EvolDF2.h:86
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
double c[3][5][5][5]
Definition: EvolDF2.h:87
double d[3][5][5][5]
Definition: EvolDF2.h:88
Definition: OrderScheme.h:33
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
A class for constructing and defining operations on real vectors.
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
Definition: QCD.cpp:887
RGEvolutor(unsigned int dim, schemes scheme, orders order)
constructor
Definition: RGEvolutor.cpp:10
EvolDF2::~EvolDF2 ( )
virtual

destructor

Definition at line 65 of file EvolDF2.cpp.

66 {}

Member Function Documentation

gslpp::matrix< double > EvolDF2::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, QLR, QSLL) used in Buras et.al. hep-ph/0005183 (basis = 1)

Parameters
order
nfnumber of active flavours
basisbasis identifier (0: ciuchini, 1: buras)
Returns
Anomalous dimension for DeltaF=2 processes

Definition at line 68 of file EvolDF2.cpp.

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 }
unsigned int dim
Definition: EvolDF2.h:90
A class for constructing and defining operations on real matrices.
const StandardModel & model
Definition: EvolDF2.h:89
double getNc() const
A get method to access the number of colours .
Definition: QCD.h:840
Definition: OrderScheme.h:33
gslpp::matrix< double > & EvolDF2::Df2Evol ( double  mu,
double  M,
orders  order,
schemes  scheme = NDR 
)
Parameters
mulow energy scale
Mmatching scale
order
scheme
Returns
the Wilson coefficients evolved from the scale M to the scale mu

Definition at line 147 of file EvolDF2.cpp.

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 }
const StandardModel & model
Definition: EvolDF2.h:89
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
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 M
Definition: RGEvolutor.h:142
Definition: OrderScheme.h:22
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 getMz() const
A get method to access the mass of the boson .
double getAlsMz() const
A get method to access the value of .
void EvolDF2::Df2Evol ( double  mu,
double  M,
double  nf,
schemes  scheme 
)
private

Definition at line 191 of file EvolDF2.cpp.

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 }
unsigned int dim
Definition: EvolDF2.h:90
double b[5][5][5]
Definition: EvolDF2.h:86
A class for constructing and defining operations on real matrices.
const StandardModel & model
Definition: EvolDF2.h:89
complex pow(const complex &z1, const complex &z2)
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 c[3][5][5][5]
Definition: EvolDF2.h:87
double d[3][5][5][5]
Definition: EvolDF2.h:88
Definition: OrderScheme.h:33
double M
Definition: RGEvolutor.h:142
double a[5]
Definition: EvolDF2.h:85
gslpp::matrix< double > * elem[MAXORDER_EW+1]
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
Definition: QCD.cpp:887
double EvolDF2::etacc ( double  mu) const

Buras et al, hep-ph/9512380.

Parameters
mu
Returns
the NLO corrective factor for the charm-charm contribution to the kaon oscillations

Definition at line 227 of file EvolDF2.cpp.

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 }
double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:905
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
complex pow(const complex &z1, const complex &z2)
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
double getMuw() const
A get method to retrieve the matching scale around the weak scale.
double d[3][5][5][5]
Definition: EvolDF2.h:88
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
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
complex log(const complex &z)
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
Definition: QCD.cpp:887
double EvolDF2::etact ( double  mu) const

Buras et al, hep-ph/9512380.

Parameters
mu
Returns
the NLO corrective factor for the charm-top contribution to the kaon oscillations

Definition at line 330 of file EvolDF2.cpp.

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 }
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.
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 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 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, .
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
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
double S0(double, double) const
complex log(const complex &z)
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 EvolDF2::etatt ( double  mu) const

Buras et al, hep-ph/9512380.

Parameters
mu
Returns
the NLO corrective factor for the top-top contribution to the kaon oscillations

Definition at line 362 of file EvolDF2.cpp.

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 }
double b[5][5][5]
Definition: EvolDF2.h:86
double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
Definition: QCD.h:905
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.
complex pow(const complex &z1, const complex &z2)
double S1(double x) const
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
double getMuw() const
A get method to retrieve the matching scale around the weak scale.
double getMuc() const
A get method to access the threshold between four- and three-flavour theory in GeV.
Definition: QCD.h:914
complex log(const complex &z)
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 getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV. ...
Definition: QCD.h:896

Member Data Documentation

double EvolDF2::a[5]
private

Definition at line 85 of file EvolDF2.h.

double EvolDF2::alsMZ_cache
private

Definition at line 91 of file EvolDF2.h.

double EvolDF2::b[5][5][5]
private

Definition at line 86 of file EvolDF2.h.

double EvolDF2::c[3][5][5][5]
private

Definition at line 87 of file EvolDF2.h.

double EvolDF2::d[3][5][5][5]
private

Definition at line 88 of file EvolDF2.h.

unsigned int EvolDF2::dim
private

Definition at line 90 of file EvolDF2.h.

const StandardModel& EvolDF2::model
private

Definition at line 89 of file EvolDF2.h.

double EvolDF2::Mz_cache
private

Definition at line 92 of file EvolDF2.h.


The documentation for this class was generated from the following files: