HeffDF2.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 "HeffDF2.h"
9 #include "QCD.h"
10 
12 : model(SM),
13  drNDRLRI(5, 5, 0),
14  coeffbd(5, NDR, NLO),
15  coeffbs(5, NDR, NLO),
16  coeffDd(5, NDR, NLO),
17  coeffk(5, NDR, NLO),
18  coeffmk(5, NDR, NLO),
19  evolDF2(5, NDR, NLO, SM)
20 {
21 
22  double Nc = SM.getNc();
23  drNDRLRI(0,0) = -(((-1. + Nc) * (-7. + log(4096.))) / Nc);
24  drNDRLRI(1,1) = (-2. * (-1. + 6. * Nc * Nc - 8. * log(2.) + Nc * (-13. + log(1024.)))) / (3. * Nc);
25  drNDRLRI(1,2) = (-2. * (13. - 10. * log(2.) + Nc * (-5. + log(256.)))) / (3. * Nc);
26  drNDRLRI(2,1) = (-8. + 6. * Nc * Nc + 20. * log(2.) - 8. * Nc * (1. + log(4.))) / (3. * Nc);
27  drNDRLRI(2,2) = (2. * (4. + Nc - 10. * Nc * log(2.) + log(256.))) / (3. * Nc);
28  drNDRLRI(3,3) = (2. - 4. * Nc * Nc + log(4.)) / Nc;
29  drNDRLRI(3,4) = 2. - log(4.);
30  drNDRLRI(4,3) = -2. * (1. + log(2.));
31  drNDRLRI(4,4) = (2. + log(4.)) / Nc;
32 }
33 
35 {}
36 
38 {
39 
40  std::vector<WilsonCoefficient>& mc = model.getMyMatching()->CMdbd2();
41 
42  coeffbd.setMu(mu);
43 
44  coeffbd.setScheme(mc[0].getScheme());
45 
46  orders ordDF2 = coeffbd.getOrder();
47  for (unsigned int i = 0; i < mc.size(); i++){
48  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
49  for (int j = LO; j <= ordDF2; j++){
50  for (int k = LO; k <= j; k++){
52  evolDF2.Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
53  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
54  }
55  }
56  }
57 
58  ChangeScheme(scheme, coeffbd, ordDF2);
59 
60  return coeffbd.getCoeff();
61 }
62 
64 {
65 
66  std::vector<WilsonCoefficient>& mc = model.getMyMatching()->CMdbs2();
67 
68  coeffbs.setMu(mu);
69 
70  coeffbs.setScheme(mc[0].getScheme());
71 
72  orders ordDF2 = coeffbs.getOrder();
73  for (unsigned int i = 0; i < mc.size(); i++){
74  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
75  for (int j = LO; j <= ordDF2; j++){
76  for (int k = LO; k <= j; k++){
78  evolDF2.Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
79  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
80  }
81  }
82  }
83 
84  ChangeScheme(scheme, coeffbs, ordDF2);
85 
86  return coeffbs.getCoeff();
87 }
88 
90 {
91 
92  std::vector<WilsonCoefficient>& mc = model.getMyMatching()->CMdd2();
93 
94  coeffDd.setMu(mu);
95 
96  coeffDd.setScheme(mc[0].getScheme());
97 
98  orders ordDF2 = coeffDd.getOrder();
99  for (unsigned int i = 0; i < mc.size(); i++){
100  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
101  for (int j = LO; j <= ordDF2; j++){
102  for (int k = LO; k <= j; k++){
104  evolDF2.Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
105  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
106  }
107  }
108  }
109 
110  ChangeScheme(scheme, coeffDd, ordDF2);
111 
112  return coeffDd.getCoeff();
113 }
114 
116 {
117 
118  std::vector<WilsonCoefficient>& mc = model.getMyMatching()->CMdk2();
120 
121  coeffk.setScheme(mc[0].getScheme());
122 
123  coeffk.setMu(mu);
124  coeffk.setCoeff(zero,LO);
125  coeffk.setCoeff(zero,NLO);
126 
127  orders ordDF2 = coeffk.getOrder();
128  for (unsigned int i = 0; i < mc.size(); i++){
129  if (i == 0){
131  + evolDF2.etacc(mu) * model.getMyMatching()->S0c()
132  + evolDF2.etact(mu) * model.getMyMatching()->S0ct(),
133  NLO);
134 #if SUSYFIT_DEBUG & 2
135  std::cout << "mu = " << mu<< ", S0tt = " << model.getMyMatching()->S0tt() <<
136  ", S0cc = " << model.getMyMatching()->S0c() <<
137  ", S0ct = " << model.getMyMatching()->S0ct() << std::endl <<
138  ", etatt = " << evolDF2.etatt(mu) <<
139  ", etacc = " << evolDF2.etacc(mu) <<
140  ", etact = " << evolDF2.etact(mu) << std::endl <<
141  "tt = " << evolDF2.etatt(mu)*model.getMyMatching()->S0tt() <<
142  ", cc = " << evolDF2.etacc(mu)*model.getMyMatching()->S0c() <<
143  ", ct = " << evolDF2.etact(mu)*model.getMyMatching()->S0ct() << std::endl;
144 #endif
145 
146  }
147  else {
148  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
149  for (int j = LO; j <= ordDF2; j++){
150  for (int k = LO; k <= j; k++){
152  evolDF2.Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
153  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
154  }
155  }
156  }
157  }
158 
159  ChangeScheme(scheme, coeffk, ordDF2);
160 
161  return coeffk.getCoeff();
162 }
163 
164 
166 {
167 
168  std::vector<WilsonCoefficient>& mc = model.getMyMatching()->CMdk2();
170 
171  coeffmk.setMu(mu);
172 
173  orders ordDF2 = coeffmk.getOrder();
174  for (unsigned int i = 0; i < mc.size(); i++){
175  if (i == 0){
176  coeffmk.setCoeff(zero, NLO);
177  coeffmk.setCoeff(zero, LO);
178  }
179  else {
180  for (int j = LO; j <= ordDF2; j++){
181  for (int k = LO; k <= j; k++){
183  evolDF2.Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
184  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
185  }
186  }
187  }
188  }
189 
190  ChangeScheme(scheme, coeffmk, ordDF2);
191 
192  return coeffmk.getCoeff();
193 }
194 
196 {
197  schemes schin = c_in.getScheme();
198  if (schout == schin || order == LO) return;
199  WilsonCoefficient c_out(5, schout, order);
200  switch(schin) {
201  case NDR:
202  switch(schout) {
203  case LRI:
204  c_out.setCoeff(*c_in.getCoeff(NLO) -
205  model.Als(c_in.getMu()) / 4. / M_PI * drNDRLRI.transpose()*
206  (*c_in.getCoeff(LO)), NLO);
207  c_in.setCoeff(*c_out.getCoeff(NLO),NLO);
208  c_in.setScheme(schout);
209  break;
210  default:
211  throw std::runtime_error("HeffDF2::ChangeScheme(): out scheme not implemented");
212  }
213  break;
214  default:
215  throw std::runtime_error("HeffDF2::ChangeScheme(): in scheme not implemented");
216  }
217 }
218 
virtual void setMu(double mu)
WilsonCoefficient coeffbs
Definition: HeffDF2.h:127
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:63
double etatt(double mu) const
Buras et al, hep-ph/9512380.
Definition: EvolDF2.cpp:362
virtual StandardModelMatching * getMyMatching() const
A get method to access the member pointer of type StandardModelMatching.
A class for the Wilson coefficients.
gslpp::complex S0ct() const
hep-ph/9512380
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
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR)
for Delta M_K the SM contribution is set to zero
Definition: HeffDF2.cpp:165
const StandardModel & model
Definition: HeffDF2.h:124
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 std::vector< WilsonCoefficient > & CMdbd2()
,
gslpp::vector< gslpp::complex > ** getCoeff() const
schemes getScheme() const
A model class for the Standard Model.
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
gslpp::matrix< double > drNDRLRI
Definition: HeffDF2.h:125
void setScheme(schemes scheme)
gslpp::complex S0tt() const
hep-ph/9512380v1
gslpp::matrix< double > & Df2Evol(double mu, double M, orders order, schemes scheme=NDR)
Definition: EvolDF2.cpp:147
WilsonCoefficient coeffmk
Definition: HeffDF2.h:130
Definition: OrderScheme.h:33
EvolDF2 evolDF2
Definition: HeffDF2.h:132
HeffDF2(const StandardModel &SM)
constructor
Definition: HeffDF2.cpp:11
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:89
WilsonCoefficient coeffk
Definition: HeffDF2.h:129
gslpp::complex S0c() const
hep-ph/9512380
double getMu() const
WilsonCoefficient coeffbd
Definition: HeffDF2.h:126
virtual std::vector< WilsonCoefficient > & CMdbs2()
,
void ChangeScheme(schemes schout, WilsonCoefficient &c_in, orders order)
change scheme for a Wilson Coefficient
Definition: HeffDF2.cpp:195
virtual ~HeffDF2()
destructor
Definition: HeffDF2.cpp:34
virtual std::vector< WilsonCoefficient > & CMdk2()
double etacc(double mu) const
Buras et al, hep-ph/9512380.
Definition: EvolDF2.cpp:227
complex log(const complex &z)
orders getOrder() const
WilsonCoefficient coeffDd
Definition: HeffDF2.h:128
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:37
virtual std::vector< WilsonCoefficient > & CMdd2()
,
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:115