a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
HeffDF1bnlep.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 "HeffDF1bnlep.h"
9 #include "gslpp.h"
10 #include "StandardModel.h"
11 #include "EvolDF1nlep.h"
12 
14 : model(SM),
15  coeffbnlep00qcd (10, NDR, NLO, NLO_QED11), coeffbnlep00 (12, NDR, NLO, NLO_QED11),
16  coeffbnlep10qcd (10, NDR, NLO, NLO_QED11), coeffbnlep10 (12, NDR, NLO, NLO_QED11),
17  coeffbnlep01 (10, NDR, NLO), coeffbnlep01A(10, NDR, NLO), coeffbnlep01B(4, NDR, NLO), coeffbnlep00CC(10, NDR, NLO),
18  coeffbnlep11 (10, NDR, NLO), coeffbnlep11A(10, NDR, NLO), coeffbnlep11B(4, NDR, NLO), coeffbnlep10CC(10, NDR, NLO),
19  u(new EvolDF1nlep(10, NDR, NLO, NLO_QED11, SM)),
20  bnlep (12, 0.), bnlep2(10, 0.), bnlepCC(4, 0.)
21 {}
22 
24 {}
25 
26 /*******************************************************************************
27  * evolution Wilson Coefficienys b-> nonlep. *
28  * Buras base *
29  * deltaB=1 deltaC=0 deltaS=0 *
30  ******************************************************************************/
32 {
33 
34  const std::vector<WilsonCoefficient>& mcb = model.getMatching().CMbnlep( 0);
35  const std::vector<WilsonCoefficient>& mcbCC = model.getMatching().CMbnlepCC( 0);
36 
37  coeffbnlep00qcd.setMu(mu); //inizializes to zero the coefficients
39  coeffbnlep00.setMu(mu);
40 
42  orders ordDF1 = coeffbnlep00.getOrder();
43 
44  for (unsigned int i = 0; i < mcb.size(); i++){
45  for (int j = LO; j <= ordDF1; j++){
46  for (int k = LO; k <= j; k++) {
47 
48  //Evolves the LO terms and the ones proportional to alpha_s
50  u->Df1Evolnlep(mu, mcb[i].getMu(), orders(k), NO_QED, mcb[i].getScheme())*
51  (*(mcb[i].getCoeff(orders(j - k)))), orders(j));
52 
53 
54  //Evolves terms proportional to alpha_e and alpha_e/aplha_s
56  u->Df1Evolnlep(mu, mcb[i].getMu(), NNLO, orders_qed(k+4), mcb[i].getScheme()) *
57  (*(mcb[i].getCoeff(orders(j - k)))), orders_qed(j+4));
58 
59  }
60  }
61 
63  u->Df1Evolnlep(mu, mcb[i].getMu(), orders(LO), NO_QED, mcb[i].getScheme()) *
64  (*(mcb[i].getCoeff(orders_qed(NLO_QED11)))), orders_qed(NLO_QED11));
65 
66  }
67 
68  //Evolves the current*current part of the hamiltonian (the one non-proportional to lambda_t)
69  for (unsigned int i = 0; i < mcbCC.size(); i++)
70  for (int j = LO; j <= ordDF1; j++)
71  for (int k = LO; k <= j; k++)
73  u->Df1Evolnlep(mu, mcbCC[i].getMu(), orders(k), NO_QED, mcbCC[i].getScheme()) *
74  (*(mcbCC[i].getCoeff(orders(j - k)))), orders(j));
75 
76  coeffbnlep00qcd.setScheme(scheme);
77  coeffbnlep00CC.setScheme(scheme);
78 
79  //Puts all together in a wilson coefficient object of 12 component:
80  //the first 10 terms are the ones proportional to lambda_t
81  //the last two are the remainder current*current operators
82  gslpp::complex appoggio[10], appoggio1[10], appoggio2[10], appoggio3[10];
83  for (int i=0; i<10; i++) {
84  appoggio[i] = 0.;
85  appoggio1[i] = 0.;
86  appoggio2[i] = 0.;
87  appoggio3[i] = 0.;
88  }
89  for (int j=LO; j <= ordDF1; j++) {
91  std::cout<< std::endl <<"$$$$$$$$$$$$ "<< j <<" $$$$$$$$$$$"<<std::endl;
92 
93  for (int i = 0; i < 10; i++){
94  bnlep.assign(i, bnlep2(i));
95  if(j == LO){ appoggio[i] = bnlep(i);}
96  if( j == NLO){ appoggio1[i] = bnlep(i); }
97  std::cout<<"++++++++++ "<< i <<" -> "<< bnlep(i) <<" ++++++++++++"<<std::endl;
98  }
100  for (int i = 10; i < 12; i++){
101  bnlep.assign(i, bnlep2(i-10));
102  std::cout<<"++++++++++ "<< i <<" -> "<< bnlep(i) <<" ++++++++++++"<<std::endl;
103 
104  }
106  }
107  for (int k=LO_QED; k <= ordDF1ew; k++) {
109  std::cout<< std::endl <<"$$$$$$$$$$$$ "<<k<<" $$$$$$$$$$$"<<std::endl;
110 
111  for (int l = 0; l < 10; l++){
112  bnlep.assign(l, bnlep2(l));
113  if(k == LO_QED){ appoggio2[l] = bnlep(l); }
114  if(k == NLO_QED11) { appoggio3[l] = bnlep(l); }
115  std::cout<<"++++++++++ "<< l <<" -> "<< bnlep(l) <<" ++++++++++++"<<std::endl;
116  }
117 
119  }
120 
121  std::cout<< std::endl << " COEFFICIENTI TOTALI " << std::endl;
122  gslpp::complex aaa = 0. ;
123  for (int l = 0; l < 10; l++){
124  aaa = appoggio[l] + appoggio2[l];
125  std::cout<< std::endl << " C_0 + C_ALE/ALPHA_S "<< l <<" -> " << aaa << std::endl;
126  aaa = appoggio1[l] + appoggio3[l];
127  std::cout<< std::endl <<" C_1 + C_ALE " << l <<" -> " << aaa << std::endl;
128  std::cout << std::endl << " ************************************************ " << std::endl;
129  }
130 
131  return coeffbnlep00.getCoeff();
132 }
133 
134 /*******************************************************************************
135  * evolution Wilson Coefficienys b-> nonlep. *
136  * Buras base *
137  * deltaB=1 deltaC=0 deltaS=1 *
138  ******************************************************************************/
140 {
141 
142  const std::vector<WilsonCoefficient>& mcb = model.getMatching().CMbnlep( 1);
143  const std::vector<WilsonCoefficient>& mcbCC = model.getMatching().CMbnlepCC( 1);
144 
146  coeffbnlep10CC.setMu(mu);
147  coeffbnlep10.setMu(mu);
148 
149  orders_qed ordDF1ew = coeffbnlep10.getOrder_qed();
150  orders ordDF1 = coeffbnlep10.getOrder();
151 
152  for (unsigned int i = 0; i < mcb.size(); i++){
153  for (int j = LO; j <= ordDF1; j++){
154  for (int k = LO; k <= j; k++) {
155 
156  //Evolves the LO terms and the ones proportional to alpha_s
158  u->Df1Evolnlep(mu, mcb[i].getMu(), orders(k), NO_QED, mcb[i].getScheme()) *
159  (*(mcb[i].getCoeff(orders(j - k)))), orders(j));
160 
161  //Evolves terms proportional to alpha_e and alpha_e/aplha_s
163  u->Df1Evolnlep(mu, mcb[i].getMu(), NNLO, orders_qed(k+4), mcb[i].getScheme()) *
164  (*(mcb[i].getCoeff(orders(j - k)))), orders_qed(j+4));
165  }
166  }
167 
169  u->Df1Evolnlep(mu, mcb[i].getMu(), orders(LO), NO_QED, mcb[i].getScheme()) *
170  (*(mcb[i].getCoeff(orders(LO_QED)))), orders_qed(NLO_QED11));
171  }
172 
173  //Evolves the current*current part of the hamiltonian (the one non-proportional to lambda_t)
174  for (unsigned int i = 0; i < mcbCC.size(); i++)
175  for (int j = LO; j <= ordDF1; j++)
176  for (int k = LO; k <= j; k++)
178  u->Df1Evolnlep(mu, mcbCC[i].getMu(), orders(k), NO_QED, mcbCC[i].getScheme()) *
179  (*(mcbCC[i].getCoeff(orders(j - k)))), orders(j));
180 
181  coeffbnlep10qcd.setScheme(scheme);
182  coeffbnlep10CC.setScheme(scheme);
183 
184  //Puts all together in a wilson coefficient object of 12 component:
185  //the first 10 terms are the one proportional to lambda_t
186  //the last two are the remainder current*current operators
187 
188  for (int j=LO; j <= ordDF1; j++) {
190  for (int i = 0; i < 10; i++){
191  bnlep.assign(i, bnlep2(i));
192  }
194  for (int i = 10; i < 12; i++){
195  bnlep.assign(i, bnlep2(i-10));
196  }
198  }
199  for (int k=LO_QED; k <= ordDF1ew; k++) {
201  for (int l = 0; l < 10; l++){
202  bnlep.assign(l, bnlep2(l));;
203  }
205  }
206 
207  return coeffbnlep10.getCoeff();
208 }
209 
210 /*******************************************************************************
211  * evolution Wilson Coefficienys b-> nonlep. *
212  * Buras base *
213  * deltaB=1 deltaC=1 deltaS=0 *
214  ******************************************************************************/
216 {
217 
218  const std::vector<WilsonCoefficient>& mcbCC1 = model.getMatching().CMbnlepCC( 2);
219  const std::vector<WilsonCoefficient>& mcbCC2 = model.getMatching().CMbnlepCC( 3);
220 
221  coeffbnlep01.setMu(mu);
222  coeffbnlep01A.setMu(mu);
223  coeffbnlep01B.setMu(mu);
224 
225  orders ordDF1 = coeffbnlep01A.getOrder();
226 
227  //evolution of the current*current terms
228  for (unsigned int i = 0; i < mcbCC1.size(); i++)
229  for (int j = LO; j <= ordDF1; j++)
230  for (int k = LO; k <= j; k++)
232  u->Df1Evolnlep(mu, mcbCC1[i].getMu(), orders(k), NO_QED, mcbCC1[i].getScheme()) *
233  (*(mcbCC1[i].getCoeff(orders(j - k)))), orders(j));
234 
235  for (unsigned int i = 0; i < mcbCC2.size(); i++)
236  for (int j = LO; j <= ordDF1; j++)
237  for (int k = LO; k <= j; k++)
239  u->Df1Evolnlep(mu, mcbCC2[i].getMu(), orders(k), NO_QED, mcbCC2[i].getScheme()) *
240  (*(mcbCC2[i].getCoeff(orders(j - k)))), orders(j));
241 
242  coeffbnlep01A.setScheme(scheme);
243  coeffbnlep01B.setScheme(scheme);
244  coeffbnlep01.setScheme(scheme);
245 
246  //Puts all together in a wilson coefficient object of 4 components
247  for (int j=LO; j <= ordDF1; j++) {
249  for (int i = 0; i < 2; i++){
250  bnlep.assign(i, bnlep2(i));
251  }
253  for (int i = 2; i < 4; i++){
254  bnlep.assign(i, bnlep2(i-2));
255  }
257  }
258  return coeffbnlep01.getCoeff();
259 
260 }
261 
262 /*******************************************************************************
263  * evolution Wilson Coefficienys b-> nonlep. *
264  * Buras base *
265  * deltaB=1 deltaC=1 deltaS=1 *
266  ******************************************************************************/
268 {
269 
270  const std::vector<WilsonCoefficient>& mcbCC1 = model.getMatching().CMbnlepCC( 2);
271  const std::vector<WilsonCoefficient>& mcbCC2 = model.getMatching().CMbnlepCC( 3);
272 
273  coeffbnlep11.setMu(mu);
274  coeffbnlep11A.setMu(mu);
275  coeffbnlep11B.setMu(mu);
276 
277  orders ordDF1 = coeffbnlep11A.getOrder();
278 
279  for (unsigned int i = 0; i < mcbCC1.size(); i++)
280  for (int j = LO; j <= ordDF1; j++)
281  for (int k = LO; k <= j; k++)
283  u->Df1Evolnlep(mu, mcbCC1[i].getMu(), orders(k), NO_QED, mcbCC1[i].getScheme()) *
284  (*(mcbCC1[i].getCoeff(orders(j - k)))), orders(j));
285 
286  for (unsigned int i = 0; i < mcbCC2.size(); i++)
287  for (int j = LO; j <= ordDF1; j++)
288  for (int k = LO; k <= j; k++)
290  u->Df1Evolnlep(mu, mcbCC2[i].getMu(), orders(k), NO_QED, mcbCC2[i].getScheme()) *
291  (*(mcbCC2[i].getCoeff(orders(j - k)))), orders(j));
292 
293  coeffbnlep11A.setScheme(scheme);
294  coeffbnlep11B.setScheme(scheme);
295  coeffbnlep11.setScheme(scheme);
296 
297  for (int j=LO; j <= ordDF1; j++) {
299  for (int i = 0; i < 2; i++){
300  bnlep.assign(i, bnlep2(i));
301  }
303  for (int i = 2; i < 4; i++){
304  bnlep.assign(i, bnlep2(i-2));
305  }
307  }
308  return coeffbnlep11.getCoeff();
309 
310 }
HeffDF1bnlep::~HeffDF1bnlep
virtual ~HeffDF1bnlep()
destructor
Definition: HeffDF1bnlep.cpp:23
WilsonTemplate::setScheme
void setScheme(schemes scheme)
Definition: WilsonTemplate.h:103
EvolDF1nlep.h
NO_QED
Definition: OrderScheme.h:49
HeffDF1bnlep::model
const StandardModel & model
Definition: HeffDF1bnlep.h:89
HeffDF1bnlep::coeffbnlep10CC
WilsonCoefficient coeffbnlep10CC
Definition: HeffDF1bnlep.h:94
NLO_QED11
Definition: OrderScheme.h:51
HeffDF1bnlep::coeffbnlep11A
WilsonCoefficient coeffbnlep11A
Definition: HeffDF1bnlep.h:94
HeffDF1bnlep::coeffbnlep00qcd
WilsonCoefficient coeffbnlep00qcd
Definition: HeffDF1bnlep.h:91
HeffDF1bnlep::coeffbnlep00
WilsonCoefficient coeffbnlep00
Definition: HeffDF1bnlep.h:91
WilsonTemplate::getOrder_qed
orders_qed getOrder_qed() const
Definition: WilsonTemplate.h:70
HeffDF1bnlep::ComputeCoeffBnlep00
gslpp::vector< gslpp::complex > ** ComputeCoeffBnlep00(double mu, schemes scheme=NDR)
Definition: HeffDF1bnlep.cpp:30
LO
Definition: OrderScheme.h:33
StandardModel.h
gslpp.h
ModelMatching::CMbnlepCC
virtual std::vector< WilsonCoefficient > & CMbnlepCC(const int a)=0
NDR
Definition: OrderScheme.h:21
HeffDF1bnlep::coeffbnlep11B
WilsonCoefficient coeffbnlep11B
Definition: HeffDF1bnlep.h:94
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
EvolDF1nlep
Evolutor Class
Definition: EvolDF1nlep.h:16
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:477
ModelMatching::CMbnlep
virtual std::vector< WilsonCoefficient > & CMbnlep(const int a)=0
WilsonTemplate::getOrder
orders getOrder() const
Definition: WilsonTemplate.h:65
HeffDF1bnlep.h
WilsonCoefficient::setCoeff
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
Definition: WilsonCoefficient.h:34
HeffDF1bnlep::coeffbnlep10
WilsonCoefficient coeffbnlep10
Definition: HeffDF1bnlep.h:92
schemes
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
HeffDF1bnlep::coeffbnlep01
WilsonCoefficient coeffbnlep01
Definition: HeffDF1bnlep.h:93
LO_QED
Definition: OrderScheme.h:50
NNLO
Definition: OrderScheme.h:35
WilsonTemplate::setMu
virtual void setMu(double mu)
Definition: WilsonTemplate.h:92
orders_qed
orders_qed
An enum type for orders in electroweak.
Definition: OrderScheme.h:47
HeffDF1bnlep::ComputeCoeffBnlep01
gslpp::vector< gslpp::complex > ** ComputeCoeffBnlep01(double mu, schemes scheme=NDR)
Definition: HeffDF1bnlep.cpp:212
HeffDF1bnlep::coeffbnlep00CC
WilsonCoefficient coeffbnlep00CC
Definition: HeffDF1bnlep.h:93
orders
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
HeffDF1bnlep::coeffbnlep10qcd
WilsonCoefficient coeffbnlep10qcd
Definition: HeffDF1bnlep.h:92
HeffDF1bnlep::coeffbnlep11
WilsonCoefficient coeffbnlep11
Definition: HeffDF1bnlep.h:94
StandardModel::getMatching
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
Definition: StandardModel.h:952
HeffDF1bnlep::ComputeCoeffBnlep11
gslpp::vector< gslpp::complex > ** ComputeCoeffBnlep11(double mu, schemes scheme=NDR)
Definition: HeffDF1bnlep.cpp:263
WilsonCoefficient::getCoeff
gslpp::vector< gslpp::complex > ** getCoeff() const
Definition: WilsonCoefficient.h:29
HeffDF1bnlep::coeffbnlep01A
WilsonCoefficient coeffbnlep01A
Definition: HeffDF1bnlep.h:93
HeffDF1bnlep::bnlep2
gslpp::vector< gslpp::complex > bnlep2
Definition: HeffDF1bnlep.h:97
NLO
Definition: OrderScheme.h:34
HeffDF1bnlep::bnlep
gslpp::vector< gslpp::complex > bnlep
Definition: HeffDF1bnlep.h:97
HeffDF1bnlep::ComputeCoeffBnlep10
gslpp::vector< gslpp::complex > ** ComputeCoeffBnlep10(double mu, schemes scheme=NDR)
Definition: HeffDF1bnlep.cpp:137
HeffDF1bnlep::coeffbnlep01B
WilsonCoefficient coeffbnlep01B
Definition: HeffDF1bnlep.h:93
HeffDF1bnlep::HeffDF1bnlep
HeffDF1bnlep(const StandardModel &SM)
constructor
Definition: HeffDF1bnlep.cpp:13
gslpp::vector< gslpp::complex >
HeffDF1bnlep::u
std::unique_ptr< EvolDF1nlep > u
Definition: HeffDF1bnlep.h:95