9#include <gsl/gsl_errno.h>
10#include <gsl/gsl_matrix.h>
11#include <gsl/gsl_odeiv2.h>
19int RGEsTHDMW(
double t,
const double y[],
double beta[],
void *flags)
22 int ord = *(
int *)flags;
47 beta[0] = (12.0*la1*la1 + 4.0*la3*la3 + 4.0*la3*la4 + 4.0*la4*la4
48 + 8.0*nu1*nu1 + 8.0*nu1*nu2 + 8.0*nu2*nu2)/(16.0*pi*pi);
50 beta[1] = (12.0*la2*la2 + 4.0*la3*la3 + 4.0*la3*la4 + 4.0*la4*la4
51 + 8.0*om1*om1 + 8.0*om1*om2 + 8.0*om2*om2)/(16.0*pi*pi);
53 beta[2] = (4.0*la3*la3 + 4.0*la4*la4 + (la1+la2)*(6.0*la3+2.0*la4)
54 + 8.0*ka2*ka2 + 8.0*nu1*om1 + 4.0*nu2*om1 + 4.0*nu1*om2)/(16.0*pi*pi);
56 beta[3] = (la1*la4 + la2*la4 + 4.0*la3*la4 + 6.0*la4*la4
57 + 4.0*ka1*ka1 + 4.0*ka1*ka2 + 2.0*ka2*ka2 + 2.0*nu2*om2)/(8.0*pi*pi);
59 beta[4] = (11.0*mu1*mu1 + 3.0*mu1*mu4 + mu1*(2.0*mu1+6.0*mu3+3.0*mu4)
60 + 3.0*nu4*nu4 + 3.0*om4*om4)/(16.0*pi*pi);
62 beta[5] = (18.0*ka1*ka1 + 18.0*ka1*ka2 + 134.0*mu1*mu1 + 6.0*mu1*(39.0*mu3 + 22.0*mu4)
63 + 3.0*(30.0*mu3*mu3 + 39.0*mu3*mu4 + 9.0*mu4*mu4
64 + 3.0*nu1*nu1 + 3.0*nu1*nu2 - 5.0*nu4*nu4
65 + 3.0*om1*om1 + 3.0*om1*om2 - 5.0*om4*om4))/(72.0*pi*pi);
67 beta[6] = (18.0*ka2*ka2 + 4.0*mu1*mu1 + 156.0*mu1*mu4 + 54.0*mu3*mu4 + 144.0*mu4*mu4
68 + 9.0*nu2*nu2 + 6.0*nu4*nu4 + 9.0*om2*om2 + 6.0*om4*om4)/(144.0*pi*pi);
70 beta[7] = (6.0*ka1*ka1 + 6.0*ka2*ka2 + 18.0*la1*nu1
71 + 78.0*mu1*nu1 + 51.0*mu3*nu1 + 39.0*mu4*nu1 + 6.0*nu1*nu1
72 + 6.0*la1*nu2 + 32.0*mu1*nu2 + 24.0*mu3*nu2 + 6.0*mu4*nu2
73 + 6.0*nu2*nu2 + 10.0*nu4*nu4
74 + 12.0*la3*om1 + 6.0*la4*om1 + 6.0*la3*om2)/(48.0*pi*pi);
76 beta[8] = (6.0*ka1*ka1 + 6.0*ka2*ka2
77 + 12.0*la3*nu1 + 6.0*la4*nu1 + 6.0*la3*nu2
78 + 18.0*la2*om1 + 78.0*mu1*om1 + 51.0*mu3*om1 + 39.0*mu4*om1 + 6.0*om1*om1
79 + 6.0*la2*om2 + 32.0*mu1*om2 + 24.0*mu3*om2 + 6.0*mu4*om2 + 6.0*om2*om2
80 + 10.0*om4*om4)/(48.0*pi*pi);
82 beta[9] = (6.0*ka1*(2.0*la3 + 10.0*la4 + 18.0*mu1 + 17.0*mu3 + 13.0*mu4 + 2.0*nu1 + 2.0*om1)
83 + ka2*(24.0*la4 + 64.0*mu1 + 48.0*mu3 + 24.0*mu4 + 9.0*nu2 + 9.0*om2)
84 + 20.0*nu4*om4)/(96.0*pi*pi);
86 beta[10] = (4.0*ka1*ka2 + 6.0*ka2*ka2 + 2.0*la1*nu2 + ((14.0*mu1)/3.0 + mu3 + 9.0*mu4)*nu2
87 + 4.0*nu1*nu2 + 6.0*nu2*nu2 + (25.0*nu4*nu4)/3.0 + 2.0*la4*om2)/(16.0*pi*pi);
89 beta[11] = (4.0*ka1*ka2 + 6.0*ka2*ka2 + 2.0*la4*nu2 + 2.0*la2*om2
90 + ((14.0*mu1)/3.0 + mu3 + 9.0*mu4)*om2 + 4.0*om1*om2 + 6.0*om2*om2
91 + (25.0*om4*om4)/3.0)/(16.0*pi*pi);
93 beta[12] = (ka2*(6.0*la3 + 6.0*la4 + 14.0*mu1 + 3.0*mu3 + 27.0*mu4
94 + 6.0*nu1 + 12.0*nu2 + 6.0*om1 + 12.0*om2)
95 + 6.0*ka1*(nu2 + om2) + 42.0*nu4*om4)/(48.0*pi*pi);
97 beta[13] = (11.0*mu1*nu4 + 3.0*mu3*nu4 + 9.0*mu4*nu4 + 3.0*nu1*nu4 + 9.0*nu2*nu4
98 + 3.0*ka1*om4 + 9.0*ka2*om4)/(16.0*pi*pi);
100 beta[14] = (3.0*ka1*nu4 + 9.0*ka2*nu4
101 + (11.0*mu1 + 3.0*(mu3 + 3.0*mu4 + om1 + 3.0*om2))*om4)/(16.0*pi*pi);
139int RGEsMW(
double t,
const double y[],
double beta[],
void *flags)
142 int ord = *(
int *)flags;
167 beta[0] = (12.0*la1*la1 + 8.0*nu1*nu1 + 8.0*nu1*nu2 + 4.0*nu2*nu2 + 16.0*nu3*nu3)/(16.0*pi*pi);
169 beta[1] = (2.0*nu1*nu1 + nu2*nu2 + 4.0*nu3*nu3 + 2.0*la1*(3.0*nu1+nu2)
170 + (7.0*nu4*nu4 - 4.0*nu4*nu5 + 7.0*nu5*nu5)/3.0
171 + nu1*(8.0*mu1 + 8.0*mu2 + 17.0*mu3 + 10.0*mu4 + 3.0*mu5 + 5.0*mu6)
172 + nu2*(8.0*mu1 + 8.0*mu2 + 24.0*mu3 + 3.0*mu4
173 + 3.0*mu5 + 8.0*mu6)/3.0)/(16.0*pi*pi);
175 beta[2] = (2.0*nu2*nu2 + 4.0*nu1*nu2 + 16.0*nu3*nu3 + 2.0*la1*nu2
176 + (4.0*nu4*nu4 + 17.0*nu4*nu5 + 4.0*nu5*nu5)/3.0
177 + nu2*(8.0*mu1 + 8.0*mu2 + 3.0*mu3 + 24.0*mu4
178 + 3.0*mu5 - mu6)/3.0)/(16.0*pi*pi);
180 beta[3] = (2.0*nu3*(la1 + 2.0*nu1 + 3.0*nu2)
181 + (17.0*nu4*nu4 + 16.0*nu4*nu5 + 17.0*nu5*nu5)/12.0
182 + nu3*(-mu1 - mu2 + 3.0*mu3 + 3.0*mu4
183 + 24.0*mu5 + 8.0*mu6)/3.0)/(16.0*pi*pi);
185 beta[4] = (8.0*nu3*nu4 + 2.0*nu3*nu5
186 + nu5*(2.0*nu2 - mu2 + 2.0*mu4 + 4.0*mu5 + mu6)
187 + nu4*(3.0*nu1 + 2.0*nu2 + 6.0*mu1 + 2.0*mu2 + 3.0*mu3
188 + 2.0*mu4 + mu5 + mu6))/(16.0*pi*pi);
190 beta[5] = (2.0*nu3*nu4 + 8.0*nu3*nu5
191 + nu4*(2.0*nu2 - mu1 + 2.0*mu4 + 4.0*mu5 + mu6)
192 + nu5*(3.0*nu1 + 2.0*nu2 + 6.0*mu1 + 2.0*mu2 + 3.0*mu3
193 + 2.0*mu4 + mu5 + mu6))/(16.0*pi*pi);
195 beta[6] = (3.0*nu4*nu4 + 7.0*mu1*mu1
196 + mu1*(6.0*mu2 + 6.0*mu3 + 4.0*mu4 - mu5 - 2.0*mu6)
197 + mu2*(4.0*mu4 - mu5)
198 - 2.0*mu4*mu6 + 2.0*mu5*mu6 + mu6*mu6)/(16.0*pi*pi);
200 beta[7] = (3.0*nu5*nu5 + 7.0*mu2*mu2
201 + mu2*(6.0*mu1 + 6.0*mu3 + 4.0*mu4 - mu5 - 2.0*mu6)
202 + mu1*(4.0*mu4 - mu5)
203 - 2.0*mu4*mu6 + 2.0*mu5*mu6 + mu6*mu6)/(16.0*pi*pi);
205 beta[8] = (20.0*mu3*mu3
206 + mu3*(288.0*mu1 + 288.0*mu2 + 360.0*mu4 + 108.0*mu5 + 180.0*mu6)/18.0
207 + (36.0*nu1*nu1 + 36.0*nu1*nu2 - 24.0*nu4*nu4 - 12.0*nu4*nu5
208 - 24.0*nu5*nu5 + 62.0*mu1*mu1 + 64.0*mu1*mu2 + 62.0*mu2*mu2
209 + (96.0*mu4 + 18.0*mu5 + 58.0*mu6)*(mu1 + mu2)
210 + 54.0*mu4*mu4 + 36.0*mu4*mu5 + 132.0*mu4*mu6 + 18.0*mu5*mu5
211 + 18.0*mu5*mu6 + 29.0*mu6*mu6)/18.0)/(16.0*pi*pi);
213 beta[9] = (nu2*nu2 - (nu4*nu4 - 4.0*nu4*nu5 + nu5*nu5)/3.0 + 10.0*mu4*mu4
214 + mu5*(mu1 + mu2 + mu6)
215 + mu4*(4.0*(4.0*mu1 + 4.0*mu2 + mu6)/3.0 + 2.0*mu5 + 6.0*mu4)
217 + (mu1*mu1 + mu2*mu2 - 4.0*mu6*(mu1+mu2) - 2.0*mu6*mu6)/9.0
218 + 26.0/9.0*mu1*mu2)/(16.0*pi*pi);
220 beta[10] = (4.0*nu3*nu3 - (nu4*nu4 - 4.0*nu4*nu5 + nu5*nu5)/3.0
221 + mu5*((mu1 + mu2 + 19.0*mu6)/3.0 + 8.0*mu4 + 6.0*mu3)
222 + 2.0*mu4*mu6 + 8.0*mu5*mu5
223 + (mu1*mu1 + mu2*mu2 - 4.0*mu6*(mu1+mu2) + 7.0*mu6*mu6)/9.0
224 - 10.0/9.0*mu1*mu2)/(16.0*pi*pi);
226 beta[11] = (0.5*mu6*mu6 + 3.0*nu4*nu4 + 3.0*nu5*nu5
227 - 2.0*(mu1*mu1 + mu2*mu2) + 6.0*mu5*(mu1 + mu2)
228 + 7.0*mu6*(mu1 + mu2 + mu3))/(16.0*pi*pi);
263 int ord = *(
int *)flags;
283 beta[0] = (12.0*la1*la1 + 8.0*nu1*nu1 + 8.0*nu1*nu2 + 8.0*nu2*nu2)/(16.0*pi*pi);
285 beta[1] = (2.0*nu1*nu1 + 2.0*nu2*nu2 + 2.0*la1*(3.0*nu1+nu2)
287 + nu1*(26.0*mu1 + 17.0*mu3 + 13.0*mu4)
288 + nu2*(32.0*mu1 + 24.0*mu3 + 6.0*mu4)/3.0)/(16.0*pi*pi);
290 beta[2] = (4.0*nu1*nu2 + 6.0*nu2*nu2 + 2.0*la1*nu2 + 25.0*nu4*nu4/3.0
291 + nu2*(14.0*mu1 + 3.0*mu3 + 27.0*mu4)/3.0)/(16.0*pi*pi);
293 beta[3] = (3.0*nu1*nu4 + 9.0*nu2*nu4
294 + nu4*(11.0*mu1 + 3.0*mu3 + 9.0*mu4))/(16.0*pi*pi);
296 beta[4] = (3.0*nu4*nu4 + 13.0*mu1*mu1
297 + 6.0*mu1*(mu3+mu4))/(16.0*pi*pi);
299 beta[5] = (20.0*mu3*mu3
300 + mu3*(52.0*mu1 + 26.0*mu4)
301 + 2.0*nu1*nu1 + 2.0*nu1*nu2 - 10.0*nu4*nu4/3.0
302 + 268.0*mu1*mu1/9.0 + 88.0*mu1*mu4/3.0 + 6.0*mu4*mu4)/(16.0*pi*pi);
305 beta[6] = (nu2*nu2 + 2.0*nu4*nu4/3.0 + 16.0*mu4*mu4
306 + 52.0*mu1*mu4/3.0 + 6.0*mu3*mu4
307 + 4.0/9.0*mu1*mu1)/(16.0*pi*pi);
329int JacobianTHDMW (
double t,
const double y[],
double *dfdy,
double dfdt[],
void *order)
334int RGEcheckTHDMW(
const double InitialValues[],
const double t1,
const double Rpeps,
const double tNLOuni)
345 for(
int i=0;i<15;i++)
347 if(fabs(InitialValues[i])>4.0*M_PI) check=1;
350 double la1Q = InitialValues[0];
351 double la2Q = InitialValues[1];
352 double la3Q = InitialValues[2];
353 double la4Q = InitialValues[3];
354 double mu1Q = InitialValues[4];
355 double mu3Q = InitialValues[5];
356 double mu4Q = InitialValues[6];
357 double nu1Q = InitialValues[7];
358 double om1Q = InitialValues[8];
359 double ka1Q = InitialValues[9];
360 double nu2Q = InitialValues[10];
361 double om2Q = InitialValues[11];
362 double ka2Q = InitialValues[12];
363 double nu4Q = InitialValues[13];
364 double om4Q = InitialValues[14];
367 double muAtimes2=4.0*mu1Q+2.0*mu3Q+4.0*mu4Q;
368 if(la1Q<0.0) check=1;
369 if(la2Q<0.0) check=1;
370 if(muAtimes2<0.0) check=1;
371 if(5.0*mu1Q+3.0*mu3Q+3.0*mu4Q-fabs(mu1Q)<0.0) check=1;
372 if(sqrt(la1Q*muAtimes2)+nu1Q<0.0) check=1;
373 if(sqrt(la1Q*muAtimes2)+nu1Q+2.0*nu2Q<0.0) check=1;
374 if(la1Q+0.25*muAtimes2+nu1Q+2.0*nu2Q-2.0*fabs(nu4Q)/sqrt(3.0)<0.0) check=1;
375 if(la3Q+sqrt(la1Q*la2Q)<0.0) check=1;
376 if(la3Q+2.0*la4Q+sqrt(la1Q*la2Q)<0.0) check=1;
377 if(sqrt(la2Q*muAtimes2)+om1Q<0.0) check=1;
378 if(sqrt(la2Q*muAtimes2)+om1Q+2.0*om2Q<0.0) check=1;
379 if(la2Q+0.25*muAtimes2+om1Q+2.0*om2Q-2.0*fabs(om4Q)/sqrt(3.0)<0.0) check=1;
386 gslpp::matrix<gslpp::complex> Smatrix1(4,4,0.), Smatrix2(4,4,0.);
387 gslpp::matrix<gslpp::complex> Seigenvectors1(4,4,0.), Seigenvectors2(4,4,0.);
388 gslpp::vector<double> Seigenvalues1(4,0.), Seigenvalues2(4,0.);
389 gslpp::vector<gslpp::complex> unitarityeigenvalues(11,0.);
395 Smatrix1.assign(0,0, 3.0*la1Q/(16.0*pi));
396 Smatrix1.assign(0,1, (2.0*la3Q+la4Q)/(16.0*pi));
397 Smatrix1.assign(1,0, Smatrix1(0,1));
398 Smatrix1.assign(0,3, (2.0*nu1Q+nu2Q)/(8.0*sqrt(2.0)*pi));
399 Smatrix1.assign(3,0, Smatrix1(0,3));
400 Smatrix1.assign(1,1, 3.0*la2Q/(16.0*pi));
401 Smatrix1.assign(1,3, (2.0*om1Q+om2Q)/(8.0*sqrt(2.0)*pi));
402 Smatrix1.assign(3,1, Smatrix1(1,3));
403 Smatrix1.assign(2,2, (la3Q+5.0*la4Q)/(16.0*pi));
404 Smatrix1.assign(2,3, (4.0*ka1Q+2.0*ka2Q)/(16.0*pi));
405 Smatrix1.assign(3,2, Smatrix1(2,3));
406 Smatrix1.assign(3,3, (26.0*mu1Q+17.0*mu3Q+13.0*mu4Q)/(32.0*pi));
408 Smatrix2.assign(0,0, la1Q/(16.0*pi));
409 Smatrix2.assign(0,1, la4Q/(16.0*pi));
410 Smatrix2.assign(1,0, Smatrix2(0,1));
411 Smatrix2.assign(0,3, nu2Q/(8.0*sqrt(2.0)*pi));
412 Smatrix2.assign(3,0, Smatrix2(0,3));
413 Smatrix2.assign(1,1, la2Q/(16.0*pi));
414 Smatrix2.assign(1,3, om2Q/(8.0*sqrt(2.0)*pi));
415 Smatrix2.assign(3,1, Smatrix2(1,3));
416 Smatrix2.assign(2,2, (la3Q+la4Q)/(16.0*pi));
417 Smatrix2.assign(2,3, ka2Q/(8.0*pi));
418 Smatrix2.assign(3,2, Smatrix2(2,3));
419 Smatrix2.assign(3,3, (14.0*mu1Q+3.0*mu3Q+27.0*mu4Q)/(96.0*pi));
421 Smatrix1.eigensystem(Seigenvectors1, Seigenvalues1);
422 Smatrix2.eigensystem(Seigenvectors2, Seigenvalues2);
424 for (
int i=0; i < 4; i++) {
425 unitarityeigenvalues.assign(i, Seigenvalues1(i));
426 unitarityeigenvalues.assign(4+i, Seigenvalues2(i));
428 unitarityeigenvalues.assign(8, (la3Q-la4Q)/(16.0*pi));
429 unitarityeigenvalues.assign(9, sqrt(15.0)*nu4Q/(16.0*pi));
430 unitarityeigenvalues.assign(10, sqrt(15.0)*om4Q/(16.0*pi));
433 double betala1 = 12.0*la1Q*la1Q + 4.0*la3Q*la3Q + 4.0*la3Q*la4Q + 4.0*la4Q*la4Q
434 + 8.0*nu1Q*nu1Q + 8.0*nu1Q*nu2Q + 8.0*nu2Q*nu2Q;
436 double betala2 = 12.0*la2Q*la2Q + 4.0*la3Q*la3Q + 4.0*la3Q*la4Q + 4.0*la4Q*la4Q
437 + 8.0*om1Q*om1Q + 8.0*om1Q*om2Q + 8.0*om2Q*om2Q;
439 double betala3 = 4.0*la3Q*la3Q + 4.0*la4Q*la4Q + (la1Q+la2Q)*(6.0*la3Q+2.0*la4Q)
440 + 8.0*ka2Q*ka2Q + 8.0*nu1Q*om1Q + 4.0*nu2Q*om1Q + 4.0*nu1Q*om2Q;
442 double betala4 = (la1Q*la4Q + la2Q*la4Q + 4.0*la3Q*la4Q + 6.0*la4Q*la4Q
443 + 4.0*ka1Q*ka1Q + 4.0*ka1Q*ka2Q + 2.0*ka2Q*ka2Q + 2.0*nu2Q*om2Q)*2.0;
445 double betamu1 = 11.0*mu1Q*mu1Q + 3.0*mu1Q*mu4Q + mu1Q*(2.0*mu1Q+6.0*mu3Q+3.0*mu4Q)
446 + 3.0*nu4Q*nu4Q + 3.0*om4Q*om4Q;
448 double betamu3 = (18.0*ka1Q*ka1Q + 18.0*ka1Q*ka2Q + 134.0*mu1Q*mu1Q + 6.0*mu1Q*(39.0*mu3Q + 22.0*mu4Q)
449 + 3.0*(30.0*mu3Q*mu3Q + 39.0*mu3Q*mu4Q + 9.0*mu4Q*mu4Q
450 + 3.0*nu1Q*nu1Q + 3.0*nu1Q*nu2Q - 5.0*nu4Q*nu4Q
451 + 3.0*om1Q*om1Q + 3.0*om1Q*om2Q - 5.0*om4Q*om4Q))/4.5;
453 double betamu4 = (18.0*ka2Q*ka2Q + 4.0*mu1Q*mu1Q + 156.0*mu1Q*mu4Q + 54.0*mu3Q*mu4Q + 144.0*mu4Q*mu4Q
454 + 9.0*nu2Q*nu2Q + 6.0*nu4Q*nu4Q + 9.0*om2Q*om2Q + 6.0*om4Q*om4Q)/9.0;
456 double betanu1 = (6.0*ka1Q*ka1Q + 6.0*ka2Q*ka2Q + 18.0*la1Q*nu1Q
457 + 78.0*mu1Q*nu1Q + 51.0*mu3Q*nu1Q + 39.0*mu4Q*nu1Q + 6.0*nu1Q*nu1Q
458 + 6.0*la1Q*nu2Q + 32.0*mu1Q*nu2Q + 24.0*mu3Q*nu2Q + 6.0*mu4Q*nu2Q
459 + 6.0*nu2Q*nu2Q + 10.0*nu4Q*nu4Q
460 + 12.0*la3Q*om1Q + 6.0*la4Q*om1Q + 6.0*la3Q*om2Q)/3.0;
462 double betaom1 = (6.0*ka1Q*ka1Q + 6.0*ka2Q*ka2Q
463 + 12.0*la3Q*nu1Q + 6.0*la4Q*nu1Q + 6.0*la3Q*nu2Q
464 + 18.0*la2Q*om1Q + 78.0*mu1Q*om1Q + 51.0*mu3Q*om1Q + 39.0*mu4Q*om1Q + 6.0*om1Q*om1Q
465 + 6.0*la2Q*om2Q + 32.0*mu1Q*om2Q + 24.0*mu3Q*om2Q + 6.0*mu4Q*om2Q + 6.0*om2Q*om2Q
466 + 10.0*om4Q*om4Q)/3.0;
468 double betaka1 = (6.0*ka1Q*(2.0*la3Q + 10.0*la4Q + 18.0*mu1Q + 17.0*mu3Q + 13.0*mu4Q + 2.0*nu1Q + 2.0*om1Q)
469 + ka2Q*(24.0*la4Q + 64.0*mu1Q + 48.0*mu3Q + 24.0*mu4Q + 9.0*nu2Q + 9.0*om2Q)
470 + 20.0*nu4Q*om4Q)/6.0;
472 double betanu2 = 4.0*ka1Q*ka2Q + 6.0*ka2Q*ka2Q + 2.0*la1Q*nu2Q + ((14.0*mu1Q)/3.0 + mu3Q + 9.0*mu4Q)*nu2Q
473 + 4.0*nu1Q*nu2Q + 6.0*nu2Q*nu2Q + (25.0*nu4Q*nu4Q)/3.0 + 2.0*la4Q*om2Q;
475 double betaom2 = 4.0*ka1Q*ka2Q + 6.0*ka2Q*ka2Q + 2.0*la4Q*nu2Q + 2.0*la2Q*om2Q
476 + ((14.0*mu1Q)/3.0 + mu3Q + 9.0*mu4Q)*om2Q + 4.0*om1Q*om2Q + 6.0*om2Q*om2Q
477 + (25.0*om4Q*om4Q)/3.0;
479 double betaka2 = (ka2Q*(6.0*la3Q + 6.0*la4Q + 14.0*mu1Q + 3.0*mu3Q + 27.0*mu4Q
480 + 6.0*nu1Q + 12.0*nu2Q + 6.0*om1Q + 12.0*om2Q)
481 + 6.0*ka1Q*(nu2Q + om2Q) + 42.0*nu4Q*om4Q)/3.0;
483 double betanu4 = 11.0*mu1Q*nu4Q + 3.0*mu3Q*nu4Q + 9.0*mu4Q*nu4Q + 3.0*nu1Q*nu4Q + 9.0*nu2Q*nu4Q
484 + 3.0*ka1Q*om4Q + 9.0*ka2Q*om4Q;
486 double betaom4 = 3.0*ka1Q*nu4Q + 9.0*ka2Q*nu4Q
487 + (11.0*mu1Q + 3.0*(mu3Q + 3.0*mu4Q + om1Q + 3.0*om2Q))*om4Q;
490 gslpp::matrix<gslpp::complex> Sbmatrix1(4,4,0.), Sbmatrix2(4,4,0.);
491 gslpp::matrix<gslpp::complex> Seigenvectors1T(4,4,0.), Seigenvectors2T(4,4,0.);
492 gslpp::vector<gslpp::complex> Sbeigenvalues1(4,0.), Sbeigenvalues2(4,0.);
493 gslpp::vector<gslpp::complex> betaeigenvalues(11,0.);
494 gslpp::vector<gslpp::complex> NLOunitarityeigenvalues(11,0.);
496 Sbmatrix1.assign(0,0, 3.0*betala1/(16.0*pi));
497 Sbmatrix1.assign(0,1, (2.0*betala3+betala4)/(16.0*pi));
498 Sbmatrix1.assign(1,0, Sbmatrix1(0,1));
499 Sbmatrix1.assign(0,3, (2.0*betanu1+betanu2)/(8.0*sqrt(2.0)*pi));
500 Sbmatrix1.assign(3,0, Sbmatrix1(0,3));
501 Sbmatrix1.assign(1,1, 3.0*betala2/(16.0*pi));
502 Sbmatrix1.assign(1,3, (2.0*betaom1+betaom2)/(8.0*sqrt(2.0)*pi));
503 Sbmatrix1.assign(3,1, Sbmatrix1(1,3));
504 Sbmatrix1.assign(2,2, (betala3+5.0*betala4)/(16.0*pi));
505 Sbmatrix1.assign(2,3, (4.0*betaka1+2.0*betaka2)/(16.0*pi));
506 Sbmatrix1.assign(3,2, Sbmatrix1(2,3));
507 Sbmatrix1.assign(3,3, (26.0*betamu1+17.0*betamu3+13.0*betamu4)/(32.0*pi));
509 Sbmatrix2.assign(0,0, betala1/(16.0*pi));
510 Sbmatrix2.assign(0,1, betala4/(16.0*pi));
511 Sbmatrix2.assign(1,0, Sbmatrix2(0,1));
512 Sbmatrix2.assign(0,3, betanu2/(8.0*sqrt(2.0)*pi));
513 Sbmatrix2.assign(3,0, Sbmatrix2(0,3));
514 Sbmatrix2.assign(1,1, betala2/(16.0*pi));
515 Sbmatrix2.assign(1,3, betaom2/(8.0*sqrt(2.0)*pi));
516 Sbmatrix2.assign(3,1, Sbmatrix2(1,3));
517 Sbmatrix2.assign(2,2, (betala3+betala4)/(16.0*pi));
518 Sbmatrix2.assign(2,3, betaka2/(8.0*pi));
519 Sbmatrix2.assign(3,2, Sbmatrix2(2,3));
520 Sbmatrix2.assign(3,3, (14.0*betamu1+3.0*betamu3+27.0*betamu4)/(96.0*pi));
522 Seigenvectors1T=Seigenvectors1.hconjugate();
523 Seigenvectors2T=Seigenvectors2.hconjugate();
525 for (
int i=0; i < 4; i++) {
526 for (
int k=0; k < 4; k++) {
527 for (
int l=0; l < 4; l++) {
528 Sbeigenvalues1.assign(i, Sbeigenvalues1(i) + Seigenvectors1T(i,k) * Sbmatrix1(k,l) * Seigenvectors1(l,i) );
529 Sbeigenvalues2.assign(i, Sbeigenvalues2(i) + Seigenvectors2T(i,k) * Sbmatrix2(k,l) * Seigenvectors2(l,i) );
532 betaeigenvalues.assign(i, -1.5 * Sbeigenvalues1(i));
533 betaeigenvalues.assign(i+4, -1.5 * Sbeigenvalues2(i));
536 betaeigenvalues.assign(8, -1.5 * (betala3-betala4)/(16.0*pi));
537 betaeigenvalues.assign(9, -1.5 * sqrt(15.0)*betanu4/(16.0*pi));
538 betaeigenvalues.assign(10, -1.5 * sqrt(15.0)*betaom4/(16.0*pi));
540 for (
int i=0; i < 11; i++) {
541 NLOunitarityeigenvalues.assign(i, -(gslpp::complex::i()-1.0/pi)*unitarityeigenvalues(i)*unitarityeigenvalues(i) + betaeigenvalues(i) );
542 if( ( unitarityeigenvalues(i) + NLOunitarityeigenvalues(i).real() ).abs() > 0.5) check=1;
543 if( (unitarityeigenvalues(i)).abs() > Rpeps && (NLOunitarityeigenvalues(i)/unitarityeigenvalues(i)).abs() > 1.0) check=1;
550int RGEcheckMW(
const double InitialValues[],
const double t1,
const double Rpeps,
const double tNLOuni)
555 for(
int i=0;i<12;i++)
557 if(fabs(InitialValues[i])>4.0*M_PI) check=1;
560 double la1Q = InitialValues[0];
561 double nu1Q = InitialValues[1];
562 double nu2Q = InitialValues[2];
563 double nu3Q = InitialValues[3];
564 double nu4Q = InitialValues[4];
565 double nu5Q = InitialValues[5];
566 double mu1Q = InitialValues[6];
567 double mu2Q = InitialValues[7];
568 double mu3Q = InitialValues[8];
569 double mu4Q = InitialValues[9];
570 double mu5Q = InitialValues[10];
571 double mu6Q = InitialValues[11];
574 double muAtimes2=mu1Q+mu2Q+mu6Q+2.0*(mu3Q+mu4Q+mu5Q);
575 if(la1Q<0.0) check=1;
576 if(muAtimes2<0.0) check=1;
577 if(mu1Q+mu2Q+mu3Q+mu4Q<0.0) check=1;
578 if(14.0*(mu1Q+mu2Q)+5.0*mu6Q+24.0*(mu3Q+mu4Q)-3.0*fabs(2.0*(mu1Q+mu2Q)-mu6Q)<0.0) check=1;
579 if(5.0*(mu1Q+mu2Q+mu6Q)+6.0*(2.0*mu3Q+mu4Q+mu5Q)-fabs(mu1Q+mu2Q+mu6Q)<0.0) check=1;
580 if(sqrt(la1Q*muAtimes2)+nu1Q<0.0) check=1;
581 if(sqrt(la1Q*muAtimes2)+nu1Q+nu2Q-2.0*fabs(nu3Q)<0.0) check=1;
582 if(la1Q+0.25*muAtimes2+nu1Q+nu2Q+2.0*nu3Q-fabs(nu4Q+nu5Q)/sqrt(3.0)<0.0) check=1;
589 gslpp::vector<gslpp::complex> unitarityeigenvalues(8,0.);
594 double muA = 4.0*mu1Q+4.0*mu2Q+8.5*mu3Q+5.0*mu4Q+1.5*mu5Q+2.5*mu6Q;
595 double muB = (4.0*mu1Q+4.0*mu2Q+1.5*mu3Q+12.0*mu4Q+1.5*mu5Q-0.5*mu6Q)/3.0;
596 double muC = (-0.5*mu1Q-0.5*mu2Q+1.5*mu3Q+1.5*mu4Q+12.0*mu5Q+4.0*mu6Q)/3.0;
597 double MA1 = 3.0*la1Q + muA - sqrt(9.0*la1Q*la1Q-6.0*la1Q*muA+muA*muA+32.0*nu1Q*nu1Q+32.0*nu1Q*nu2Q+8.0*nu2Q*nu2Q);
598 double MA2 = 3.0*la1Q + muA + sqrt(9.0*la1Q*la1Q-6.0*la1Q*muA+muA*muA+32.0*nu1Q*nu1Q+32.0*nu1Q*nu2Q+8.0*nu2Q*nu2Q);
599 double MB1 = la1Q + muB - sqrt(la1Q*la1Q-2.0*la1Q*muB+muB*muB+8.0*nu2Q*nu2Q);
600 double MB2 = la1Q + muB + sqrt(la1Q*la1Q-2.0*la1Q*muB+muB*muB+8.0*nu2Q*nu2Q);
601 double MC1 = la1Q + muC - sqrt(la1Q*la1Q-2.0*la1Q*muC+muC*muC+32.0*nu3Q*nu3Q);
602 double MC2 = la1Q + muC + sqrt(la1Q*la1Q-2.0*la1Q*muC+muC*muC+32.0*nu3Q*nu3Q);
603 unitarityeigenvalues.assign(0, MA1/(32.0*pi));
604 unitarityeigenvalues.assign(1, MA2/(32.0*pi));
605 unitarityeigenvalues.assign(2, MB1/(32.0*pi));
606 unitarityeigenvalues.assign(3, MB2/(32.0*pi));
607 unitarityeigenvalues.assign(4, MC1/(32.0*pi));
608 unitarityeigenvalues.assign(5, MC2/(32.0*pi));
609 unitarityeigenvalues.assign(6, la1Q/(16.0*pi));
610 unitarityeigenvalues.assign(7, sqrt(15.0)*(nu4Q+nu5Q)/(64.0*pi));
614 double betala1 = 12.0*la1Q*la1Q + 8.0*nu1Q*nu1Q + 8.0*nu1Q*nu2Q + 4.0*nu2Q*nu2Q + 16.0*nu3Q*nu3Q;
616 double betanu1 = 2.0*nu1Q*nu1Q + nu2Q*nu2Q + 4.0*nu3Q*nu3Q + 2.0*la1Q*(3.0*nu1Q+nu2Q)
617 + (7.0*nu4Q*nu4Q - 4.0*nu4Q*nu5Q + 7.0*nu5Q*nu5Q)/3.0
618 + nu1Q*(8.0*mu1Q + 8.0*mu2Q + 17.0*mu3Q + 10.0*mu4Q + 3.0*mu5Q + 5.0*mu6Q)
619 + nu2Q*(8.0*mu1Q + 8.0*mu2Q + 24.0*mu3Q + 3.0*mu4Q
620 + 3.0*mu5Q + 8.0*mu6Q)/3.0;
622 double betanu2 = 2.0*nu2Q*nu2Q + 4.0*nu1Q*nu2Q + 16.0*nu3Q*nu3Q + 2.0*la1Q*nu2Q
623 + (4.0*nu4Q*nu4Q + 17.0*nu4Q*nu5Q + 4.0*nu5Q*nu5Q)/3.0
624 + nu2Q*(8.0*mu1Q + 8.0*mu2Q + 3.0*mu3Q + 24.0*mu4Q
625 + 3.0*mu5Q - mu6Q)/3.0;
627 double betanu3 = 2.0*nu3Q*(la1Q + 2.0*nu1Q + 3.0*nu2Q)
628 + (17.0*nu4Q*nu4Q + 16.0*nu4Q*nu5Q + 17.0*nu5Q*nu5Q)/12.0
629 + nu3Q*(-mu1Q - mu2Q + 3.0*mu3Q + 3.0*mu4Q
630 + 24.0*mu5Q + 8.0*mu6Q)/3.0;
632 double betanu4 = 8.0*nu3Q*nu4Q + 2.0*nu3Q*nu5Q
633 + nu5Q*(2.0*nu2Q - mu2Q + 2.0*mu4Q + 4.0*mu5Q + mu6Q)
634 + nu4Q*(3.0*nu1Q + 2.0*nu2Q + 6.0*mu1Q + 2.0*mu2Q + 3.0*mu3Q
635 + 2.0*mu4Q + mu5Q + mu6Q);
637 double betanu5 = 2.0*nu3Q*nu4Q + 8.0*nu3Q*nu5Q
638 + nu4Q*(2.0*nu2Q - mu1Q + 2.0*mu4Q + 4.0*mu5Q + mu6Q)
639 + nu5Q*(3.0*nu1Q + 2.0*nu2Q + 6.0*mu1Q + 2.0*mu2Q + 3.0*mu3Q
640 + 2.0*mu4Q + mu5Q + mu6Q);
642 double betamu1 = 3.0*nu4Q*nu4Q + 7.0*mu1Q*mu1Q
643 + mu1Q*(6.0*mu2Q + 6.0*mu3Q + 4.0*mu4Q - mu5Q - 2.0*mu6Q)
644 + mu2Q*(4.0*mu4Q - mu5Q)
645 - 2.0*mu4Q*mu6Q + 2.0*mu5Q*mu6Q + mu6Q*mu6Q;
647 double betamu2 = 3.0*nu5Q*nu5Q + 7.0*mu2Q*mu2Q
648 + mu2Q*(6.0*mu1Q + 6.0*mu3Q + 4.0*mu4Q - mu5Q - 2.0*mu6Q)
649 + mu1Q*(4.0*mu4Q - mu5Q)
650 - 2.0*mu4Q*mu6Q + 2.0*mu5Q*mu6Q + mu6Q*mu6Q;
652 double betamu3 = 20.0*mu3Q*mu3Q
653 + mu3Q*(288.0*mu1Q + 288.0*mu2Q + 360.0*mu4Q + 108.0*mu5Q + 180.0*mu6Q)/18.0
654 + (36.0*nu1Q*nu1Q + 36.0*nu1Q*nu2Q - 24.0*nu4Q*nu4Q - 12.0*nu4Q*nu5Q
655 - 24.0*nu5Q*nu5Q + 62.0*mu1Q*mu1Q + 64.0*mu1Q*mu2Q + 62.0*mu2Q*mu2Q
656 + (96.0*mu4Q + 18.0*mu5Q + 58.0*mu6Q)*(mu1Q + mu2Q)
657 + 54.0*mu4Q*mu4Q + 36.0*mu4Q*mu5Q + 132.0*mu4Q*mu6Q + 18.0*mu5Q*mu5Q
658 + 18.0*mu5Q*mu6Q + 29.0*mu6Q*mu6Q)/18.0;
660 double betamu4 = nu2Q*nu2Q - (nu4Q*nu4Q - 4.0*nu4Q*nu5Q + nu5Q*nu5Q)/3.0 + 10.0*mu4Q*mu4Q
661 + mu5Q*(mu1Q + mu2Q + mu6Q)
662 + mu4Q*(4.0*(4.0*mu1Q + 4.0*mu2Q + mu6Q)/3.0 + 2.0*mu5Q + 6.0*mu4Q)
664 + (mu1Q*mu1Q + mu2Q*mu2Q - 4.0*mu6Q*(mu1Q+mu2Q) - 2.0*mu6Q*mu6Q)/9.0
665 + 26.0/9.0*mu1Q*mu2Q;
667 double betamu5 = 4.0*nu3Q*nu3Q - (nu4Q*nu4Q - 4.0*nu4Q*nu5Q + nu5Q*nu5Q)/3.0
668 + mu5Q*((mu1Q + mu2Q + 19.0*mu6Q)/3.0 + 8.0*mu4Q + 6.0*mu3Q)
669 + 2.0*mu4Q*mu6Q + 8.0*mu5Q*mu5Q
670 + (mu1Q*mu1Q + mu2Q*mu2Q - 4.0*mu6Q*(mu1Q+mu2Q) + 7.0*mu6Q*mu6Q)/9.0
671 - 10.0/9.0*mu1Q*mu2Q;
673 double betamu6 = 0.5*mu6Q*mu6Q + 3.0*nu4Q*nu4Q + 3.0*nu5Q*nu5Q
674 - 2.0*(mu1Q*mu1Q + mu2Q*mu2Q) + 6.0*mu5Q*(mu1Q + mu2Q)
675 + 7.0*mu6Q*(mu1Q + mu2Q + mu3Q);
677 double betamuA = 4.0*betamu1+4.0*betamu2+8.5*betamu3+5.0*betamu4+1.5*betamu5+2.5*betamu6;
678 double betamuB = (4.0*betamu1+4.0*betamu2+1.5*betamu3+12.0*betamu4+1.5*betamu5-0.5*betamu6)/3.0;
679 double betamuC = (-0.5*betamu1-0.5*betamu2+1.5*betamu3+1.5*betamu4+12.0*betamu5+4.0*betamu6)/3.0;
680 double betaMA1 = 3.0*betala1 + betamuA
681 - sqrt(9.0*betala1*betala1-6.0*betala1*betamuA+betamuA*betamuA
682 +32.0*betanu1*betanu1+32.0*betanu1*betanu2+8.0*betanu2*betanu2);
683 double betaMA2 = 3.0*betala1 + betamuA
684 + sqrt(9.0*betala1*betala1-6.0*betala1*betamuA+betamuA*betamuA
685 +32.0*betanu1*betanu1+32.0*betanu1*betanu2+8.0*betanu2*betanu2);
686 double betaMB1 = betala1 + betamuB - sqrt(betala1*betala1-2.0*betala1*betamuB+betamuB*betamuB+8.0*betanu2*betanu2);
687 double betaMB2 = betala1 + betamuB + sqrt(betala1*betala1-2.0*betala1*betamuB+betamuB*betamuB+8.0*betanu2*betanu2);
688 double betaMC1 = betala1 + betamuC - sqrt(betala1*betala1-2.0*betala1*betamuC+betamuC*betamuC+32.0*betanu3*betanu3);
689 double betaMC2 = betala1 + betamuC + sqrt(betala1*betala1-2.0*betala1*betamuC+betamuC*betamuC+32.0*betanu3*betanu3);
691 gslpp::vector<gslpp::complex> betaeigenvalues(8,0.);
692 gslpp::vector<gslpp::complex> NLOunitarityeigenvalues(8,0.);
694 betaeigenvalues.assign(0, -1.5 * betaMA1/(32.0*pi));
695 betaeigenvalues.assign(1, -1.5 * betaMA2/(32.0*pi));
696 betaeigenvalues.assign(2, -1.5 * betaMB1/(32.0*pi));
697 betaeigenvalues.assign(3, -1.5 * betaMB2/(32.0*pi));
698 betaeigenvalues.assign(4, -1.5 * betaMC1/(32.0*pi));
699 betaeigenvalues.assign(5, -1.5 * betaMC2/(32.0*pi));
700 betaeigenvalues.assign(6, -1.5 * betala1/(16.0*pi));
701 betaeigenvalues.assign(7, -1.5 * sqrt(15.0)*(betanu4+betanu5)/(64.0*pi));
703 for (
int i=0; i < 8; i++) {
704 NLOunitarityeigenvalues.assign(i, -(gslpp::complex::i()-1.0/pi)*unitarityeigenvalues(i)*unitarityeigenvalues(i) + betaeigenvalues(i) );
705 if( ( unitarityeigenvalues(i) + NLOunitarityeigenvalues(i).real() ).abs() > 0.5) check=1;
706 if( (unitarityeigenvalues(i)).abs() > Rpeps && (NLOunitarityeigenvalues(i)/unitarityeigenvalues(i)).abs() > 1.0) check=1;
715int RGEcheckcustodialMW(
const double InitialValues[],
const double t1,
const double Rpeps,
const double tNLOuni)
722 if(fabs(InitialValues[i])>4.0*M_PI) check=1;
725 double la1Q = InitialValues[0];
726 double nu1Q = InitialValues[1];
727 double nu2Q = InitialValues[2];
728 double nu4Q = InitialValues[3];
729 double mu1Q = InitialValues[4];
730 double mu3Q = InitialValues[5];
731 double mu4Q = InitialValues[6];
734 double muAtimes2=4.0*mu1Q+2.0*mu3Q+4.0*mu4Q;
735 if(la1Q<0.0) check=1;
736 if(muAtimes2<0.0) check=1;
737 if(5.0*mu1Q+3.0*mu3Q+3.0*mu4Q-fabs(mu1Q)<0.0) check=1;
738 if(sqrt(la1Q*muAtimes2)+nu1Q+nu2Q-fabs(nu2Q)<0.0) check=1;
739 if(la1Q+0.25*muAtimes2+nu1Q+2.0*nu2Q-2.0*fabs(nu4Q)/sqrt(3.0)<0.0) check=1;
744 gslpp::matrix<gslpp::complex> Smatrix1(2,2,0.), Smatrix2(2,2,0.);
745 gslpp::matrix<gslpp::complex> Seigenvectors1(2,2,0.), Seigenvectors2(2,2,0.);
746 gslpp::vector<double> Seigenvalues1(2,0.), Seigenvalues2(2,0.);
747 gslpp::vector<gslpp::complex> unitarityeigenvalues(5,0.);
753 Smatrix1.assign(0,0, 3.0*la1Q/(16.0*pi));
754 Smatrix1.assign(0,1, (2.0*nu1Q+nu2Q)/(8.0*sqrt(2.0)*pi));
755 Smatrix1.assign(1,0, Smatrix1(0,1));
756 Smatrix1.assign(1,1, (26.0*mu1Q+17.0*mu3Q+13.0*mu4Q)/(32.0*pi));
758 Smatrix2.assign(0,0, la1Q/(16.0*pi));
759 Smatrix2.assign(0,1, nu2Q/(8.0*sqrt(2.0)*pi));
760 Smatrix2.assign(1,0, Smatrix2(0,1));
761 Smatrix2.assign(1,1, (14.0*mu1Q+3.0*mu3Q+27.0*mu4Q)/(96.0*pi));
763 Smatrix1.eigensystem(Seigenvectors1, Seigenvalues1);
764 Smatrix2.eigensystem(Seigenvectors2, Seigenvalues2);
766 for (
int i=0; i < 2; i++) {
767 unitarityeigenvalues.assign(i, Seigenvalues1(i));
768 unitarityeigenvalues.assign(2+i, Seigenvalues2(i));
770 unitarityeigenvalues.assign(4, sqrt(15.0)*nu4Q/(16.0*pi));
773 double betala1 = 12.0*la1Q*la1Q + 8.0*nu1Q*nu1Q + 8.0*nu1Q*nu2Q + 8.0*nu2Q*nu2Q;
775 double betamu1 = 13.0*mu1Q*mu1Q + 6.0*mu1Q*mu3Q + 6.0*mu1Q*mu4Q + 3.0*nu4Q*nu4Q;
777 double betamu3 = (134.0*mu1Q*mu1Q + 6.0*mu1Q*(39.0*mu3Q + 22.0*mu4Q)
778 + 3.0*(30.0*mu3Q*mu3Q + 39.0*mu3Q*mu4Q + 9.0*mu4Q*mu4Q
779 + 3.0*nu1Q*nu1Q + 3.0*nu1Q*nu2Q - 5.0*nu4Q*nu4Q))/4.5;
781 double betamu4 = (4.0*mu1Q*mu1Q + 156.0*mu1Q*mu4Q + 54.0*mu3Q*mu4Q + 144.0*mu4Q*mu4Q
782 + 9.0*nu2Q*nu2Q + 6.0*nu4Q*nu4Q)/9.0;
784 double betanu1 = (18.0*la1Q*nu1Q
785 + 78.0*mu1Q*nu1Q + 51.0*mu3Q*nu1Q + 39.0*mu4Q*nu1Q + 6.0*nu1Q*nu1Q
786 + 6.0*la1Q*nu2Q + 32.0*mu1Q*nu2Q + 24.0*mu3Q*nu2Q + 6.0*mu4Q*nu2Q
787 + 6.0*nu2Q*nu2Q + 10.0*nu4Q*nu4Q)/3.0;
789 double betanu2 = 2.0*la1Q*nu2Q + ((14.0*mu1Q)/3.0 + mu3Q + 9.0*mu4Q)*nu2Q
790 + 4.0*nu1Q*nu2Q + 6.0*nu2Q*nu2Q + (25.0*nu4Q*nu4Q)/3.0;
792 double betanu4 = 11.0*mu1Q*nu4Q + 3.0*mu3Q*nu4Q + 9.0*mu4Q*nu4Q + 3.0*nu1Q*nu4Q + 9.0*nu2Q*nu4Q;
795 gslpp::matrix<gslpp::complex> Sbmatrix1(2,2,0.), Sbmatrix2(2,2,0.);
796 gslpp::matrix<gslpp::complex> Seigenvectors1T(2,2,0.), Seigenvectors2T(2,2,0.);
797 gslpp::vector<gslpp::complex> Sbeigenvalues1(2,0.), Sbeigenvalues2(2,0.);
798 gslpp::vector<gslpp::complex> betaeigenvalues(5,0.);
799 gslpp::vector<gslpp::complex> NLOunitarityeigenvalues(5,0.);
801 Sbmatrix1.assign(0,0, 3.0*betala1/(16.0*pi));
802 Sbmatrix1.assign(0,1, (2.0*betanu1+betanu2)/(8.0*sqrt(2.0)*pi));
803 Sbmatrix1.assign(1,0, Sbmatrix1(0,1));
804 Sbmatrix1.assign(1,1, (26.0*betamu1+17.0*betamu3+13.0*betamu4)/(32.0*pi));
806 Sbmatrix2.assign(0,0, betala1/(16.0*pi));
807 Sbmatrix2.assign(0,1, betanu2/(8.0*sqrt(2.0)*pi));
808 Sbmatrix2.assign(1,0, Sbmatrix2(0,1));
809 Sbmatrix2.assign(1,1, (14.0*betamu1+3.0*betamu3+27.0*betamu4)/(96.0*pi));
811 Seigenvectors1T=Seigenvectors1.hconjugate();
812 Seigenvectors2T=Seigenvectors2.hconjugate();
814 for (
int i=0; i < 2; i++) {
815 for (
int k=0; k < 2; k++) {
816 for (
int l=0; l < 2; l++) {
817 Sbeigenvalues1.assign(i, Sbeigenvalues1(i) + Seigenvectors1T(i,k) * Sbmatrix1(k,l) * Seigenvectors1(l,i) );
818 Sbeigenvalues2.assign(i, Sbeigenvalues2(i) + Seigenvectors2T(i,k) * Sbmatrix2(k,l) * Seigenvectors2(l,i) );
821 betaeigenvalues.assign(i, -1.5 * Sbeigenvalues1(i));
822 betaeigenvalues.assign(i+2, -1.5 * Sbeigenvalues2(i));
825 betaeigenvalues.assign(4, -1.5 * sqrt(15.0)*betanu4/(16.0*pi));
827 for (
int i=0; i < 5; i++) {
828 NLOunitarityeigenvalues.assign(i, -(gslpp::complex::i()-1.0/pi)*unitarityeigenvalues(i)*unitarityeigenvalues(i) + betaeigenvalues(i) );
829 if( ( unitarityeigenvalues(i) + NLOunitarityeigenvalues(i).real() ).abs() > 0.5) check=1;
830 if( (unitarityeigenvalues(i)).abs() > Rpeps && (NLOunitarityeigenvalues(i)/unitarityeigenvalues(i)).abs() > 1.0) check=1;
837double RunnerTHDMW::RGERunnerTHDMW(
double InitialValues[],
unsigned long int NumberOfRGEs,
double Q1,
double Q2,
int order,
double Rpeps,
double NLOuniscale)
840 const gsl_odeiv2_step_type * T = gsl_odeiv2_step_rk4;
843 gsl_odeiv2_step *
s = gsl_odeiv2_step_alloc(T, NumberOfRGEs);
848 gsl_odeiv2_control * c = gsl_odeiv2_control_y_new(1e-6, 0.0);
851 gsl_odeiv2_evolve * e = gsl_odeiv2_evolve_alloc(NumberOfRGEs);
857 double t1 = Q1*log(10.0);
858 double t2 = Q2*log(10.0);
859 double tNLOuni = NLOuniscale*log(10.0);
862 double InitialStepSize = 1e-6;
867 int status = gsl_odeiv2_evolve_apply (e, c,
s, &RGEsystem, &t1, t2, &InitialStepSize, InitialValues);
868 if(status != GSL_SUCCESS)
break;
871 if(
RGEcheckTHDMW(InitialValues,t1,Rpeps,tNLOuni) != 0)
break;
874 gsl_odeiv2_evolve_free (e);
875 gsl_odeiv2_control_free (c);
876 gsl_odeiv2_step_free (
s);
882double RunnerTHDMW::RGERunnerMW(
double InitialValues[],
unsigned long int NumberOfRGEs,
double Q1,
double Q2,
int order,
double Rpeps,
double NLOuniscale)
885 const gsl_odeiv2_step_type * T = gsl_odeiv2_step_rk4;
888 gsl_odeiv2_step *
s = gsl_odeiv2_step_alloc(T, NumberOfRGEs);
893 gsl_odeiv2_control * c = gsl_odeiv2_control_y_new(1e-6, 0.0);
896 gsl_odeiv2_evolve * e = gsl_odeiv2_evolve_alloc(NumberOfRGEs);
902 double t1 = Q1*log(10.0);
903 double t2 = Q2*log(10.0);
904 double tNLOuni = NLOuniscale*log(10.0);
907 double InitialStepSize = 1e-6;
912 int status = gsl_odeiv2_evolve_apply (e, c,
s, &RGEsystem, &t1, t2, &InitialStepSize, InitialValues);
913 if(status != GSL_SUCCESS)
break;
916 if(
RGEcheckMW(InitialValues,t1,Rpeps,tNLOuni) != 0)
break;
919 gsl_odeiv2_evolve_free (e);
920 gsl_odeiv2_control_free (c);
921 gsl_odeiv2_step_free (
s);
930 const gsl_odeiv2_step_type * T = gsl_odeiv2_step_rk4;
933 gsl_odeiv2_step *
s = gsl_odeiv2_step_alloc(T, NumberOfRGEs);
938 gsl_odeiv2_control * c = gsl_odeiv2_control_y_new(1e-6, 0.0);
941 gsl_odeiv2_evolve * e = gsl_odeiv2_evolve_alloc(NumberOfRGEs);
947 double t1 = Q1*log(10.0);
948 double t2 = Q2*log(10.0);
949 double tNLOuni = NLOuniscale*log(10.0);
952 double InitialStepSize = 1e-6;
957 int status = gsl_odeiv2_evolve_apply (e, c,
s, &RGEsystem, &t1, t2, &InitialStepSize, InitialValues);
958 if(status != GSL_SUCCESS)
break;
964 gsl_odeiv2_evolve_free (e);
965 gsl_odeiv2_control_free (c);
966 gsl_odeiv2_step_free (
s);
int RGEcheckTHDMW(const double InitialValues[], const double t1, const double Rpeps, const double tNLOuni)
int RGEsTHDMW(double t, const double y[], double beta[], void *flags)
int RGEcheckcustodialMW(const double InitialValues[], const double t1, const double Rpeps, const double tNLOuni)
int RGEscustodialMW(double t, const double y[], double beta[], void *flags)
int RGEcheckMW(const double InitialValues[], const double t1, const double Rpeps, const double tNLOuni)
int RGEsMW(double t, const double y[], double beta[], void *flags)
int JacobianTHDMW(double t, const double y[], double *dfdy, double dfdt[], void *order)
virtual double RGERunnercustodialMW(double InitialValues[], unsigned long int NumberOfRGEs, double Q1, double Q2, int order, double Rpeps, double tNLOuni)
virtual double RGERunnerTHDMW(double InitialValues[], unsigned long int NumberOfRGEs, double Q1, double Q2, int order, double Rpeps, double tNLOuni)
RunnerTHDMW(const StandardModel &SM_i)
RunnerTHDMW constructor.
virtual double RGERunnerMW(double InitialValues[], unsigned long int NumberOfRGEs, double Q1, double Q2, int order, double Rpeps, double tNLOuni)
virtual ~RunnerTHDMW()
Runner destructor.
A model class for the Standard Model.
A base class for symmetric Two-Higgs-Doublet-Manohar-Wise models.