8#include <gsl/gsl_sf_zeta.h>
13:
RGEvolutor(dim_i, scheme, order), model(model),
14 v(dim_i,0.), vi(dim_i,0.), js(dim_i,0.), h(dim_i,0.), gg(dim_i,0.), s_s(dim_i,0.),
15 jssv(dim_i,0.), jss(dim_i,0.), jv(dim_i,0.), vij(dim_i,0.), gg2(dim_i,0.),
16 s_s2(dim_i,0.),h2(dim_i,0.),js2(dim_i,0.), j2v(dim_i,0.), vijj(dim_i,0.),
17 vij2(dim_i,0.), e(dim_i,0.), dim(dim_i)
19 if (
dim != 8 )
throw std::runtime_error(
"ERROR: EvolDB1bsg can only be of dimension 8");
23 for(
int L=2; L>-1; L--){
28 if(L == 1){
nd = 3;
nu = 2;}
29 if(L == 0){
nd = 3;
nu = 3;}
35 for(
unsigned int i = 0; i <
dim; i++){
36 a[L][i] =
e(i).real();
37 for (
unsigned int j = 0; j <
dim; j++) {
38 for (
unsigned int k = 0; k <
dim; k++) {
39 b[L][i][j][k] =
v(i, k).real() *
vi(k, j).real();
49 for (
unsigned int i = 0; i <
dim; i++){
50 for (
unsigned int j = 0; j <
dim; j++){
51 s_s.assign( i, j, (b1 / b0) * (i==j) *
e(i).real() -
gg(i,j));
52 if(fabs(
e(i).real() -
e(j).real() + 2. * b0)>0.00000000001){
53 h.assign( i, j,
s_s(i,j) / (2. * b0 +
e(i) -
e(j)));
62 for (
unsigned int i = 0; i <
dim; i++){
63 for (
unsigned int j = 0; j <
dim; j++){
64 if(fabs(
e(i).real() -
e(j).real() + 2. * b0) > 0.00000000001){
65 for(
unsigned int k = 0; k <
dim; k++){
66 c[L][i][j][k] =
jv(i, k).real() *
vi(k, j).real();
67 d[L][i][j][k] = -
v(i, k).real() *
vij(k, j).real();
71 for(
unsigned int k = 0; k <
dim; k++){
72 c[L][i][j][k] = (1./(2. * b0)) *
jssv(i, k).real() *
vi(k, j).real();
80 for (
unsigned int i = 0; i <
dim; i++){
81 for (
unsigned int j = 0; j <
dim; j++){
82 gslpp::complex s_s2_temp = 0.;
83 for (
unsigned int k = 0; k <
dim; k++){
84 s_s2_temp += (2. * b0 +
e(i).real() -
e(k).real()) *
85 (
h(i,k) *
h(k,j) - b1/b0 *
h(i,j) * (j==k) );
87 s_s2.assign( i, j, s_s2_temp + b2/b0 * (i==j) *
e(i).real() -
gg2(i,j));
88 if(fabs(
e(i).real() -
e(j).real() + 4. * b0)>0.00000000001){
89 h2.assign( i, j,
s_s2(i,j) / (4. * b0 +
e(i) -
e(j)));
92 throw std::runtime_error(
"EvolDF1bsg::EvolDF1bsg(): singular case at NNLO not yet implemented!");
100 for (
unsigned int i = 0; i <
dim; i++){
101 for (
unsigned int j = 0; j <
dim; j++){
102 for(
unsigned int k = 0; k <
dim; k++){
103 c2[L][i][j][k] =
j2v(i, k).real() *
vi(k, j).real();
104 d2[L][i][j][k] = -
jv(i, k).real() *
vij(k, j).real();
105 e2[L][i][j][k] = +
v(i, k).real() *
vijj(k, j).real();
106 f2[L][i][j][k] = -
v(i, k).real() *
vij2(k, j).real();
125 unsigned int nf = n_u + n_d;
126 double z3 = gsl_sf_zeta_int(3);
128 gslpp::matrix<double> gammaDF1(
dim,
dim, 0.);
134 gammaDF1(0,0) = -4. ;
135 gammaDF1(0,1) = 8./3. ;
136 gammaDF1(0,3) = -2./9.;
139 gammaDF1(1,3) = 4./3.;
141 gammaDF1(2,3) = -52./3.;
144 gammaDF1(3,2) = -40./9.;
145 gammaDF1(3,3) = -160./9. + 4./3.*nf;
146 gammaDF1(3,4) = 4./9.;
147 gammaDF1(3,5) = 5./6.;
149 gammaDF1(4,3) = -256./3.;
152 gammaDF1(5,2) = -256./9.;
153 gammaDF1(5,3) = -544./9. + (40./3.)*nf;
154 gammaDF1(5,4) = 40./9.;
155 gammaDF1(5,5) = -2./3.;
159 gammaDF1(7,6) = -32./9.;
165 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6)){
166 throw std::runtime_error(
"EvolDF1::AnomalousDimension_M(): wrong number of flavours");
171 gammaDF1(0,0) = -145./3. + (16./9.)*nf;
172 gammaDF1(0,1) = -26. + (40./27.)*nf;
173 gammaDF1(0,2) = -1412./243.;
174 gammaDF1(0,3) = -1369./243.;
175 gammaDF1(0,4) = 134./243.;
176 gammaDF1(0,5) = -35./162.;
177 gammaDF1(0,6) = -232./243.;
178 gammaDF1(0,7) = 167./162.;
180 gammaDF1(1,0) = -45. + (20./3.)*nf;
181 gammaDF1(1,1) = -28./3.;
182 gammaDF1(1,2) = -416./81.;
183 gammaDF1(1,3) = 1280./81.;
184 gammaDF1(1,4) = 56./81.;
185 gammaDF1(1,5) = 35./27.;
186 gammaDF1(1,6) = 464./81.;
187 gammaDF1(1,7) = 76./27.;
189 gammaDF1(2,2) = -4468./81.;
190 gammaDF1(2,3) = -29129./81. - (52./9.)*nf;
191 gammaDF1(2,4) = 400./81.;
192 gammaDF1(2,5) = 3493./108. - (2./9.)*nf;
193 gammaDF1(2,6) = 64./81.;
194 gammaDF1(2,7) = 368./27.;
196 gammaDF1(3,2) = -13678./243. + (368.*nf)/81.;
197 gammaDF1(3,3) = -79409./243. + (1334.*nf)/81.;
198 gammaDF1(3,4) = 509./486. - (8.*nf)/81.;
199 gammaDF1(3,5) = 13499./648. - (5.*nf)/27.;
200 gammaDF1(3,6) = -680./243. + (32.*nf)/81;
201 gammaDF1(3,7) = -427./81. - (37.*nf)/54.;
203 gammaDF1(4,2) = -244480./81. - (160./9.)*nf;
204 gammaDF1(4,3) = -29648./81. - (2200./9.)*nf;
205 gammaDF1(4,4) = 23116./81. + (16./9.)*nf;
206 gammaDF1(4,5) = 3886./27. + (148./9.)*nf;
207 gammaDF1(4,6) = -6464./81.;
208 gammaDF1(4,7) = 8192./27. + 36.*nf;
210 gammaDF1(5,2) = 77600./243. - (1264./81.)*nf;
211 gammaDF1(5,3) = -28808./243. + (164./81.)*nf;
212 gammaDF1(5,4) = -20324./243. + (400./81.)*nf;
213 gammaDF1(5,5) = -21211./162.+ (622./27.)*nf;
214 gammaDF1(5,6) = -20096./243. - (976.*n_d)/81. + (2912.*n_u)/81.;
215 gammaDF1(5,7) = -6040./81. + (220./27.)*nf;
217 gammaDF1(6,6) = 1936./9.-224./27.*nf-2*
model.
Beta1(nf);
219 gammaDF1(7,6) = -368./9.+224./81.*nf;
220 gammaDF1(7,7) = 1456./9.-61./27.*nf-2*
model.
Beta1(nf);
225 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6)){
226 throw std::runtime_error(
"EvolDF1::AnomalousDimension_M(): wrong number of flavours");
233 gammaDF1(0,0) = -1927./2.+40./9.*(n_d*n_d+n_u*n_u)+224.*z3+(257./9.+160./3.*z3)*n_u+(257./9.+80./9.*n_u+160./3.*z3)*n_d;
234 gammaDF1(0,1) = 475./9.-40./27.*n_d*n_d-40./27.*n_u*n_u+(362./27.-320./9.*z3)*n_u+(362./27.-80./27.*n_u-320./9.*z3)*n_d-896./3.*z3;
235 gammaDF1(0,2) = 269107./13122.-2288./729.*nf-1360./81.*z3;
236 gammaDF1(0,3) = -2425817./13122.+30815./4374.*nf-776./81.*z3;
237 gammaDF1(0,4) = -343783./52488.+392./729.*nf+124./81.*z3;
238 gammaDF1(0,5) = -37573./69984.+35./972.*nf+100./27.*z3;
240 gammaDF1(1,0) = 307./2.-20./3.*(n_d*n_d+n_u*n_u)+(361./3.-160.*z3)*n_u+(361./3.-40./3.*n_u-160.*z3)*n_d-1344*z3;
241 gammaDF1(1,1) = 1298./3.-76./3.*nf-224.*z3;
242 gammaDF1(1,2) = 69797./2187.+904./243.*nf+2720./27.*z3;
243 gammaDF1(1,3) = 1457549./8748.-22067./729.*nf-2768./27.*z3;
244 gammaDF1(1,4) = -37889./8748.-28./243.*nf-248./27.*z3;
245 gammaDF1(1,5) = 366919./11664.-35./162.*nf-110./9.*z3;
247 gammaDF1(2,2) = -4203068./2187.+14012./243.*nf-608./27.*z3;
248 gammaDF1(2,3) = -18422762./2187.+888605./2916. *nf+272./27.*nf*nf+(39824./27. + 160.*nf)*z3;
249 gammaDF1(2,4) = 674281./4374.-1352./243.*nf-496./27.*z3;
250 gammaDF1(2,5) = 9284531./11664.-26./27.*(n_d*n_d+n_u*n_u)+(-2798./81.-20.*z3)*n_u+(-2798./81.-52./27.*n_u-20.*z3)*n_d-1921./9.*z3;
252 gammaDF1(3,2) = -5875184./6561.+217892./2187.*nf+472./81.*nf*nf+(27520./81.+1360./9.*nf)*z3;
253 gammaDF1(3,3) = -70274587./13122.+8860733./17496.*nf-4010./729.*nf*nf+(16592./81.+2512./27.*nf)*z3;
254 gammaDF1(3,4) = 2951809./52488.-52./81.*(n_d*n_d+n_u*n_u)+(-31175./8748.-136./9.*z3)*n_u+(-31175./8748.-104./81.*n_u-136./9.*z3)*n_d-3154./81.*z3;
255 gammaDF1(3,5) = 3227801./8748.-65./54.*(n_d*n_d+n_u*n_u)+(-105293./11664.-220./9.*z3)*n_u+(-105293./11664.-65./27.*n_u-220./9.*z3)*n_d+200./27.*z3;
257 gammaDF1(4,2) = -194951552./2187.+358672./81.*nf-2144./81.*nf*nf+87040./27.*z3;
258 gammaDF1(4,3) = -130500332./2187.+3088/27.*(n_d*n_d+n_u*n_u)+238016./27.*z3+(-2949616./729.+640.*z3)*n_u+(-2949616./729.+6176./27.*n_u+640.*z3)*n_d;
259 gammaDF1(4,4) = 14732222./2187.+272./81.*(n_d*n_d+n_u*n_u)-27428./81.*n_u+(-27428./81.+544./81.*n_u)*n_d-13984./27.*z3;
260 gammaDF1(4,5) = 16521659./2916.-316./27.*(n_d*n_d+n_u*n_u)+(8081./54.-200.*z3)*n_u+(8081./54.-632./27.*n_u-200.*z3)*n_d-22420./9.*z3;
262 gammaDF1(5,2) = 162733912./6561.+17920./243.*(n_d*n_d+n_u*n_u)+174208./81.*z3+(-2535466./2187.+12160./9.*z3)*n_u+(-2535466./2187.+35840./243.*n_u+12160./9.*z3)*n_d;
263 gammaDF1(5,3) = 13286236./6561.-159548./729.*(n_d*n_d+n_u*n_u)+(-1826023./4374.-9440./27.*z3)*n_u+(-1826023./4374.-319096./729.*n_u-9440./27.*z3)*n_d-24832./81.*z3;
264 gammaDF1(5,4) = -22191107./13122.+395783./4374.*nf-1720./243.*nf*nf-(33832./81.+1360./9.*nf)*z3;
265 gammaDF1(5,5) = -32043361./8748.+3353393./5832.*nf-533./81.*nf*nf+(9248./27.-1120./9.*nf)*z3;
269 gammaDF1(0,6) = 77506102./531441. - 875374./177147.*nf + 560./19683.*nf*nf - 9731./162.*(2./3.) + 11045./729.*nf*(2./3.) + 316./729.*nf*nf*(2./3.) + 3695./486.*(1./3.);
270 gammaDF1(0,6) += z3*(-112216./6561. + 728./729.*nf + 25508./81.*(2./3.) - 64./81.*nf*(2./3.)-100./27.*(1./3.));
271 gammaDF1(1,6) = -15463055./177147. + 242204./59049.*nf - 1120./6561.*nf*nf + 55748./27.*(2./3.) - 33970./243.*nf*(2./3.) - 632./243.*nf*nf*(2./3.) - 3695./81.*(1./3.);
272 gammaDF1(1,6) += z3*(365696./2187. - 1168./243.*nf - 51232./27.*(2./3.) - 1024./27.*nf*(2./3.) + 200./9.*(1./3.));
273 gammaDF1(2,6) = 102439553./177147. - 12273398./59049.*nf + 5824./6561.*nf*nf + 26639./81.*(1./3.) - 8./27.*nf*(1./3.) ;
274 gammaDF1(2,6) += z3*(3508864./2187. - 1904./243.*nf - 1984./9.*(1./3.) -64./9.*nf*(1./3.));
275 gammaDF1(3,6) = -2493414077./1062882. - 9901031./354294.*nf + 243872./59049.*nf*nf - 1184./6561.*nf*nf*nf - 49993./972.*(1./3.) + 305./27.*nf*(1./3.);
276 gammaDF1(3,6) += z3*(-1922264./6561. + 308648./2187.*nf - 1280./243.*nf*nf + 1010./9.*(1./3.) - 200./27.*nf*(1./3.));
277 gammaDF1(4,6) = 8808397748./177147. - 174839456./59049.*nf + 1600./729.*nf*nf - 669694./81.*(1./3.) + 10672./27.*nf*(1./3.);
278 gammaDF1(4,6) += z3*(123543040./2187. - 207712./243.*nf + 128./27.*nf*nf - 24880./9.*(1./3.) - 640./9.*nf*(1./3.));
279 gammaDF1(5,6) = 7684242746./531441. - 351775414./177147.*nf - 479776./59049.*nf*nf - 11456./6561.*nf*nf*nf + 3950201./243.*(1./3.) - 130538./81.*nf*(1./3.) - 592./81.*nf*nf*(1./3.);
280 gammaDF1(5,6) += z3*(7699264./6561. + 2854976./2187.*nf - 12320./243.*nf*nf - 108584./9.*(1./3.) - 1136./27.*nf*(1./3.));
282 gammaDF1(0,7) = -421272953./1417176. - 8210077./472392.*nf - 1955./6561.*nf*nf + z3*(-953042./2187. - 10381./486.*nf);
283 gammaDF1(1,7) = 98548513./472392 - 5615165./78732.*nf - 2489./2187.*nf*nf + z3*(-607103./729. - 1679./81.*nf);
284 gammaDF1(2,7) = 3205172129./472392. - 108963529./314928.*nf+58903./4374.*nf*nf + z3*(-1597588./729. + 13028./81.*nf - 20./9.*nf*nf);
285 gammaDF1(3,7) = -6678822461./2834352. + 127999025./1889568.*nf + 1699073./157464.*nf*nf + 505./4374.*nf*nf*nf + z3*(2312684./2187. + 128347./729.*nf + 920./81.*nf*nf) ;
286 gammaDF1(4,7) = 29013624461./118098. - 64260772./19683.*nf - 230962./243.*nf*nf - 148./27.*nf*nf*nf + z3*(-69359224./729. - 885356./81.*nf -5080./9.*nf*nf);
287 gammaDF1(5,7) = -72810260309./708588. + 2545824851./472392.*nf - 33778271./78732.*nf*nf - 3988./2187.*nf*nf*nf + z3*(-61384768./2187. - 685472./729.*nf +350./81.*nf*nf);
291 gammaDF1(6,6) = 307448./81.-23776./81.*nf-352./81.*nf*nf+(-1856./27.-1280./9.*nf)*z3;
292 gammaDF1(7,6) = -164672./243.+17108./243.*nf+352./243.*nf*nf+(3776./81.+1280./27.*nf)*z3;
293 gammaDF1(7,7) = 268807./81.-4343./27.*nf-461./81.*nf*nf+(-28624./27.-1312./9.*nf)*z3;
297 throw std::runtime_error(
"EvolDF1bsg::AnomalousDimension_M(): order not implemented");
308 gslpp::matrix<double> mat(
dim, 0.);
309 gslpp::matrix<double> mat1(
dim, 0.);
310 unsigned int nf = n_u + n_d;
312 mat1(0,6) = - 13454./2187. + 44./2187.*nf;
313 mat1(1,6) = 20644./729. - 88./729.*nf;
314 mat1(2,6) = 119456./729. + 5440./729.*n_d -21776./729.*n_u;
315 mat1(3,6) = - 202990./2187. + 32./729.*n_d*n_d + n_d*(16888./2187. + 64./729.*n_u) - 17132./2187.*n_u + 32./729.*n_u*n_u;
316 mat1(4,6) = 530240./243. + 300928./729.*n_d - 461120./729.*n_u;
317 mat1(5,6) = - 1112344./729. + 5432./729.*n_d*n_d + n_d*(419440./2187. - 2744./729.*n_u) + 143392./2187.*n_u - 8176./729.*n_u*n_u;
319 mat1(0,7) = 25759./5832. + 431./5832.*nf;
320 mat1(1,7) = 9733./486. - 917./972.*nf;
321 mat1(2,7) = 82873./243. - 3361./243.*nf;
322 mat1(3,7) = - 570773./2916. - 253./486.*n_d*n_d +n_d*(-40091./5832. - 253./243.*n_u) - 40091./5832.*n_u - 253./486.*n_u*n_u;
323 mat1(4,7) = 838684./81. - 14.*n_d*n_d + n_d*(129074./243. - 28.*n_u) + 129074./243.*n_u - 14.*n_u*n_u;
324 mat1(5,7) = - 923522./243. - 6031./486.*n_d*n_d + n_d*(-13247./1458. - 6031./243.*n_u) - 13247./1458.*n_u - 6031./486.*n_u*n_u;
330 for (
int i=0; i<6; i++){
331 for (
unsigned int j=6; j<
dim; j++){
332 mat(i,j) = mat1(i,j);
335 for (
unsigned int i=6; i<
dim; i++){
336 for (
unsigned int j=6; j<
dim; j++){
337 mat(i,j) = mat(i,j) + 2. * (i==j) *
model.
Beta1(nf);
343 for (
int i=0; i<6; i++){
344 for (
unsigned int j=6; j<
dim; j++){
348 for (
unsigned int i=6; i<
dim; i++){
349 for (
unsigned int j=6; j<
dim; j++){
350 mat(i,j) = mat(i,j) + 2. * (i==j) *
model.
Beta0(nf);
355 throw std::runtime_error(
"change to rescaled operator basis: order not implemented");
363 gslpp::matrix<double> y(
dim, 0.);
384 return( (y.inverse()).transpose() * mat * y.transpose() );
397 std::stringstream out;
399 throw std::runtime_error(
"EvolDF1bsg::Df1Evolbsg(): scheme " + out.str() +
" not implemented ");
405 if (
mu == this->mu &&
M == this->M &&
scheme == this->scheme)
412 std::stringstream out;
413 out <<
"M = " <<
M <<
" < mu = " <<
mu;
439 gslpp::matrix<double> resLO(
dim, 0.), resNLO(
dim, 0.), resNNLO(
dim, 0.);
441 int L = 6 - (int) nf;
445 double eta = alsM / alsmu;
447 for (
unsigned int k = 0; k <
dim; k++) {
448 double etap = pow(eta,
a[L][k] / 2. /
model.
Beta0(nf));
449 for (
unsigned int i = 0; i <
dim; i++){
450 for (
unsigned int j = 0; j <
dim; j++) {
451 resNNLO(i, j) +=
c2[L][i][j][k] * etap * alsmu * alsmu;
452 resNNLO(i, j) +=
d2[L][i][j][k] * etap * alsmu * alsM;
453 resNNLO(i, j) +=
e2[L][i][j][k] * etap * alsM * alsM;
454 resNNLO(i, j) +=
f2[L][i][j][k] * etap * alsM * alsM;
455 if(fabs(
e(i).real() -
e(j).real() + 2. *
model.
Beta0(nf))>0.000000000001) {
456 resNLO(i, j) +=
c[L][i][j][k] * etap * alsmu;
457 resNLO(i, j) +=
d[L][i][j][k] * etap * alsM;
460 resNLO(i, j) += -
c[L][i][j][k] * etap * alsmu * log(eta);
462 resLO(i, j) +=
b[L][i][j][k] * etap;
463 if (fabs(resLO(i, j)) <= 1.e-12) {resLO(i, j) = 0.;}
464 if (fabs(resNLO(i, j)) <= 1.e-12) {resNLO(i, j) = 0.;}
465 if (fabs(resNNLO(i, j)) <= 1.e-12) {resNNLO(i, j) = 0.;}
481 throw std::runtime_error(
"Error in EvolDF1bsg::Df1Evolbsg()");
gslpp::matrix< double > AnomalousDimension_M(orders order, unsigned int n_u, unsigned int n_d) const
a method returning the anomalous dimension matrix given in the Misiak basis
gslpp::matrix< gslpp::complex > h2
gslpp::matrix< double > & Df1Evolbsg(double mu, double M, orders order, schemes scheme=NDR)
a method returning the evolutor related to the high scale and the low scale
gslpp::matrix< gslpp::complex > js2
gslpp::matrix< gslpp::complex > js
gslpp::matrix< gslpp::complex > s_s2
gslpp::matrix< gslpp::complex > j2v
gslpp::matrix< double > ToRescaleBasis(orders order, unsigned int n_u, unsigned int n_d) const
a method returning the anomalous dimension in the Chetyrkin, Misiak and Munz operator basis
gslpp::matrix< double > ToEffectiveBasis(gslpp::matrix< double > mat) const
a method returning the anomalous dimension for the evolution of the effective Wilson coefficients
const StandardModel & model
virtual ~EvolDB1bsg()
EvolDF1bsg destructor.
gslpp::matrix< gslpp::complex > jss
gslpp::matrix< gslpp::complex > jv
gslpp::matrix< gslpp::complex > vijj
gslpp::matrix< gslpp::complex > s_s
gslpp::matrix< gslpp::complex > vij
EvolDB1bsg(unsigned int dim, schemes scheme, orders order, const StandardModel &model)
EvolDF1bsg constructor.
gslpp::matrix< gslpp::complex > v
gslpp::matrix< gslpp::complex > gg
gslpp::vector< gslpp::complex > e
gslpp::matrix< gslpp::complex > h
gslpp::matrix< gslpp::complex > jssv
gslpp::matrix< gslpp::complex > vi
gslpp::matrix< gslpp::complex > gg2
gslpp::matrix< gslpp::complex > vij2
const double Beta2(const double nf) const
The coefficient for a certain number of flavours .
const double Beta1(const double nf) const
The coefficient for a certain number of flavours .
const double Beta0(const double nf) const
The coefficient for a certain number of flavours .
A class for the RG evolutor of the Wilson coefficients.
void setScales(double mu, double M)
Sets the upper and lower scale for the running of the Wilson Coefficients.
gslpp::matrix< double > * Evol(orders order)
Evolution matrix set at a fixed order of QCD coupling.
A model class for the Standard Model.
const double getMz() const
A get method to access the mass of the boson .
const double getAlsMz() const
A get method to access the value of .
const double Alstilde5(const double mu) const
The value of at any scale with the number of flavours and full EW corrections.
gslpp::matrix< double > * elem[MAXORDER_QED+1]
orders
An enum type for orders in QCD.
schemes
An enum type for regularization schemes.