8 #include <gsl/gsl_sf_zeta.h>
12 :
RGEvolutor(dim_i, scheme, order), model(model),
13 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.),
14 jssv(dim_i,0.), jss(dim_i,0.), jv(dim_i,0.), vij(dim_i,0.), e(dim_i,0.), dim(dim_i)
16 if (
dim != 13 )
throw std::runtime_error(
"ERROR: EvolDB1Mll can only be of dimension 13");
20 for(
int L=3; L>-1; L--){
25 if(L == 3){
nd = 2;
nu = 1;}
26 if(L == 1){
nd = 3;
nu = 2;}
27 if(L == 0){
nd = 3;
nu = 3;}
33 for(
unsigned int i = 0; i <
dim; i++){
34 a[L][i] =
e(i).real();
35 for (
unsigned int j = 0; j <
dim; j++) {
36 for (
unsigned int k = 0; k <
dim; k++) {
37 b[L][i][j][k] =
v(i, k).real() *
vi(k, j).real();
47 for (
unsigned int i = 0; i <
dim; i++){
48 for (
unsigned int j = 0; j <
dim; j++){
49 s_s.assign( i, j, (b1 / b0) * (i==j) *
e(i).real() -
gg(i,j));
50 if(fabs(
e(i).real() -
e(j).real() + 2. * b0)>0.00000000001){
51 h.assign( i, j,
s_s(i,j) / (2. * b0 +
e(i) -
e(j)));
60 for (
unsigned int i = 0; i <
dim; i++){
61 for (
unsigned int j = 0; j <
dim; j++){
62 if(fabs(
e(i).real() -
e(j).real() + 2. * b0) > 0.00000000001){
63 for(
unsigned int k = 0; k <
dim; k++){
64 c[L][i][j][k] =
jv(i, k).real() *
vi(k, j).real();
65 d[L][i][j][k] = -
v(i, k).real() *
vij(k, j).real();
69 for(
unsigned int k = 0; k <
dim; k++){
70 c[L][i][j][k] = (1./(2. * b0)) *
jssv(i, k).real() *
vi(k, j).real();
91 unsigned int nf = n_u + n_d;
100 gammaDF1(0,1) = 8./3. ;
101 gammaDF1(0,3) = -2./9.;
102 gammaDF1(0,8) = -32./27.;
106 gammaDF1(1,3) = 4./3.;
107 gammaDF1(1,8) = -8./9.;
109 gammaDF1(2,3) = -52./3.;
111 gammaDF1(2,8) = 8./9. + (8.*n_d)/3. - (16.*n_u)/3.;
113 gammaDF1(3,2) = -40./9.;
114 gammaDF1(3,3) = -160./9. + 4./3.*nf;
115 gammaDF1(3,4) = 4./9.;
116 gammaDF1(3,5) = 5./6.;
117 gammaDF1(3,8) = 32./27.;
119 gammaDF1(4,3) = -256./3.;
121 gammaDF1(4,8) = 128./9.+(80.*n_d)/3. - (160.*n_u)/3.;
123 gammaDF1(5,2) = -256./9.;
124 gammaDF1(5,3) = -544./9. + (40./3.)*nf;
125 gammaDF1(5,4) = 40./9.;
126 gammaDF1(5,5) = -2./3.;
127 gammaDF1(5,8) = 512./27.;
131 gammaDF1(7,6) = -32./9.;
147 if (!(nf == 3 || nf == 4 || nf == 5 || nf == 6)){
148 throw std::runtime_error(
"EvolDF1::AnomalousDimension_M(): wrong number of flavours");
153 gammaDF1(0,0) = -145./3. + (16./9.)*nf;
154 gammaDF1(0,1) = -26. + (40./27.)*nf;
155 gammaDF1(0,2) = -1412./243.;
156 gammaDF1(0,3) = -1369./243.;
157 gammaDF1(0,4) = 134./243.;
158 gammaDF1(0,5) = -35./162.;
159 gammaDF1(0,6) = -232./243.;
160 gammaDF1(0,7) = +167./162.;
161 gammaDF1(0,8) = -2272./729.;
163 gammaDF1(1,0) = -45. + (20./3.)*nf;
164 gammaDF1(1,1) = -28./3.;
165 gammaDF1(1,2) = -416./81.;
166 gammaDF1(1,3) = 1280./81.;
167 gammaDF1(1,4) = 56./81.;
168 gammaDF1(1,5) = 35./27.;
169 gammaDF1(1,6) = 464./81.;
170 gammaDF1(1,7) = 76./27.;
171 gammaDF1(1,8) = 1952./243.;
173 gammaDF1(2,2) = -4468./81.;
174 gammaDF1(2,3) = -29129./81. - (52./9.)*nf;
175 gammaDF1(2,4) = 400./81.;
176 gammaDF1(2,5) = 3493./108. - (2./9.)*nf;
177 gammaDF1(2,6) = 64./81.;
178 gammaDF1(2,7) = 368./27.;
179 gammaDF1(2,8) = -4160./243. + (32.*n_d)/3. - (64.*n_u)/3.;
181 gammaDF1(3,2) = -13678./243. + (368.*nf)/81.;
182 gammaDF1(3,3) = -79409./243. + (1334.*nf)/81.;
183 gammaDF1(3,4) = 509./486. - (8.*nf)/81.;
184 gammaDF1(3,5) = 13499./648. - (5.*nf)/27.;
185 gammaDF1(3,6) = -680./243. + (32.*nf)/81;
186 gammaDF1(3,7) = -427./81. - (37.*nf)/54.;
187 gammaDF1(3,8) = 784./729. - (2272.*n_d)/243. + (2912.*n_u)/243.;
189 gammaDF1(4,2) = -244480./81. - (160./9.)*nf;
190 gammaDF1(4,3) = -29648./81. - (2200./9.)*nf;
191 gammaDF1(4,4) = 23116./81. + (16./9.)*nf;
192 gammaDF1(4,5) = 3886./27. + (148./9.)*nf;
193 gammaDF1(4,6) = -6464./81.;
194 gammaDF1(4,7) = 8192./27. + 36.*nf;
195 gammaDF1(4,8) = -58112./243. + (320.*n_d)/3. - (640.*n_u)/3.;
197 gammaDF1(5,2) = 77600./243. - (1264./81.)*nf;
198 gammaDF1(5,3) = -28808./243. + (164./81.)*nf;
199 gammaDF1(5,4) = -20324./243. + (400./81.)*nf;
200 gammaDF1(5,5) = -21211./162.+ (622./27.)*nf;
201 gammaDF1(5,6) = -20096./243. - (976.*n_d)/81. + (2912.*n_u)/81.;
202 gammaDF1(5,7) = -6040./81. + (220./27.)*nf;
203 gammaDF1(5,8) = -22784./729. - (20704.*n_d)/243. + (28544.*n_u)/243.;
205 gammaDF1(6,6) = 1936./9.-224./27.*nf-2*
model.
Beta1(nf);
207 gammaDF1(7,6) = -368./9.+224./81.*nf;
208 gammaDF1(7,7) = 1456./9.-61./27.*nf-2*
model.
Beta1(nf);
222 throw std::runtime_error(
"EvolDF1bsg::AnomalousDimension_M(): order not implemented");
235 unsigned int nf = n_u + n_d;
236 double z3 = gsl_sf_zeta_int(3);
238 mat1(0,6) = - 13454./2187. + 44./2187.*nf;
239 mat1(1,6) = 20644./729. - 88./729.*nf;
240 mat1(2,6) = 119456./729. + 5440./729.*n_d -21776./729.*n_u;
241 mat1(3,6) = - 202990./2187. + 32./729.*n_d*n_d + n_d*(16888./2187. + 64./729.*n_u)
242 - 17132./2187.*n_u + 32./729.*n_u*n_u;
243 mat1(4,6) = 530240./243. + 300928./729.*n_d - 461120./729.*n_u;
244 mat1(5,6) = - 1112344./729. + 5432./729.*n_d*n_d + n_d*(419440./2187. -
245 2744./729.*n_u) + 143392./2187.*n_u - 8176./729.*n_u*n_u;
247 mat1(0,7) = 25759./5832. + 431./5832.*nf;
248 mat1(1,7) = 9733./486. - 917./972.*nf;
249 mat1(2,7) = 82873./243. - 3361./243.*nf;
250 mat1(3,7) = - 570773./2916. - 253./486.*n_d*n_d +n_d*(-40091./5832. -
251 253./243.*n_u) - 40091./5832.*n_u - 253./486.*n_u*n_u;
252 mat1(4,7) = 838684./81. - 14.*n_d*n_d + n_d*(129074./243. - 28.*n_u) +
253 129074./243.*n_u - 14.*n_u*n_u;
254 mat1(5,7) = - 923522./243. - 6031./486.*n_d*n_d + n_d*(-13247./1458. - 6031./243.*n_u)
255 -13247./1458.*n_u - 6031./486.*n_u*n_u;
257 mat1(0,8) = - 2357278./19683. + 14440./6561.*n_d + 144688./6561.*n_u + 6976./243.*z3;
258 mat1(1,8) = - 200848./6561. - 23696./2187.*n_d + 30736./2187.*n_u - 3584./81.*z3;
259 mat1(2,8) = - 1524104./6561. - 176./27.*n_d*n_d + 352./27.*n_u*n_u +
260 n_d*(257564./2187. + 176./27.*n_u - 128./3.*z3) - 256./81.*z3 +
261 n_u*(-382984./2187. + 256./3.*z3);
262 mat1(3,8) = 1535926./19683. + 1984./2187.*n_d*n_d - 5792./2187.*n_u*n_u +
263 n_d*(-256901./6561. - 3808./2187.*n_u - 2720./81.*z3) -
264 5056./243.*z3 + n_u*(34942./6561. + 1600./81.*z3);
265 mat1(4,8) = - 31433600./6561. - 2912./27.*n_d*n_d + 5824./27.*n_u*n_u +
266 n_d*(- 3786616./2187. + 2912./27.*n_u - 1280./3.*z3) -
267 4096./81.*z3 + n_u*(7525520./2187. + 2560./3.*z3);
268 mat1(5,8) = 48510784./19683. -51296./2187.*n_d*n_d + 54976./2187.*n_u*n_u +
269 n_u*(-11231648./6561. - 22016./81.*z3) + n_d*(340984./6561. +
270 3680./2187.*n_u - 8192./81.*z3) - 80896./243.*z3;
276 for (
unsigned int i=0; i<6; i++){
277 for (
unsigned int j=6; j<
dim; j++){
278 mat(i,j) = mat1(i,j);
281 for (
unsigned int i=6; i<
dim; i++){
282 for (
unsigned int j=6; j<
dim; j++){
283 mat(i,j) = mat(i,j) + 2. * (i==j) *
model.
Beta1(nf);
289 for (
unsigned int i=0; i<6; i++){
290 for (
unsigned int j=6; j<
dim; j++){
294 for (
unsigned int i=6; i<
dim; i++){
295 for (
unsigned int j=6; j<
dim; j++){
296 mat(i,j) = mat(i,j) + 2. * (i==j) *
model.
Beta0(nf);
301 throw std::runtime_error(
"change to rescaled operator basis: order not implemented");
352 std::stringstream out;
354 throw std::runtime_error(
"EvolDF1bsg::Df1Evolbsg(): scheme " + out.str() +
" not implemented ");
360 if (mu == this->mu && M == this->M && scheme == this->scheme)
361 return (*
Evol(order));
367 std::stringstream out;
368 out <<
"M = " << M <<
" < mu = " <<
mu;
386 return (*
Evol(order));
395 int L = 6 - (int) nf;
396 double alsM =
model.
Als(M) / 4. / M_PI;
397 double alsmu =
model.
Als(mu) / 4. / M_PI;
399 double eta = alsM / alsmu;
401 for (
unsigned int k = 0; k <
dim; k++) {
403 for (
unsigned int i = 0; i <
dim; i++){
404 for (
unsigned int j = 0; j <
dim; j++) {
407 if(fabs(
e(i).real() -
e(j).real() + 2. *
model.
Beta0(nf))>0.000000000001) {
408 resNLO(i, j) +=
c[L][i][j][k] * etap * alsmu;
409 resNLO(i, j) +=
d[L][i][j][k] * etap * alsM;
412 resNLO(i, j) += -
c[L][i][j][k] * etap * alsmu *
log(eta);
414 resLO(i, j) +=
b[L][i][j][k] * etap;
415 if (fabs(resLO(i, j)) < 1.
e-12) {resLO(i, j) = 0.;}
416 if (fabs(resNLO(i, j)) < 1.
e-12) {resNLO(i, j) = 0.;}
432 throw std::runtime_error(
"Error in EvolDF1bsg::Df1Evolbsg()");
gslpp::matrix< gslpp::complex > gg
gslpp::matrix< double > & Df1EvolMll(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 > vi
A class for constructing and defining operations on real matrices.
double Beta1(const double nf) const
The coefficient for a certain number of flavours .
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
orders
An enum type for orders in QCD.
gslpp::matrix< gslpp::complex > jv
complex pow(const complex &z1, const complex &z2)
gslpp::matrix< gslpp::complex > js
double Als(const double mu, const orders order=FULLNLO) const
Computes the running strong coupling in the scheme. In the cases of LO, NLO and FULLNNLO...
gslpp::matrix< gslpp::complex > h
gslpp::matrix< gslpp::complex > s_s
void setScales(double mu, double M)
Sets the upper and lower scale for the running of the Wilson Coefficients.
gslpp::matrix< gslpp::complex > vij
EvolDB1Mll(unsigned int dim, schemes scheme, orders order, const StandardModel &model)
EvolDF1bsg constructor.
A model class for the Standard Model.
gslpp::matrix< gslpp::complex > jssv
schemes
An enum type for regularization schemes.
matrix< double > transpose()
double AboveTh(const double mu) const
The active flavour threshold above the scale as defined in QCD::Thresholds().
gslpp::matrix< double > * Evol(orders order)
Evolution matrix set at a fixed order of QCD coupling.
gslpp::matrix< gslpp::complex > jss
gslpp::matrix< gslpp::complex > v
gslpp::matrix< double > ToEffectiveBasis(gslpp::matrix< double > mat) const
a method returning the anomalous dimension for the evolution of the effective Wilson coefficients ...
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 ...
virtual ~EvolDB1Mll()
EvolDF1bsg destructor.
gslpp::matrix< double > * elem[MAXORDER_EW+1]
complex log(const complex &z)
gslpp::vector< gslpp::complex > e
A class for the RG evolutor of the Wilson coefficients.
double Nf(const double mu) const
The number of active flavour at scale .
matrix< double > inverse()
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
const StandardModel & model
double getMz() const
A get method to access the mass of the boson .
double getAlsMz() const
A get method to access the value of .