a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
HeffDF2.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "HeffDF2.h"
9 #include "StandardModel.h"
10 #include "EvolDF2.h"
11 
13 : model(SM),
14  drNDRLRI(5, 5, 0),
15  coeffbd(5, NDR, NLO),
16  coeffbs(5, NDR, NLO),
17  coeffDd(5, NDR, NLO),
18  coeffk(5, NDR, NLO),
19  coeffmk(5, NDR, NLO),
20  evolDF2(new EvolDF2(5, NDR, NLO, SM))
21 {
22 
23  double Nc = SM.getNc();
24  drNDRLRI(0,0) = -(((-1. + Nc) * (-7. + log(4096.))) / Nc);
25  drNDRLRI(1,1) = (-2. * (-1. + 6. * Nc * Nc - 8. * log(2.) + Nc * (-13. + log(1024.)))) / (3. * Nc);
26  drNDRLRI(1,2) = (-2. * (13. - 10. * log(2.) + Nc * (-5. + log(256.)))) / (3. * Nc);
27  drNDRLRI(2,1) = (-8. + 6. * Nc * Nc + 20. * log(2.) - 8. * Nc * (1. + log(4.))) / (3. * Nc);
28  drNDRLRI(2,2) = (2. * (4. + Nc - 10. * Nc * log(2.) + log(256.))) / (3. * Nc);
29  drNDRLRI(3,3) = (2. - 4. * Nc * Nc + log(4.)) / Nc;
30  drNDRLRI(3,4) = 2. - log(4.);
31  drNDRLRI(4,3) = -2. * (1. + log(2.));
32  drNDRLRI(4,4) = (2. + log(4.)) / Nc;
33 }
34 
36 {}
37 
39 {
40 
41  std::vector<WilsonCoefficient> mc = model.getMatching().CMdbd2();
42 
43  coeffbd.setMu(mu);
44 
45  coeffbd.setScheme(mc[0].getScheme());
46 
47  orders ordDF2 = coeffbd.getOrder();
48  for (unsigned int i = 0; i < mc.size(); i++){
49  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
50  for (int j = LO; j <= ordDF2; j++){
51  for (int k = LO; k <= j; k++){
53  evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
54  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
55  }
56  }
57  }
58 
59  ChangeScheme(scheme, coeffbd, ordDF2);
60 
61  return coeffbd.getCoeff();
62 }
63 
65 {
66 
67  std::vector<WilsonCoefficient> mc;
68 
69  if (SM)
70  mc = model.getMatching().StandardModelMatching::CMdbs2();
71  else
72  mc = model.getMatching().CMdbs2();
73 
74  coeffbs.setMu(mu);
75 
76  coeffbs.setScheme(mc[0].getScheme());
77 
78  orders ordDF2 = coeffbs.getOrder();
79  for (unsigned int i = 0; i < mc.size(); i++){
80  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
81  for (int j = LO; j <= ordDF2; j++){
82  for (int k = LO; k <= j; k++){
84  evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
85  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
86  }
87  }
88  }
89 
90  ChangeScheme(scheme, coeffbs, ordDF2);
91 
92  return coeffbs.getCoeff();
93 }
94 
96 {
97 
98  std::vector<WilsonCoefficient> mc = model.getMatching().CMdd2();
99 
100  coeffDd.setMu(mu);
101 
102  coeffDd.setScheme(mc[0].getScheme());
103 
104  orders ordDF2 = coeffDd.getOrder();
105  for (unsigned int i = 0; i < mc.size(); i++){
106  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
107  for (int j = LO; j <= ordDF2; j++){
108  for (int k = LO; k <= j; k++){
110  evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
111  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
112  }
113  }
114  }
115 
116  ChangeScheme(scheme, coeffDd, ordDF2);
117 
118  return coeffDd.getCoeff();
119 }
120 
122 {
123 
124  std::vector<WilsonCoefficient> mc = model.getMatching().CMdk2();
126 
127  coeffk.setScheme(mc[0].getScheme());
128 
129  coeffk.setMu(mu);
130  coeffk.setCoeff(zero,LO);
131  coeffk.setCoeff(zero,NLO);
132 
133  orders ordDF2 = coeffk.getOrder();
134  for (unsigned int i = 0; i < mc.size(); i++){
135  if (i == 0){
136  coeffk.setCoeff(0, evolDF2->etatt(mu) * model.getMatching().S0tt()
137  + evolDF2->etacc(mu) * model.getMatching().S0c()
138  + evolDF2->etact(mu) * model.getMatching().S0ct(),
139  NLO);
140 #if SUSYFIT_DEBUG & 2
141  std::cout << "mu = " << mu<< ", S0tt = " << model.getMatching().S0tt() <<
142  ", S0cc = " << model.getMatching().S0c() <<
143  ", S0ct = " << model.getMatching().S0ct() << std::endl;
144  std::cout << ", etatt = " << evolDF2->etatt(mu) <<
145  ", etacc = " << evolDF2->etacc(mu) <<
146  ", etact = " << evolDF2->etact(mu) << std::endl;
147  std::cout << "tt = " << evolDF2->etatt(mu)*model.getMatching().S0tt() <<
148  ", cc = " << evolDF2->etacc(mu)*model.getMatching().S0c() <<
149  ", ct = " << evolDF2->etact(mu)*model.getMatching().S0ct() << std::endl;
150 #endif
151 
152  }
153  else {
154  ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
155  for (int j = LO; j <= ordDF2; j++){
156  for (int k = LO; k <= j; k++){
158  evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
159  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
160  }
161  }
162  }
163  }
164 
165  ChangeScheme(scheme, coeffk, ordDF2);
166 
167  return coeffk.getCoeff();
168 }
169 
170 
172 {
173 
174  const std::vector<WilsonCoefficient>& mc = model.getMatching().CMdk2();
176 
177  coeffmk.setMu(mu);
178 
179  orders ordDF2 = coeffmk.getOrder();
180  for (unsigned int i = 0; i < mc.size(); i++){
181  if (i == 0){
182  coeffmk.setCoeff(zero, NLO);
183  coeffmk.setCoeff(zero, LO);
184  }
185  else {
186  for (int j = LO; j <= ordDF2; j++){
187  for (int k = LO; k <= j; k++){
189  evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
190  (*(mc[i].getCoeff(orders(j - k)))), orders(j));
191  }
192  }
193  }
194  }
195 
196  ChangeScheme(scheme, coeffmk, ordDF2);
197 
198  return coeffmk.getCoeff();
199 }
200 
202 {
203  schemes schin = c_in.getScheme();
204  if (schout == schin || order == LO) return;
205  WilsonCoefficient c_out(5, schout, order);
206  switch(schin) {
207  case NDR:
208  switch(schout) {
209  case LRI:
210  c_out.setCoeff(*c_in.getCoeff(NLO) -
211  model.Als(c_in.getMu()) / 4. / M_PI * drNDRLRI.transpose()*
212  (*c_in.getCoeff(LO)), NLO);
213  c_in.setCoeff(*c_out.getCoeff(NLO),NLO);
214  c_in.setScheme(schout);
215  break;
216  default:
217  throw std::runtime_error("HeffDF2::ChangeScheme(): out scheme not implemented");
218  }
219  break;
220  default:
221  throw std::runtime_error("HeffDF2::ChangeScheme(): in scheme not implemented");
222  }
223 }
224 
WilsonTemplate::setScheme
void setScheme(schemes scheme)
Definition: WilsonTemplate.h:103
WilsonCoefficient
A class for the Wilson coefficients.
Definition: WilsonCoefficient.h:22
HeffDF2::drNDRLRI
gslpp::matrix< double > drNDRLRI
Definition: HeffDF2.h:128
HeffDF2::ChangeScheme
void ChangeScheme(schemes schout, WilsonCoefficient &c_in, orders order)
change scheme for a Wilson Coefficient
Definition: HeffDF2.cpp:201
StandardModelMatching::CMdbd2
virtual std::vector< WilsonCoefficient > & CMdbd2()
,
Definition: StandardModelMatching.cpp:999
HeffDF2::ComputeCoeffBd
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:38
StandardModelMatching::CMdbs2
virtual std::vector< WilsonCoefficient > & CMdbs2()
,
Definition: StandardModelMatching.cpp:1049
HeffDF2::ComputeCoeffBs
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR, bool SM=false)
Definition: HeffDF2.cpp:64
LO
Definition: OrderScheme.h:33
HeffDF2::HeffDF2
HeffDF2(const StandardModel &SM)
constructor
Definition: HeffDF2.cpp:12
StandardModel.h
NDR
Definition: OrderScheme.h:21
gslpp::matrix< double >::transpose
matrix< double > transpose() const
Definition: gslpp_matrix_double.cpp:166
WilsonTemplate::getMu
double getMu() const
Definition: WilsonTemplate.h:75
gslpp::log
complex log(const complex &z)
Definition: gslpp_complex.cpp:342
HeffDF2::ComputeCoeffK
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:121
EvolDF2
Definition: EvolDF2.h:15
WilsonTemplate::getScheme
schemes getScheme() const
Definition: WilsonTemplate.h:98
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:477
HeffDF2::coeffk
WilsonCoefficient coeffk
Definition: HeffDF2.h:132
HeffDF2::coeffbs
WilsonCoefficient coeffbs
Definition: HeffDF2.h:130
WilsonTemplate::getOrder
orders getOrder() const
Definition: WilsonTemplate.h:65
HeffDF2::coeffbd
WilsonCoefficient coeffbd
Definition: HeffDF2.h:129
WilsonCoefficient::setCoeff
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
Definition: WilsonCoefficient.h:34
schemes
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
HeffDF2::model
const StandardModel & model
Definition: HeffDF2.h:127
HeffDF2.h
StandardModel::Als
double Als(double mu, orders order=FULLNLO, bool qed_flag=false, bool Nf_thr=true) const
The running QCD coupling in the scheme including QED corrections.
Definition: StandardModel.cpp:602
WilsonTemplate::setMu
virtual void setMu(double mu)
Definition: WilsonTemplate.h:92
HeffDF2::coeffDd
WilsonCoefficient coeffDd
Definition: HeffDF2.h:131
orders
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
EvolDF2.h
LRI
Definition: OrderScheme.h:23
StandardModelMatching::CMdd2
virtual std::vector< WilsonCoefficient > & CMdd2()
,
Definition: StandardModelMatching.cpp:1205
StandardModel::getMatching
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
Definition: StandardModel.h:952
HeffDF2::coeffmk
WilsonCoefficient coeffmk
Definition: HeffDF2.h:133
HeffDF2::evolDF2
std::unique_ptr< EvolDF2 > evolDF2
Definition: HeffDF2.h:135
WilsonCoefficient::getCoeff
gslpp::vector< gslpp::complex > ** getCoeff() const
Definition: WilsonCoefficient.h:29
QCD::getNc
double getNc() const
A get method to access the number of colours .
Definition: QCD.h:505
NLO
Definition: OrderScheme.h:34
HeffDF2::ComputeCoeffdd
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:95
HeffDF2::ComputeCoeffmK
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR)
for Delta M_K the SM contribution is set to zero
Definition: HeffDF2.cpp:171
gslpp::vector< gslpp::complex >
HeffDF2::~HeffDF2
virtual ~HeffDF2()
destructor
Definition: HeffDF2.cpp:35