a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
HeffDS1.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 "HeffDS1.h"
9 #include "StandardModel.h"
10 #include "EvolDF1nlep.h"
11 #include "EvolDB1Mll.h"
12 
14 : model(SM),
15  coeffds1 (10, NDR, NLO, NLO_QED11), coeffds1cc(10, NDR, NLO),
16  coeffds1pnunu(1, NDR, NLO, NLO_QED11), coeffds1mumu(1, NDR, NLO),
17  u(new EvolDF1nlep(10, NDR, NLO, NLO_QED11, SM)), uM(new EvolDB1Mll(13, NDR, NLO, SM)),
18  DS1cce(10, 0.), DS1cc(10, 0.)
19 {}
20 
22 
24 {
25 
26  const std::vector<WilsonCoefficient>& mcb = model.getMatching().CMK();
27  const std::vector<WilsonCoefficient>& mcbCC = model.getMatching().CMKCC();
28 
29  coeffds1.setMu(mu); //inizializes to zero the coefficients
30  coeffds1cc.setMu(mu);
31 
32  orders ordDF1 = coeffds1.getOrder();
33 
34  switch(scheme) {
35 
36  case NDR:
37  for (unsigned int i = 0; i < mcb.size(); i++){
38 
39  //evolves until the chram trheshold
40  if (i == 0){
41  for (int j = LO; j <= ordDF1; j++){
42  for (int k = LO; k <= j; k++){
43 
44  //Evolves the LO terms and the ones proportional to alpha_s
46  u->Df1Evolnlep(model.getMuc(), mcb[i].getMu(),
47  orders(k), NO_QED, mcb[i].getScheme())*
48  (*(mcb[i].getCoeff(orders(j - k)))), orders(j));
49 
50  //Evolves terms proportional to alpha_e and alpha_e/aplha_s
52  u->Df1Evolnlep(model.getMuc(), mcb[i].getMu(), NNLO,
53  orders_qed(k+4), mcb[i].getScheme()) *
54  (*(mcb[i].getCoeff(orders(j - k)))), orders_qed(j+4));
55 
56  //Evolves the open-charm current*current part
58  u->Df1Evolnlep(model.getMuc(), mcbCC[i].getMu(),
59  orders(k), NO_QED, mcbCC[i].getScheme()) *
60  (*(mcbCC[i].getCoeff(orders(j - k)))), orders(j));
61  }
62 
64  u->Df1Evolnlep(model.getMuc(), mcb[i].getMu(), orders(LO),
65  NO_QED, mcb[i].getScheme()) *
66  (*(mcb[i].getCoeff(orders_qed(NLO_QED11)))), orders_qed(NLO_QED11));
67  }
68 
69  //Matching at the charm threshold
70  CharmMatch();
71 
72  //evolves below the chram trheshold
73  for (int j = LO; j <= ordDF1; j++){
74  for (int k = LO; k <= j; k++){
75 
77  u->Df1Evolnlep(mu, model.getMuc(), orders(k),
78  NO_QED, mcb[i].getScheme())*
79  (*(mcb[i].getCoeff(orders(j - k)))), orders(j));
80 
82  u->Df1Evolnlep(mu, model.getMuc(), NNLO,
83  orders_qed(k+4), mcb[i].getScheme()) *
84  (*(mcb[i].getCoeff(orders(j - k)))), orders_qed(j+4));
85  }
86  }
87 
89  u->Df1Evolnlep(mu, model.getMuc(), orders(LO),
90  NO_QED, mcb[i].getScheme()) *
91  (*(mcb[i].getCoeff(orders_qed(NLO_QED11)))), orders_qed(NLO_QED11));
92  }
93 
94  if (i>0){
95  //if (model.BasisFlag() == 0){
96  //evolves according to the Misiak Basis
97  for (int j = LO; j <= ordDF1; j++){
98  for (int k = LO; k <= j; k++){
100  uM->Df1EvolMll(mu, mcb[i].getMu(), orders(k), mcb[i].getScheme())*
101  (*(mcb[i].getCoeff(orders(j - k)))), orders(j));
102  }
103  }
104  /*}else{
105  for (int j = LO; j <= ordDF1; j++){
106  for (int k = LO; k <= j; k++){
107 
108  //Evolves the LO terms and the ones proportional to alpha_s
109  coeffds1.setCoeff(*coeffds1.getCoeff(orders(j)) +
110  u.Df1Evolnlep(mu, mcb[i].getMu(),
111  orders(k), NO_QED, mcb[i].getScheme())*
112  (*(mcb[i].getCoeff(orders(j - k)))), orders(j));
113 
114  //Evolves terms proportional to alpha_e and alpha_e/aplha_s
115  coeffds1.setCoeff(*coeffds1.getCoeff(orders_qed(j+4)) +
116  u.Df1Evolnlep(mu, mcb[i].getMu(), NNLO,
117  orders_qed(k+4), mcb[i].getScheme()) *
118  (*(mcb[i].getCoeff(orders(j - k)))), orders_qed(j+4));
119  }
120  }
121  coeffds1.setCoeff(*coeffds1.getCoeff(orders_qed(NLO_QED)) +
122  u.Df1Evolnlep(mu, mcb[i].getMu(), orders(LO),
123  NO_QED, mcb[i].getScheme()) *
124  (*(mcb[i].getCoeff(orders_qed(NLO_QED)))), orders_qed(NLO_QED));
125  }*/
126  }
127  }
128  return coeffds1.getCoeff();
129 
130  default:
131  throw "HeffDS1::ComputeCoeffDS1PP(double mu, schemes scheme): scheme not implemented";
132  }
133 }
134 
136 {
137 
138  const std::vector<WilsonCoefficient>& mcb = model.getMatching().CMkpnn();
139 
140  orders ordDF1 = coeffds1pnunu.getOrder();
141  orders_qed ordDF1_ew = coeffds1pnunu.getOrder_qed();
142 
143  for (unsigned int i = 0; i < mcb.size(); i++){
144  for (int j = LO; j <= ordDF1; j++){
146  + *mcb[i].getCoeff(orders(j)), orders(j));
147  }
148  for (int j = LO_QED; j <= ordDF1_ew; j++){
150  + *mcb[i].getCoeff(orders(j)), orders(j));
151  }
152  }
153 
154  return coeffds1pnunu.getCoeff();
155 }
156 
158 {
159 
160  const std::vector<WilsonCoefficient>& mcb = model.getMatching().CMkmm();
161 
162  orders ordDF1 = coeffds1mumu.getOrder();
163 
164  for (unsigned int i = 0; i < mcb.size(); i++){
165  for (int j = LO; j <= ordDF1; j++){
167  + *mcb[i].getCoeff(orders(j)), orders(j));
168  }
169  }
170 
171  return coeffds1mumu.getCoeff();
172 }
173 
175 {
178 
180 
181  DS1cc.assign(2, (-model.Als(model.getMuc())/24./M_PI)*(-2./3.*
182  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cc(1)));
183  DS1cc.assign(3, (model.Als(model.getMuc())/8./M_PI)*(-2./3.*
184  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cc(1)));
185  DS1cc.assign(4, (-model.Als(model.getMuc())/24./M_PI)*(-2./3.*
186  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cc(1)));
187  DS1cc.assign(5, (model.Als(model.getMuc())/8./M_PI)*(-2./3.*
188  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cc(1)));
189  DS1cc.assign(8, 0.);
190  DS1cc.assign(7, 0.);
191  DS1cc.assign(8, 0.);
192  DS1cc.assign(9, 0.);
193 
194  DS1cc.assign(2, (-model.Als(model.getMuc())/24./M_PI)*(-2./3.*
195  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cce(1)));
196  DS1cc.assign(3, (model.Als(model.getMuc())/8./M_PI)*(-2./3.*
197  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cce(1)));
198  DS1cc.assign(4, (-model.Als(model.getMuc())/24./M_PI)*(-2./3.*
199  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cce(1)));
200  DS1cc.assign(5, (model.Als(model.getMuc())/8./M_PI)*(-2./3.*
201  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*DS1cce(1)));
202  DS1cce.assign(8, -model.getAle()/6./M_PI*4./9.*
203  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*(3.*DS1cc(0)+DS1cc(1)));
204  DS1cce.assign(7, 0.);
205  DS1cce.assign(8, -model.getAle()/6./M_PI*4./9.*
206  (log(mc*mc/model.getMuc()/model.getMuc())+1.)*(3.*DS1cc(0)+DS1cc(1)));
207  DS1cce.assign(9, 0.);
208  DS1cce.assign(0, 0.);
209  DS1cce.assign(1, 0.);
210 
213 
215 
218 
219  coeffds1cc.setMu(0.);
220 }
HeffDS1::HeffDS1
HeffDS1(const StandardModel &SM)
constructor
Definition: HeffDS1.cpp:13
EvolDF1nlep.h
NO_QED
Definition: OrderScheme.h:49
HeffDS1::DS1cce
gslpp::vector< gslpp::complex > DS1cce
Definition: HeffDS1.h:82
HeffDS1::coeffds1
WilsonCoefficient coeffds1
Definition: HeffDS1.h:78
NLO_QED11
Definition: OrderScheme.h:51
WilsonTemplate::getOrder_qed
orders_qed getOrder_qed() const
Definition: WilsonTemplate.h:70
LO
Definition: OrderScheme.h:33
HeffDS1::DS1cc
gslpp::vector< gslpp::complex > DS1cc
Definition: HeffDS1.h:82
HeffDS1::u
std::unique_ptr< EvolDF1nlep > u
Definition: HeffDS1.h:79
StandardModel.h
QCD::CHARM
Definition: QCD.h:326
NDR
Definition: OrderScheme.h:21
gslpp::log
complex log(const complex &z)
Definition: gslpp_complex.cpp:342
EvolDF1nlep
Evolutor Class
Definition: EvolDF1nlep.h:16
HeffDS1::CharmMatch
void CharmMatch()
compute the matching at the charm threshold within the SM, NDR scheme implemented
Definition: HeffDS1.cpp:174
EvolDB1Mll
Definition: EvolDB1Mll.h:14
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:477
HeffDS1::coeffds1mumu
WilsonCoefficient coeffds1mumu
Definition: HeffDS1.h:78
HeffDS1::~HeffDS1
virtual ~HeffDS1()
destructor
Definition: HeffDS1.cpp:21
HeffDS1::ComputeCoeffDS1pnunu
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1pnunu()
Definition: HeffDS1.cpp:135
HeffDS1.h
WilsonTemplate::getOrder
orders getOrder() const
Definition: WilsonTemplate.h:65
WilsonCoefficient::setCoeff
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
Definition: WilsonCoefficient.h:34
Particle::getMass
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
schemes
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
LO_QED
Definition: OrderScheme.h:50
QCD::getMuc
double getMuc() const
A get method to access the threshold between four- and three-flavour theory in GeV.
Definition: QCD.h:579
HeffDS1::coeffds1cc
WilsonCoefficient coeffds1cc
Definition: HeffDS1.h:78
NNLO
Definition: OrderScheme.h:35
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
QCD::getQuarks
Particle getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:534
WilsonTemplate::setMu
virtual void setMu(double mu)
Definition: WilsonTemplate.h:92
HeffDS1::ComputeCoeffDS1mumu
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1mumu()
Definition: HeffDS1.cpp:157
orders_qed
orders_qed
An enum type for orders in electroweak.
Definition: OrderScheme.h:47
HeffDS1::model
const StandardModel & model
Definition: HeffDS1.h:76
orders
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
StandardModel::getMatching
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
Definition: StandardModel.h:952
QCD::Mrun
double Mrun(const double mu, const double m, const orders order=FULLNNLO) const
Computes a running quark mass from .
Definition: QCD.cpp:1064
HeffDS1::ComputeCoeffDS1PP
gslpp::vector< gslpp::complex > ** ComputeCoeffDS1PP(double mu, schemes scheme=NDR)
the effective Hamiltonian at the scale mu for
Definition: HeffDS1.cpp:23
HeffDS1::coeffds1pnunu
WilsonCoefficient coeffds1pnunu
Definition: HeffDS1.h:78
WilsonCoefficient::getCoeff
gslpp::vector< gslpp::complex > ** getCoeff() const
Definition: WilsonCoefficient.h:29
NLO
Definition: OrderScheme.h:34
HeffDS1::uM
std::unique_ptr< EvolDB1Mll > uM
Definition: HeffDS1.h:80
EvolDB1Mll.h
FULLNNLO
Definition: OrderScheme.h:38
StandardModel::getAle
double getAle() const
A get method to retrieve the fine-structure constant .
Definition: StandardModel.h:748
gslpp::vector< gslpp::complex >