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
38gslpp::vector<gslpp::complex>** HeffDF2::ComputeCoeffBd(double mu, schemes scheme, bool SM)
39{
40 std::vector<WilsonCoefficient> mc;
41
42 if (SM)
43 mc = model.getMatching().StandardModelMatching::CMdbd2();
44 else
45 mc = model.getMatching().CMdbd2();
46
47 coeffbd.setMu(mu);
48
49 coeffbd.setScheme(mc[0].getScheme());
50
51 orders ordDF2 = coeffbd.getOrder();
52 for (unsigned int i = 0; i < mc.size(); i++){
53 ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
54 for (int j = LO; j <= ordDF2; j++){
55 for (int k = LO; k <= j; k++){
57 evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
58 (*(mc[i].getCoeff(orders(j - k)))), orders(j));
59 }
60 }
61 }
62
63 ChangeScheme(scheme, coeffbd, ordDF2);
64
65 return coeffbd.getCoeff();
66}
67
68gslpp::vector<gslpp::complex>** HeffDF2::ComputeCoeffBs(double mu, schemes scheme, bool SM)
69{
70
71 std::vector<WilsonCoefficient> mc;
72
73 if (SM)
74 mc = model.getMatching().StandardModelMatching::CMdbs2();
75 else
76 mc = model.getMatching().CMdbs2();
77
78 coeffbs.setMu(mu);
79
80 coeffbs.setScheme(mc[0].getScheme());
81
82 orders ordDF2 = coeffbs.getOrder();
83 for (unsigned int i = 0; i < mc.size(); i++){
84 ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
85 for (int j = LO; j <= ordDF2; j++){
86 for (int k = LO; k <= j; k++){
88 evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
89 (*(mc[i].getCoeff(orders(j - k)))), orders(j));
90 }
91 }
92 }
93
94 ChangeScheme(scheme, coeffbs, ordDF2);
95
96 return coeffbs.getCoeff();
97}
98
99gslpp::vector<gslpp::complex>** HeffDF2::ComputeCoeffdd(double mu, schemes scheme)
100{
101
102 std::vector<WilsonCoefficient> mc = model.getMatching().CMdd2();
103
104 coeffDd.setMu(mu);
105
106 coeffDd.setScheme(mc[0].getScheme());
107
108 orders ordDF2 = coeffDd.getOrder();
109 for (unsigned int i = 0; i < mc.size(); i++){
110 ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
111 for (int j = LO; j <= ordDF2; j++){
112 for (int k = LO; k <= j; k++){
114 evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
115 (*(mc[i].getCoeff(orders(j - k)))), orders(j));
116 }
117 }
118 }
119
120 ChangeScheme(scheme, coeffDd, ordDF2);
121
122 return coeffDd.getCoeff();
123}
124
125gslpp::vector<gslpp::complex>** HeffDF2::ComputeCoeffK(double mu, schemes scheme)
126{
127
128 std::vector<WilsonCoefficient> mc = model.getMatching().CMdk2();
129 gslpp::vector<gslpp::complex> zero(5,0.);
130
131 coeffk.setScheme(mc[0].getScheme());
132
133 coeffk.setMu(mu);
134 coeffk.setCoeff(zero,LO);
135 coeffk.setCoeff(zero,NLO);
136
137 orders ordDF2 = coeffk.getOrder();
138 for (unsigned int i = 0; i < mc.size(); i++){
139 if (i == 0){
140 coeffk.setCoeff(0, evolDF2->etatt(mu) * model.getMatching().S0tt() * (1. - model.getOptionalParameter("DeltattEpsK")) //EW correction from 2108.00017
141 + evolDF2->etacc(mu) * model.getMatching().S0c()
142 + evolDF2->etact(mu) * model.getMatching().S0ct(),
143 NLO);
144#if SUSYFIT_DEBUG & 2
145 std::cout << "mu = " << mu<< ", S0tt = " << model.getMatching().S0tt() <<
146 ", S0cc = " << model.getMatching().S0c() <<
147 ", S0ct = " << model.getMatching().S0ct() << std::endl;
148 std::cout << ", etatt = " << evolDF2->etatt(mu) <<
149 ", etacc = " << evolDF2->etacc(mu) <<
150 ", etact = " << evolDF2->etact(mu) << std::endl;
151 std::cout << "tt = " << evolDF2->etatt(mu)*model.getMatching().S0tt() <<
152 ", cc = " << evolDF2->etacc(mu)*model.getMatching().S0c() <<
153 ", ct = " << evolDF2->etact(mu)*model.getMatching().S0ct() << std::endl;
154#endif
155
156 }
157 else {
158 ChangeScheme(mc[0].getScheme(),mc[i],ordDF2);
159 for (int j = LO; j <= ordDF2; j++){
160 for (int k = LO; k <= j; k++){
162 evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
163 (*(mc[i].getCoeff(orders(j - k)))), orders(j));
164 }
165 }
166 }
167 }
168
169 ChangeScheme(scheme, coeffk, ordDF2);
170
171 return coeffk.getCoeff();
172}
173
174
175gslpp::vector<gslpp::complex>** HeffDF2::ComputeCoeffmK(double mu, schemes scheme)
176{
177
178 const std::vector<WilsonCoefficient>& mc = model.getMatching().CMdk2();
179 gslpp::vector<gslpp::complex> zero(5,0.);
180
181 coeffmk.setMu(mu);
182
183 orders ordDF2 = coeffmk.getOrder();
184 for (unsigned int i = 0; i < mc.size(); i++){
185 if (i == 0){
186 coeffmk.setCoeff(zero, NLO);
187 coeffmk.setCoeff(zero, LO);
188 }
189 else {
190 for (int j = LO; j <= ordDF2; j++){
191 for (int k = LO; k <= j; k++){
193 evolDF2->Df2Evol(mu, mc[i].getMu(), orders(k), mc[i].getScheme()) *
194 (*(mc[i].getCoeff(orders(j - k)))), orders(j));
195 }
196 }
197 }
198 }
199
200 ChangeScheme(scheme, coeffmk, ordDF2);
201
202 return coeffmk.getCoeff();
203}
204
206{
207 schemes schin = c_in.getScheme();
208 if (schout == schin || order == LO) return;
209 WilsonCoefficient c_out(5, schout, order);
210 switch(schin) {
211 case NDR:
212 switch(schout) {
213 case LRI:
214 c_out.setCoeff(*c_in.getCoeff(NLO) -
215 model.Als(c_in.getMu()) / 4. / M_PI * drNDRLRI.transpose()*
216 (*c_in.getCoeff(LO)), NLO);
217 c_in.setCoeff(*c_out.getCoeff(NLO),NLO);
218 c_in.setScheme(schout);
219 break;
220 default:
221 throw std::runtime_error("HeffDF2::ChangeScheme(): out scheme not implemented");
222 }
223 break;
224 default:
225 throw std::runtime_error("HeffDF2::ChangeScheme(): in scheme not implemented");
226 }
227}
228
@ LO
Definition: OrderScheme.h:34
@ NLO
Definition: OrderScheme.h:35
@ LRI
Definition: OrderScheme.h:23
@ NDR
Definition: OrderScheme.h:21
std::unique_ptr< EvolDF2 > evolDF2
Definition: HeffDF2.h:135
gslpp::vector< gslpp::complex > ** ComputeCoeffBs(double mu, schemes scheme=NDR, bool SM=false)
Definition: HeffDF2.cpp:68
void ChangeScheme(schemes schout, WilsonCoefficient &c_in, orders order)
change scheme for a Wilson Coefficient
Definition: HeffDF2.cpp:205
WilsonCoefficient coeffbd
Definition: HeffDF2.h:129
WilsonCoefficient coeffDd
Definition: HeffDF2.h:131
virtual ~HeffDF2()
destructor
Definition: HeffDF2.cpp:35
gslpp::vector< gslpp::complex > ** ComputeCoeffBd(double mu, schemes scheme=NDR, bool SM=false)
Definition: HeffDF2.cpp:38
gslpp::vector< gslpp::complex > ** ComputeCoeffdd(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:99
WilsonCoefficient coeffmk
Definition: HeffDF2.h:133
HeffDF2(const StandardModel &SM)
constructor
Definition: HeffDF2.cpp:12
const StandardModel & model
Definition: HeffDF2.h:127
WilsonCoefficient coeffbs
Definition: HeffDF2.h:130
gslpp::vector< gslpp::complex > ** ComputeCoeffmK(double mu, schemes scheme=NDR)
for Delta M_K the SM contribution is set to zero
Definition: HeffDF2.cpp:175
gslpp::matrix< double > drNDRLRI
Definition: HeffDF2.h:128
WilsonCoefficient coeffk
Definition: HeffDF2.h:132
gslpp::vector< gslpp::complex > ** ComputeCoeffK(double mu, schemes scheme=NDR)
Definition: HeffDF2.cpp:125
const double getOptionalParameter(std::string name) const
A method to get parameters that are specific to only one set of observables.
Definition: QCD.h:450
A model class for the Standard Model.
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
const double Als(const double mu, const orders order, const bool Nf_thr, const bool qed_flag) const
The running QCD coupling in the scheme including QED corrections.
virtual std::vector< WilsonCoefficient > & CMdbs2()
,
virtual std::vector< WilsonCoefficient > & CMdbd2()
,
virtual std::vector< WilsonCoefficient > & CMdd2()
,
A class for the Wilson coefficients.
gslpp::vector< gslpp::complex > ** getCoeff() const
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
double getMu() const
void setScheme(schemes scheme)
schemes getScheme() const
virtual void setMu(double mu)
orders getOrder() const
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:33
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:20