15 :unitarityeigenvalues(11, 0.),
16 NLOunitarityeigenvalues(11, 0.),
17 myTHDMW(static_cast<const
THDMW*> (&SM_i)),
19 ATLAS8_gg_phi_tt(53, 2, 0.),
20 ATLAS8_gg_phi_tt_e(53, 2, 0.),
21 CMS8_pp_H_hh_bbbb(167, 2, 0.),
22 CMS8_bb_phi_bb(81, 2, 0.),
24 CMS8_pp_H_hh_bbbb_e(167, 2, 0.),
25 CMS8_bb_phi_bb_e(81, 2, 0.),
26 ATLAS13_bb_phi_tt(61,2,0.),
27 ATLAS13_tt_phi_tt(61,2,0.),
28 ATLAS13_pp_H_hh_bbbb(271,2,0.),
29 ATLAS13_bb_phi_tt_e(61,2,0.),
30 ATLAS13_tt_phi_tt_e(61,2,0.),
31 ATLAS13_pp_H_hh_bbbb_e(271,2,0.),
32 CMS13_pp_phi_bb(66,2,0.),
33 CMS13_pp_H_hh_bbbb(95,2,0.),
34 CMS13_ggF_H_hh_bbbb(226,2,0.),
35 CMS8_pp_phi_bb(88,2,0.),
36 CMS13_pp_phi_bb_e(66,2,0.),
37 CMS13_pp_H_hh_bbbb_e(95,2,0.),
38 CMS13_ggF_H_hh_bbbb_e(226,2,0.),
39 CMS13_pp_R_gg(241,2,0.),
41 ATLAS8_pp_Hpm_tb(41,2,0.),
42 ATLAS8_pp_Hpm_tb_e(41,2,0.),
43 CMS8_pp_Hp_tb(43,2,0.),
44 CMS8_pp_Hp_tb_e(43,2,0.),
45 CMS13_bb_H_bb(101,2,0.),
46 ATLAS13_pp_Hp_tb(181,2,0.),
51 ATLAS13_pp_Gkk_tt(131,2,0.),
52 ATLAS13_pp_SS_jjjj(126,2,0.),
53 MadGraph_pp_Sr_tt(22800,5,0.),
54 MadGraph_pp_Srtt_tttt(22800,5,0.),
55 MadGraph_pp_Sr_jj(2940,5,0.),
56 MadGraph_pp_SrSr_jjjj(4200,5,0.),
57 MadGraph_pp_Stb_tbtb(4332,4,0.),
58 MadGraph_pp_Sitt_tttt(9360,4,0.),
59 MadGraph_pp_Srbb_bbbb(15960,5,0.),
60 MadGraph_pp_Srbb_bbbb_8TeV(15960,5,0.),
61 MadGraph_pp_Sibb_bbbb(8892,4,0.),
62 MadGraph_pp_Sibb_bbbb_8TeV(8892,4,0.),
63 MadGraph_pp_Si_bb(8892,4,0.),
64 MadGraph_pp_Si_bb_8TeV(8892,4,0.),
65 MadGraph_pp_Sr_bb(15960,5,0.),
66 MadGraph_pp_Sr_bb_8TeV(15960,5,0.),
67 arraybsgamma(1111, 3, 0.),
68 betaeigenvalues(11, 0.)
86 const int NumPar,
const double params[])
const {
90 for(
int j=0; j<NumPar; j++)
91 bCache &= (params[j] == cache[j][i].real());
98 const int NumPar,
const double params[])
const {
102 for(
int j=0; j<NumPar; j++)
103 bCache &= (params[j] == cache[j][i]);
104 if (bCache)
return i;
113 for(
int j=0; j<NumPar+1; j++)
114 cache[j][i] = cache[j][i-1];
117 for(
int j=0; j<NumPar; j++) {
119 cache[NumPar][0] = newResult;
124 const double params[],
const double newResult)
const {
127 for(
int j=0; j<NumPar+1; j++)
128 cache[j][i] = cache[j][i-1];
131 for(
int j=0; j<NumPar; j++) {
132 cache[j][0] = params[j];
133 cache[NumPar][0] = newResult;
143 double params[] = {MZ2, mSp2};
157 double params[] = {MZ2, mSr2};
171 double params[] = {MZ2, mSi2};
185 double params[] = {MZ2, mSp2};
240 double params[] = {MZ2, mSr2, mSp2};
254 double params[] = {MZ2, mSi2, mSp2};
268 double params[] = {MZ2, mSr2, mSi2};
284 double params[] = {MZ2, mSp2};
347 double params[] = {mHl2, Mu, Mc, Mt};
353 double TAUu=4.0*Mu*Mu/mHl2;
354 double TAUc=4.0*Mc*Mc/mHl2;
355 double TAUt=4.0*Mt*Mt/mHl2;
357 +TAUc*(1.0+(1.0-TAUc)*
f_func(TAUc))+TAUt*(1.0+(1.0-TAUt)*
f_func(TAUt)));
365 double params[] = {mHh2, Mc, Mt};
371 double TAUc=4.0*Mc*Mc/mHh2;
372 double TAUt=4.0*Mt*Mt/mHh2;
374 +TAUt*(1.0+(1.0-TAUt)*
f_func(TAUt)));
382 double params[] = {mA2, Mc, Mt};
388 double TAUc=4.0*Mc*Mc/mA2;
389 double TAUt=4.0*Mt*Mt/mA2;
398 double params[] = {mHl2, Md, Ms, Mb};
404 double TAUd=4.0*Md*Md/mHl2;
405 double TAUs=4.0*Ms*Ms/mHl2;
406 double TAUb=4.0*Mb*Mb/mHl2;
408 +TAUs*(1.0+(1.0-TAUs)*
f_func(TAUs))+TAUb*(1.0+(1.0-TAUb)*
f_func(TAUb)));
416 double params[] = {mHh2, Ms, Mb};
422 double TAUs=4.0*Ms*Ms/mHh2;
423 double TAUb=4.0*Mb*Mb/mHh2;
425 +TAUb*(1.0+(1.0-TAUb)*
f_func(TAUb)));
433 double params[] = {mA2, Ms, Mb};
439 double TAUs=4.0*Ms*Ms/mA2;
440 double TAUb=4.0*Mb*Mb/mA2;
449 double params[] = {mHl2, Me, Mmu, Mtau};
455 double TAUe=4.0*Me*Me/mHl2;
456 double TAUmu=4.0*Mmu*Mmu/mHl2;
457 double TAUtau=4.0*Mtau*Mtau/mHl2;
459 +TAUmu*(1.0+(1.0-TAUmu)*
f_func(TAUmu))
460 +TAUtau*(1.0+(1.0-TAUtau)*
f_func(TAUtau)));
468 double params[] = {mHh2, Mmu, Mtau};
474 double TAUmu=4.0*Mmu*Mmu/mHh2;
475 double TAUtau=4.0*Mtau*Mtau/mHh2;
477 TAUtau*(1.0+(1.0-TAUtau)*
f_func(TAUtau)));
485 double params[] = {mA2, Mmu, Mtau};
491 double TAUmu=4.0*Mmu*Mmu/mA2;
492 double TAUtau=4.0*Mtau*Mtau/mA2;
501 double params[] = {mH, MW};
507 double TAUw=4.0*MW*MW/(mH*mH);
516 double params[] = {mHp2, mH};
522 double TAUhp=4.0*mHp2/(mH*mH);
531 double params[] = {mHl2, cW2, Mu, Mc, Mt,
MZ};
537 double TAUu=4.0*Mu*Mu/mHl2;
538 double TAUc=4.0*Mc*Mc/mHl2;
539 double TAUt=4.0*Mt*Mt/mHl2;
540 double LAMu=4.0*Mu*Mu/(
MZ*
MZ);
541 double LAMc=4.0*Mc*Mc/(
MZ*
MZ);
542 double LAMt=4.0*Mt*Mt/(
MZ*
MZ);
553 double params[] = {mHh2, cW2, Mc, Mt,
MZ};
559 double TAUc=4.0*Mc*Mc/mHh2;
560 double TAUt=4.0*Mt*Mt/mHh2;
561 double LAMc=4.0*Mc*Mc/(
MZ*
MZ);
562 double LAMt=4.0*Mt*Mt/(
MZ*
MZ);
573 double params[] = {mA2, cW2, Mc, Mt,
MZ};
579 double TAUc=4.0*Mc*Mc/mA2;
580 double TAUt=4.0*Mt*Mt/mA2;
581 double LAMc=4.0*Mc*Mc/(
MZ*
MZ);
582 double LAMt=4.0*Mt*Mt/(
MZ*
MZ);
592 double params[] = {mHl2, cW2, Md, Ms, Mb,
MZ};
598 double TAUd=4.0*Md*Md/mHl2;
599 double TAUs=4.0*Ms*Ms/mHl2;
600 double TAUb=4.0*Mb*Mb/mHl2;
601 double LAMd=4.0*Md*Md/(
MZ*
MZ);
602 double LAMs=4.0*Ms*Ms/(
MZ*
MZ);
603 double LAMb=4.0*Mb*Mb/(
MZ*
MZ);
614 double params[] = {mHh2, cW2, Ms, Mb,
MZ};
620 double TAUs=4.0*Ms*Ms/mHh2;
621 double TAUb=4.0*Mb*Mb/mHh2;
622 double LAMs=4.0*Ms*Ms/(
MZ*
MZ);
623 double LAMb=4.0*Mb*Mb/(
MZ*
MZ);
634 double params[] = {mA2, cW2, Ms, Mb,
MZ};
640 double TAUs=4.0*Ms*Ms/mA2;
641 double TAUb=4.0*Mb*Mb/mA2;
642 double LAMs=4.0*Ms*Ms/(
MZ*
MZ);
643 double LAMb=4.0*Mb*Mb/(
MZ*
MZ);
653 double params[] = {mHl2, cW2, Me, Mmu, Mtau,
MZ};
659 double TAUe=4.0*Me*Me/mHl2;
660 double TAUmu=4.0*Mmu*Mmu/mHl2;
661 double TAUtau=4.0*Mtau*Mtau/mHl2;
662 double LAMe=4.0*Me*Me/(
MZ*
MZ);
663 double LAMmu=4.0*Mmu*Mmu/(
MZ*
MZ);
664 double LAMtau=4.0*Mtau*Mtau/(
MZ*
MZ);
668 -
Int2(TAUtau,LAMtau));
676 double params[] = {mHh2, cW2, Mmu, Mtau,
MZ};
682 double TAUmu=4.0*Mmu*Mmu/mHh2;
683 double TAUtau=4.0*Mtau*Mtau/mHh2;
684 double LAMmu=4.0*Mmu*Mmu/(
MZ*
MZ);
685 double LAMtau=4.0*Mtau*Mtau/(
MZ*
MZ);
688 +
Int1(TAUtau,LAMtau)-
Int2(TAUtau,LAMtau));
696 double params[] = {mA2, cW2, Mmu, Mtau,
MZ};
702 double TAUmu=4.0*Mmu*Mmu/mA2;
703 double TAUtau=4.0*Mtau*Mtau/mA2;
704 double LAMmu=4.0*Mmu*Mmu/(
MZ*
MZ);
705 double LAMtau=4.0*Mtau*Mtau/(
MZ*
MZ);
715 double params[] = {mH, cW2, MW,
MZ};
721 double TAUw=4.0*MW*MW/(mH*mH);
722 double LAMw=4.0*MW*MW/(
MZ*
MZ);
725 +((1.0+2.0/TAUw)*sW2/cW2-(5.0+2.0/TAUw))*
Int1(TAUw,LAMw));
733 double params[] = {mHp2, mH, cW2,
MZ};
739 double TAUhp=4.0*mHp2/(mH*mH);
740 double LAMhp=4.0*mHp2/(
MZ*
MZ);
754 return pow(asin(
sqrt(1.0/x)),2);
771 return tau*lambda/(tau-lambda)/2.0+tau*tau*lambda*lambda/((tau-lambda)
772 *(tau-lambda))/2.0*(
f_func(tau)-
f_func(lambda))+tau*tau*lambda/((tau-lambda)
777 return -tau*lambda/(tau-lambda)/2.0*(
f_func(tau)-
f_func(lambda));
795 double BrSM_htobb = 5.77e-1;
796 double BrSM_htotautau = 6.32e-2;
797 double BrSM_htogaga = 2.28e-3;
798 double BrSM_htoWW = 2.15e-1;
799 double BrSM_htoZZ = 2.64e-2;
800 double BrSM_htogg = 8.57e-2;
801 double BrSM_htoZga = 1.54e-3;
802 double BrSM_htocc = 2.91e-2;
819 double ABSggMW=(-9.0/16.0*(fermU+4.0*fermD)+I_h_Sp+I_h_SR+I_h_SI).abs2();
820 double ABSggSM=(-9.0/16.0*(fermU+4.0*fermD)).abs2();
821 rh_gg=ABSggMW/ABSggSM;
828 double ABSgagaMW=(fermU+fermD+fermL+I_hSM_W+I_h_S).abs2();
829 double ABSgagaSM=(fermU+fermD+fermL+I_hSM_W).abs2();
839 double ABSZgaMW=(A_h_F+A_hSM_W+A_h_S).abs2();
840 double ABSZgaSM=(A_h_F+A_hSM_W).abs2();
859 double ABSggTHDMW=(-9.0/16.0*(
cosa/
sinb)*(fermU+4.0*fermD)+I_h_Sp+I_h_SR+I_h_SI).abs2();
860 double ABSggSM=(-9.0/16.0*(fermU+4.0*fermD)).abs2();
861 rh_gg=ABSggTHDMW/ABSggSM;
871 double ABSgagaTHDMW=((
cosa/
sinb)*(fermU+fermD+fermL)+
sin(
bma)*I_hSM_W+I_h_Hp+I_h_S).abs2();
872 double ABSgagaSM=(fermU+fermD+fermL+I_hSM_W).abs2();
873 rh_gaga=ABSgagaTHDMW/ABSgagaSM;
883 double ABSZgaTHDMW=(A_h_F+
sin(
bma)*A_hSM_W+A_h_Hp+A_h_S).abs2();
884 double ABSZgaSM=(A_h_F+A_hSM_W).abs2();
885 rh_Zga=ABSZgaTHDMW/ABSZgaSM;
889 throw std::runtime_error(
"THDMWmodel can only be \"ManoharWise\", \"custodialMW\" or \"custodial1\".");
911 if( RGEorder ==
"LO" ) flag=0;
912 else if( RGEorder ==
"approxNLO" ) flag=1;
915 throw std::runtime_error(
"RGEorder can be only any of \"LO\", \"approxNLO\" or \"NLO\"");
924 double mu1_at_MZ=
mu1;
925 double mu3_at_MZ=
mu3;
926 double mu4_at_MZ=
mu4;
927 double nu1_at_MZ=
nu1;
928 double omega1_at_MZ=
omega1;
929 double kappa1_at_MZ=
kappa1;
930 double nu2_at_MZ=
nu2;
931 double omega2_at_MZ=
omega2;
932 double kappa2_at_MZ=
kappa2;
933 double nu4_at_MZ=
nu4;
934 double omega4_at_MZ=
omega4;
960 InitVals[0]=lambda1_at_MZ;
961 InitVals[1]=lambda2_at_MZ;
962 InitVals[2]=lambda3_at_MZ;
963 InitVals[3]=lambda4_at_MZ;
964 InitVals[4]=mu1_at_MZ;
965 InitVals[5]=mu3_at_MZ;
966 InitVals[6]=mu4_at_MZ;
967 InitVals[7]=nu1_at_MZ;
968 InitVals[8]=omega1_at_MZ;
969 InitVals[9]=kappa1_at_MZ;
970 InitVals[10]=nu2_at_MZ;
971 InitVals[11]=omega2_at_MZ;
972 InitVals[12]=kappa2_at_MZ;
973 InitVals[13]=nu4_at_MZ;
974 InitVals[14]=omega4_at_MZ;
998 double nu1_at_MZ=
nu1;
999 double nu2_at_MZ=
nu2;
1000 double nu3_at_MZ=
nu3;
1001 double nu4_at_MZ=
nu4;
1002 double nu5_at_MZ=
nu5;
1003 double mu1_at_MZ=
mu1;
1004 double mu2_at_MZ=
mu2;
1005 double mu3_at_MZ=
mu3;
1006 double mu4_at_MZ=
mu4;
1007 double mu5_at_MZ=
mu5;
1008 double mu6_at_MZ=
mu6;
1030 double InitVals[12];
1031 InitVals[0]=lambda1_at_MZ;
1032 InitVals[1]=nu1_at_MZ;
1033 InitVals[2]=nu2_at_MZ;
1034 InitVals[3]=nu3_at_MZ;
1035 InitVals[4]=nu4_at_MZ;
1036 InitVals[5]=nu5_at_MZ;
1037 InitVals[6]=mu1_at_MZ;
1038 InitVals[7]=mu2_at_MZ;
1039 InitVals[8]=mu3_at_MZ;
1040 InitVals[9]=mu4_at_MZ;
1041 InitVals[10]=mu5_at_MZ;
1042 InitVals[11]=mu6_at_MZ;
1063 double nu1_at_MZ=
nu1;
1064 double nu2_at_MZ=
nu2;
1065 double nu4_at_MZ=
nu4;
1066 double mu1_at_MZ=
mu1;
1067 double mu3_at_MZ=
mu3;
1068 double mu4_at_MZ=
mu4;
1085 double InitVals[12];
1086 InitVals[0]=lambda1_at_MZ;
1087 InitVals[1]=nu1_at_MZ;
1088 InitVals[2]=nu2_at_MZ;
1089 InitVals[3]=nu4_at_MZ;
1090 InitVals[4]=mu1_at_MZ;
1091 InitVals[5]=mu3_at_MZ;
1092 InitVals[6]=mu4_at_MZ;
1111 throw std::runtime_error(
"THDMW unitarity constraints are only implemented for the \"custodial1\", the \"ManoharWise\" and the \"custodialMW\" model.");
1129 Smatrix1.assign(0,0, 3.0*
lambda1/(16.0*pi));
1131 Smatrix1.assign(1,0, Smatrix1(0,1));
1132 Smatrix1.assign(0,3, (2.0*
nu1+
nu2)/(8.0*
sqrt(2.0)*pi));
1133 Smatrix1.assign(3,0, Smatrix1(0,3));
1134 Smatrix1.assign(1,1, 3.0*
lambda2/(16.0*pi));
1136 Smatrix1.assign(3,1, Smatrix1(1,3));
1138 Smatrix1.assign(2,3, (4.0*
kappa1+2.0*
kappa2)/(16.0*pi));
1139 Smatrix1.assign(3,2, Smatrix1(2,3));
1140 Smatrix1.assign(3,3, (26.0*
mu1+17.0*
mu3+13.0*
mu4)/(32.0*pi));
1142 Smatrix2.assign(0,0,
lambda1/(16.0*pi));
1143 Smatrix2.assign(0,1,
lambda4/(16.0*pi));
1144 Smatrix2.assign(1,0, Smatrix2(0,1));
1145 Smatrix2.assign(0,3,
nu2/(8.0*
sqrt(2.0)*pi));
1146 Smatrix2.assign(3,0, Smatrix2(0,3));
1147 Smatrix2.assign(1,1,
lambda2/(16.0*pi));
1148 Smatrix2.assign(1,3,
omega2/(8.0*
sqrt(2.0)*pi));
1149 Smatrix2.assign(3,1, Smatrix2(1,3));
1151 Smatrix2.assign(2,3,
kappa2/(8.0*pi));
1152 Smatrix2.assign(3,2, Smatrix2(2,3));
1153 Smatrix2.assign(3,3, (14.0*
mu1+3.0*
mu3+27.0*
mu4)/(96.0*pi));
1155 Smatrix1.eigensystem(Seigenvectors1, Seigenvalues1);
1156 Smatrix2.eigensystem(Seigenvectors2, Seigenvalues2);
1158 for (
int i=0; i < 4; i++) {
1212 Sbmatrix1.assign(0,0, 3.0*blambda1/(16.0*pi));
1213 Sbmatrix1.assign(0,1, (2.0*blambda3+blambda4)/(16.0*pi));
1214 Sbmatrix1.assign(1,0, Sbmatrix1(0,1));
1215 Sbmatrix1.assign(0,3, (2.0*bnu1+bnu2)/(8.0*
sqrt(2.0)*pi));
1216 Sbmatrix1.assign(3,0, Sbmatrix1(0,3));
1217 Sbmatrix1.assign(1,1, 3.0*blambda2/(16.0*pi));
1218 Sbmatrix1.assign(1,3, (2.0*bomega1+bomega2)/(8.0*
sqrt(2.0)*pi));
1219 Sbmatrix1.assign(3,1, Sbmatrix1(1,3));
1220 Sbmatrix1.assign(2,2, (blambda3+5.0*blambda4)/(16.0*pi));
1221 Sbmatrix1.assign(2,3, (4.0*bkappa1+2.0*bkappa2)/(16.0*pi));
1222 Sbmatrix1.assign(3,2, Sbmatrix1(2,3));
1223 Sbmatrix1.assign(3,3, (26.0*bmu1+17.0*bmu3+13.0*bmu4)/(32.0*pi));
1225 Sbmatrix2.assign(0,0, blambda1/(16.0*pi));
1226 Sbmatrix2.assign(0,1, blambda4/(16.0*pi));
1227 Sbmatrix2.assign(1,0, Sbmatrix2(0,1));
1228 Sbmatrix2.assign(0,3, bnu2/(8.0*
sqrt(2.0)*pi));
1229 Sbmatrix2.assign(3,0, Sbmatrix2(0,3));
1230 Sbmatrix2.assign(1,1, blambda2/(16.0*pi));
1231 Sbmatrix2.assign(1,3, bomega2/(8.0*
sqrt(2.0)*pi));
1232 Sbmatrix2.assign(3,1, Sbmatrix2(1,3));
1233 Sbmatrix2.assign(2,2, (blambda3+blambda4)/(16.0*pi));
1234 Sbmatrix2.assign(2,3, bkappa2/(8.0*pi));
1235 Sbmatrix2.assign(3,2, Sbmatrix2(2,3));
1236 Sbmatrix2.assign(3,3, (14.0*bmu1+3.0*bmu3+27.0*bmu4)/(96.0*pi));
1238 Seigenvectors1T=Seigenvectors1.hconjugate();
1239 Seigenvectors2T=Seigenvectors2.hconjugate();
1241 for (
int i=0; i < 4; i++) {
1242 for (
int k=0; k < 4; k++) {
1243 for (
int l=0; l < 4; l++) {
1244 Sbeigenvalues1.assign(i, Sbeigenvalues1(i) + Seigenvectors1T(i,k) * Sbmatrix1(k,l) * Seigenvectors1(l,i) );
1245 Sbeigenvalues2.assign(i, Sbeigenvalues2(i) + Seigenvectors2T(i,k) * Sbmatrix2(k,l) * Seigenvectors2(l,i) );
1256 for (
int i=0; i < 11; i++) {
1299 + 3.0*
mu5 + 8.0*
mu6)/3.0)/(16.0*pi*pi);
1304 + 3.0*
mu5 -
mu6)/3.0)/(16.0*pi*pi);
1309 + 24.0*
mu5 + 8.0*
mu6)/3.0)/(16.0*pi*pi);
1331 double betamu3 = (20.0*
mu3*
mu3
1344 + 26.0/9.0*
mu1*
mu2)/(16.0*pi*pi);
1350 - 10.0/9.0*
mu1*
mu2)/(16.0*pi*pi);
1357 double betamuA = 4.0*betamu1+4.0*betamu2+8.5*betamu3+5.0*betamu4+1.5*betamu5+2.5*betamu6;
1358 double betamuB = (4.0*betamu1+4.0*betamu2+1.5*betamu3+12.0*betamu4+1.5*betamu5-0.5*betamu6)/3.0;
1359 double betamuC = (-0.5*betamu1-0.5*betamu2+1.5*betamu3+1.5*betamu4+12.0*betamu5+4.0*betamu6)/3.0;
1360 double betaMA1 = 3.0*betalambda1 + betamuA
1361 -
sqrt(9.0*betalambda1*betalambda1-6.0*betalambda1*betamuA+betamuA*betamuA
1362 +32.0*betanu1*betanu1+32.0*betanu1*betanu2+8.0*betanu2*betanu2);
1363 double betaMA2 = 3.0*betalambda1 + betamuA
1364 +
sqrt(9.0*betalambda1*betalambda1-6.0*betalambda1*betamuA+betamuA*betamuA
1365 +32.0*betanu1*betanu1+32.0*betanu1*betanu2+8.0*betanu2*betanu2);
1366 double betaMB1 = betalambda1 + betamuB -
sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuB+betamuB*betamuB+8.0*betanu2*betanu2);
1367 double betaMB2 = betalambda1 + betamuB +
sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuB+betamuB*betamuB+8.0*betanu2*betanu2);
1368 double betaMC1 = betalambda1 + betamuC -
sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuC+betamuC*betamuC+32.0*betanu3*betanu3);
1369 double betaMC2 = betalambda1 + betamuC +
sqrt(betalambda1*betalambda1-2.0*betalambda1*betamuC+betamuC*betamuC+32.0*betanu3*betanu3);
1381 for (
int i=0; i < 8; i++) {
1398 Smatrix1.assign(0,0, 3.0*
lambda1/(16.0*pi));
1399 Smatrix1.assign(0,1, (2.0*
nu1+
nu2)/(8.0*
sqrt(2.0)*pi));
1400 Smatrix1.assign(1,0, Smatrix1(0,1));
1401 Smatrix1.assign(1,1, (26.0*
mu1+17.0*
mu3+13.0*
mu4)/(32.0*pi));
1403 Smatrix2.assign(0,0,
lambda1/(16.0*pi));
1404 Smatrix2.assign(0,1,
nu2/(8.0*
sqrt(2.0)*pi));
1405 Smatrix2.assign(1,0, Smatrix2(0,1));
1406 Smatrix2.assign(1,1, (14.0*
mu1+3.0*
mu3+27.0*
mu4)/(96.0*pi));
1408 Smatrix1.eigensystem(Seigenvectors1, Seigenvalues1);
1409 Smatrix2.eigensystem(Seigenvectors2, Seigenvalues2);
1411 for (
int i=0; i < 2; i++) {
1425 std::ifstream INfile;
1426 std::string lineTab;
1427 INfile.open( filename.c_str() );
1429 std::cout<<
"error: in THDMWcache, table doesn't exist!"<< filename <<std::endl;
1437 while(INfile.good()){
1438 while(getline(INfile, lineTab)){
1439 if( lineTab[0]==
'#' )
continue;
1441 std::istringstream streamTab(lineTab);
1443 while(streamTab >>v){
1461 int rowN=arrayTab.
size_i();
1463 double xmin = arrayTab(0,0);
1464 double xmax = arrayTab(rowN-1,0);
1465 double interval = arrayTab(1,0)-arrayTab(0,0);
1466 int Nintervals = (x-xmin)/interval;
1478 y =(arrayTab(Nintervals+1,1)-arrayTab(Nintervals,1))/(arrayTab(Nintervals+1,0)
1479 -arrayTab(Nintervals,0))*(x-arrayTab(Nintervals,0))+arrayTab(Nintervals,1);
1489 int rowN=arrayTab.
size_i();
1490 double xmin = arrayTab(0,0);
1491 double xmax = arrayTab(rowN-1,0);
1492 double ymin = arrayTab(0,1);
1493 double ymax = arrayTab(rowN-1,1);
1494 double zmin = arrayTab(0,2);
1495 double zmax = arrayTab(rowN-1,2);
1496 double intervalx = arrayTab(1,0)-arrayTab(0,0);
1499 while(arrayTab(iy,1)-arrayTab(iy-1,1)==0&&iy<6000000);
1500 double intervaly = arrayTab(iy,1)-arrayTab(iy-1,1);
1503 while(arrayTab(iz,2)-arrayTab(iz-1,2)==0&&iz<6000000);
1504 double intervalz = arrayTab(iz,2)-arrayTab(iz-1,2);
1505 int Nintervalsx = (x-xmin)/intervalx;
1506 int Nintervalsy = (y-ymin)/intervaly;
1507 int Nintervalsz = (z-zmin)/intervalz;
1508 int MaxNintervalx = round((xmax-xmin)/intervalx);
1509 int MaxNintervaly = round((ymax-ymin)/intervaly);
1510 int MaxNintervalz = round((zmax-zmin)/intervalz);
1519 if(x<xmin||Nintervalsx>MaxNintervalx||y<ymin||Nintervalsy>MaxNintervaly||z<zmin||Nintervalsz>MaxNintervalz){
1528 double x1=arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,0);
1529 double x2=arrayTab(iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx+1,0);
1530 double y1=arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,1);
1531 double y2=arrayTab(iz*(Nintervalsz)+iy*(Nintervalsy+1)+Nintervalsx,1);
1532 double z1=arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,2);
1533 double z2=arrayTab(iz*(Nintervalsz+1)+iy*(Nintervalsy)+Nintervalsx,2);
1535 return (arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,3) * (x2-x) * (y2-y) * (z2-z)
1536 +arrayTab(iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,3) * (x-x1) * (y2-y) * (z2-z)
1537 +arrayTab(iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,3) * (x2-x) * (y-y1) * (z2-z)
1538 +arrayTab(iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,3) * (x2-x) * (y2-y) * (z-z1)
1539 +arrayTab(iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,3) * (x-x1) * (y-y1) * (z2-z)
1540 +arrayTab(iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,3) * (x-x1) * (y2-y) * (z-z1)
1541 +arrayTab(iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,3) * (x2-x) * (y-y1) * (z-z1)
1542 +arrayTab(iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,3) * (x-x1) * (y-y1) * (z-z1))/((x2-x1)*(y2-y1)*(z2-z1));
1553 int rowN=arrayTab.
size_i();
1555 double xmin = arrayTab(0,0);
1556 double xmax = arrayTab(rowN-1,0);
1557 double ymin = arrayTab(0,1);
1558 double ymax = arrayTab(rowN-1,1);
1559 double zmin = arrayTab(0,2);
1560 double zmax = arrayTab(rowN-1,2);
1561 double vmin = arrayTab(0,3);
1562 double vmax = arrayTab(rowN-1,3);
1563 double intervalx = arrayTab(1,0)-arrayTab(0,0);
1566 while(arrayTab(iy,1)-arrayTab(iy-1,1)==0&&iy<6000000);
1567 double intervaly = arrayTab(iy,1)-arrayTab(iy-1,1);
1570 while(arrayTab(iz,2)-arrayTab(iz-1,2)==0&&iz<6000000);
1571 double intervalz = arrayTab(iz,2)-arrayTab(iz-1,2);
1574 while(arrayTab(iv,3)-arrayTab(iv-1,3)==0&&iv<6000000);
1575 double intervalv = arrayTab(iv,3)-arrayTab(iv-1,3);
1576 int Nintervalsx = (x-xmin)/intervalx;
1577 int Nintervalsy = (y-ymin)/intervaly;
1578 int Nintervalsz = (z-zmin)/intervalz;
1579 int Nintervalsv = (v-vmin)/intervalv;
1580 int MaxNintervalx = round((xmax-xmin)/intervalx);
1581 int MaxNintervaly = round((ymax-ymin)/intervaly);
1582 int MaxNintervalz = round((zmax-zmin)/intervalz);
1583 int MaxNintervalv = round((vmax-vmin)/intervalv);
1601 if(x<xmin||Nintervalsx>MaxNintervalx||y<ymin||Nintervalsy>MaxNintervaly||z<zmin||Nintervalsz>MaxNintervalz||v<vmin||Nintervalsv>MaxNintervalv){
1610 double x1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,0);
1611 double x2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx+1,0);
1612 double y1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,1);
1613 double y2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz)+iy*(Nintervalsy+1)+Nintervalsx,1);
1614 double z1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,2);
1615 double z2=arrayTab(iv*(Nintervalsv)+iz*(Nintervalsz+1)+iy*(Nintervalsy)+Nintervalsx,2);
1616 double v1=arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,3);
1617 double v2=arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz)+iy*(Nintervalsy)+Nintervalsx,3);
1643 return (arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z2-z) * (v2-v)
1644 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z2-z) * (v2-v)
1645 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z2-z) * (v2-v)
1646 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z-z1) * (v2-v)
1647 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z2-z) * (v-v1)
1648 +arrayTab(iv*Nintervalsv+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z2-z) * (v2-v)
1649 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z-z1) * (v2-v)
1650 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z2-z) * (v-v1)
1651 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z-z1) * (v2-v)
1652 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z2-z) * (v-v1)
1653 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx,4) * (x2-x) * (y2-y) * (z-z1) * (v-v1)
1654 +arrayTab(iv*Nintervalsv+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z-z1) * (v2-v)
1655 +arrayTab(iv*(Nintervalsv+1)+iz*Nintervalsz+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z2-z) * (v-v1)
1656 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*Nintervalsy+Nintervalsx+1,4) * (x-x1) * (y2-y) * (z-z1) * (v-v1)
1657 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx,4) * (x2-x) * (y-y1) * (z-z1) * (v-v1)
1658 +arrayTab(iv*(Nintervalsv+1)+iz*(Nintervalsz+1)+iy*(Nintervalsy+1)+Nintervalsx+1,4) * (x-x1) * (y-y1) * (z-z1) * (v-v1))/((x2-x1)*(y2-y1)*(z2-z1)*(v2-v1));
1805 std::stringstream ex0,ex1,ex2,ex3;
1806 std::stringstream ex1e,ex2e,ex3e;
1808 std::stringstream ex4,ex5,ex6,ex7,ex8;
1809 std::stringstream ex4e,ex5e,ex6e,ex7e,ex8e;
1810 std::stringstream ex9,ex10,ex13;
1811 std::stringstream ex9e,ex10e,ex13e;
1812 std::stringstream ex14, ex15,ex16,ex17,ex18,ex19;
1813 std::stringstream th1,th2,th3,th4,th5,th6,th7,th8,th9,th10,th11,th12,th13,th14;
1815 std::stringstream bsg1;
1817 std::cout<<
"reading tables"<<std::endl;
1820 std::stringstream path;
1821 path << getenv(
"HEPFITTABS") <<
"/THDM/tabs/";
1824 std::string tablepath=path.str();
1842 ex0 << tablepath <<
"150304114.dat";
1844 ex1 << tablepath <<
"150304114.dat";
1846 ex1e << tablepath <<
"150304114_e.dat";
1848 ex2 << tablepath <<
"150608329.dat";
1850 ex2e << tablepath <<
"150608329_e.dat";
1852 ex3 << tablepath <<
"150507018.dat";
1854 ex3e << tablepath <<
"150507018_e.dat";
1870 ex4 << tablepath <<
"ATLAS-CONF-2016-104_b.dat";
1872 ex4e << tablepath <<
"ATLAS-CONF-2016-104_b_e.dat";
1874 ex5 << tablepath <<
"180711883.dat";
1876 ex5e << tablepath <<
"ATLAS-CONF-2016-104_a_e.dat";
1878 ex6 << tablepath <<
"ATLAS-CONF-2016-049.dat";
1880 ex6e << tablepath <<
"ATLAS-CONF-2016-049_e.dat";
1882 ex7 << tablepath <<
"CMS-PAS-HIG-16-025.dat";
1884 ex7e << tablepath <<
"CMS-PAS-HIG-16-025_e.dat";
1886 ex8 << tablepath <<
"180603548.dat";
1888 ex8e << tablepath <<
"180603548_e.dat";
1893 ex9 << tablepath <<
"151203704.dat";
1895 ex9e << tablepath <<
"151203704_e.dat";
1897 ex10 << tablepath <<
"150807774_b.dat";
1899 ex10e << tablepath <<
"150807774_b_e.dat";
1901 ex17 << tablepath <<
"180803599.dat";
1903 ex18 << tablepath <<
"180512191.dat";
1913 ex13 << tablepath <<
"171004960.dat";
1915 ex13e << tablepath <<
"171004960_e.dat";
1917 ex14 << tablepath <<
"180410823_b.dat";
1919 ex15 << tablepath <<
"CMS-CR-2018-204.dat";
1921 ex16 << tablepath <<
"171007171.dat";
1924 ex19 << tablepath <<
"180206149.dat";
1927 th1 << tablepath <<
"Generated_data_S2t_Fixed_Steps.dat";
1930 th2 << tablepath <<
"Generated_data_Stt_tttt_Fixed_Steps.dat";
1933 th3 << tablepath <<
"Generated_data_S_jj_Fixed_Steps.dat";
1936 th4 << tablepath <<
"Generated_data_SS_jjjj_Fixed_Steps.dat";
1939 th5 << tablepath <<
"Generated_data_Stb_tbtb_Fixed_Steps.dat";
1942 th6 << tablepath <<
"Generated_data_Soddtt_tttt_Fixed_Steps.dat";
1945 th7 << tablepath <<
"Generated_data_Srbb_bbbb_Fixed_Steps.dat";
1948 th8 << tablepath <<
"Generated_data_Sibb_bbbb_Fixed_Steps.dat";
1951 th9 << tablepath <<
"Generated_data_Sr_bb_Fixed_Steps.dat";
1954 th10 << tablepath <<
"Generated_data_Sr_bb_8TeV_Fixed_Steps.dat";
1957 th11 << tablepath <<
"Generated_data_Si_bb_Fixed_Steps.dat";
1960 th12 << tablepath <<
"Generated_data_Si_bb_8TeV_Fixed_Steps.dat";
1963 th13 << tablepath <<
"Generated_data_Srbb_bbbb_8TeV_Fixed_Steps.dat";
1966 th14 << tablepath <<
"Generated_data_Sibb_bbbb_8TeV_Fixed_Steps.dat";
1970 bsg1 << tablepath <<
"bsgammatable.dat";
1976 double params[] = {mass};
1990 double params[] = {mass};
2004 double params[] = {mass};
2020 double params[] = {mass};
2034 double params[] = {mass};
2050 double params[] = {mass};
2064 double params[] = {mass};
2080 double params[] = {mass};
2096 double params[] = {mass};
2112 double params[] = {mass};
2126 double params[] = {mass};
2142 double params[] = {mass};
2157 double params[] = {mass};
2171 double params[] = {mass};
2189 double params[] = {mass};
2203 double params[] = {mass};
2219 double params[] = {mass};
2234 double params[] = {mass};
2250 double params[] = {mass};
2266 double params[] = {mass};
2282 double params[] = {mass};
2296 double params[] = {mass};
2313 double params[] = {mass};
2329 double params[] = {mass};
2343 double params[] = {mass};
2357 double params[] = {mass};
2371 double params[] = {mass};
2385 double params[] = {mass};
2403 double params[] = {
etaD,
etaU, Lambda4, mSr};
2417 double params[] = {
etaD,
etaU, Lambda4, mSr};
2431 double params[] = {
etaD,
etaU, Lambda4, mSr};
2445 double params[] = {
etaD,
etaU, Lambda4, mSr};
2460 double params[] = {
etaD,
etaU, mS};
2475 double params[] = {
etaD,
etaU, mS};
2490 double params[] = {
etaD,
etaU, Lambda4, mSr};
2505 double params[] = {
etaD,
etaU, Lambda4, mSr};
2520 double params[] = {
etaD,
etaU, mS};
2537 double params[] = {
etaD,
etaU, mS};
2556 double params[] = {
etaD,
etaU, Lambda4, mSr};
2572 double params[] = {
etaD,
etaU, Lambda4, mSr};
2587 double params[] = {
etaD,
etaU, mS};
2605 double params[] = {
etaD,
etaU, mS};
2741 double tan2b=sin2b/cos2b;
2742 double cot2b=1.0/tan2b;
2745 double tan2a=sin2a/cos2a;
2746 double cot2a=1.0/tan2a;
2799 return std::numeric_limits<double>::quiet_NaN();