14#include <gsl/gsl_errno.h>
468class GeneralTHDM:
public NPbase {
472 static const int NGeneralTHDMvars = 66;
473 static std::string GeneralTHDMvars[NGeneralTHDMvars];
499 virtual bool Update(
const std::map<std::string, double>&
DPars);
513 static void custom_gsl_error_handler(
const char *reason,
const char *file,
int line,
int gsl_errno) {
514 printf(
"GSL Error: %s\nFile: %s\nLine: %d\nError code: %d\n", reason, file, line, gsl_errno);
545 return GTHDMM.getObj();
558 virtual bool setFlagStr(
const std::string name,
const std::string value);
566 virtual bool setFlag(
const std::string,
const bool);
612 double getmHp2()
const {
613 if(flag_use_sq_masses) {
627 double getmHp()
const {
628 if(flag_use_sq_masses) {
630 throw std::runtime_error(
"error in GeneralTHDM: mHp2 < 0!");
648 double getmH1sq()
const {
649 if(flag_use_sq_masses) {
651 throw std::runtime_error(
"error in GeneralTHDM: mH1sq < 0!");
667 double getmH2sq()
const {
668 if(flag_use_sq_masses) {
670 throw std::runtime_error(
"error in GeneralTHDM: mH2sq < 0!");
684 double getmH3sq()
const {
685 if(flag_use_sq_masses) {
687 throw std::runtime_error(
"error in GeneralTHDM: mH3sq < 0!");
701 double getalpha1()
const {
709 double getcosalpha1()
const {
717 double getsinalpha1()
const {
725 double gettanalpha1()
const {
734 double getalpha2()
const {
735 if(flag_CPconservation==
true) {
747 double getcosalpha2()
const {
748 if(flag_CPconservation==
true) {
760 double getsinalpha2()
const {
761 if(flag_CPconservation==
true) {
773 double getalpha3()
const {
774 if(flag_CPconservation==
true) {
786 double getcosalpha3()
const {
787 if(flag_CPconservation==
true) {
799 double getsinalpha3()
const {
800 if(flag_CPconservation==
true) {
813 double getlambda1()
const {
822 double getlambda2()
const {
831 double getlambda3()
const {
839 double getlambda4()
const {
847 double getRelambda5()
const {
855 double getImlambda5()
const {
856 if(flag_CPconservation==
true) {
868 double getRelambda6()
const {
877 double getImlambda6()
const {
878 if(flag_CPconservation==
true) {
890 double getRelambda7()
const {
899 double getImlambda7()
const {
900 if(flag_CPconservation==
true) {
913 gslpp::complex getNu_11()
const {
914 gslpp::complex i = gslpp::complex::i();
916 return (Nu_11r + i*Nu_11i);
923 return (yu1R_GTHDM - cosalpha1)/(sinalpha1);
932 gslpp::complex getNu_12()
const {
933 gslpp::complex i = gslpp::complex::i();
934 return (Nu_12r + i*Nu_12i);
942 gslpp::complex getNu_13()
const {
943 gslpp::complex i = gslpp::complex::i();
944 return (Nu_13r + i*Nu_13i);
951 gslpp::complex getNu_21()
const {
952 gslpp::complex i = gslpp::complex::i();
953 return (Nu_21r + i*Nu_21i);
960 gslpp::complex getNu_22()
const {
961 gslpp::complex i = gslpp::complex::i();
962 return (Nu_22r + i*Nu_22i);
969 gslpp::complex getNu_23()
const {
970 gslpp::complex i = gslpp::complex::i();
971 return (Nu_23r + i*Nu_23i);
978 gslpp::complex getNu_31()
const {
979 gslpp::complex i = gslpp::complex::i();
980 return (Nu_31r + i*Nu_31i);
987 gslpp::complex getNu_32()
const {
988 gslpp::complex i = gslpp::complex::i();
989 return (Nu_32r + i*Nu_32i);
996 gslpp::complex getNu_33()
const {
997 gslpp::complex i = gslpp::complex::i();
998 return (Nu_33r + i*Nu_33i);
1005 gslpp::complex getNd_11()
const {
1006 gslpp::complex i = gslpp::complex::i();
1008 return (Nd_11r + i*Nd_11i);
1015 return (yd1R_GTHDM - cosalpha1)/(sinalpha1);
1024 gslpp::complex getNd_12()
const {
1025 gslpp::complex i = gslpp::complex::i();
1026 return (Nd_12r + i*Nd_12i);
1033 gslpp::complex getNd_13()
const {
1034 gslpp::complex i = gslpp::complex::i();
1035 return (Nd_13r + i*Nd_13i);
1042 gslpp::complex getNd_21()
const {
1043 gslpp::complex i = gslpp::complex::i();
1044 return (Nd_21r + i*Nd_21i);
1051 gslpp::complex getNd_22()
const {
1052 gslpp::complex i = gslpp::complex::i();
1053 return (Nd_22r + i*Nd_22i);
1060 gslpp::complex getNd_23()
const {
1061 gslpp::complex i = gslpp::complex::i();
1062 return (Nd_23r + i*Nd_23i);
1069 gslpp::complex getNd_31()
const {
1070 gslpp::complex i = gslpp::complex::i();
1071 return (Nd_31r + i*Nd_31i);
1078 gslpp::complex getNd_32()
const {
1079 gslpp::complex i = gslpp::complex::i();
1080 return (Nd_32r + i*Nd_32i);
1087 gslpp::complex getNd_33()
const {
1088 gslpp::complex i = gslpp::complex::i();
1089 return (Nd_33r + i*Nd_33i);
1096 gslpp::complex getNl_11()
const {
1097 gslpp::complex i = gslpp::complex::i();
1099 return (Nl_11r + i*Nl_11i);
1106 return (yl1R_GTHDM -cosalpha1)/(sinalpha1);
1114 gslpp::complex getNl_12()
const {
1115 gslpp::complex i = gslpp::complex::i();
1116 return (Nl_12r + i*Nl_12i);
1123 gslpp::complex getNl_13()
const {
1124 gslpp::complex i = gslpp::complex::i();
1125 return (Nl_13r + i*Nl_13i);
1132 gslpp::complex getNl_21()
const {
1133 gslpp::complex i = gslpp::complex::i();
1134 return (Nl_21r + i*Nl_21i);
1141 gslpp::complex getNl_22()
const {
1142 gslpp::complex i = gslpp::complex::i();
1143 return (Nl_22r + i*Nl_22i);
1150 gslpp::complex getNl_23()
const {
1151 gslpp::complex i = gslpp::complex::i();
1152 return (Nl_23r + i*Nl_23i);
1159 gslpp::complex getNl_31()
const {
1160 gslpp::complex i = gslpp::complex::i();
1161 return (Nl_31r + i*Nl_31i);
1168 gslpp::complex getNl_32()
const {
1169 gslpp::complex i = gslpp::complex::i();
1170 return (Nl_32r + i*Nl_32i);
1177 gslpp::complex getNl_33()
const {
1178 gslpp::complex i = gslpp::complex::i();
1179 return (Nl_33r + i*Nl_33i);
1184 gslpp::complex getyu1()
const {
1186 return (yu1R_GTHDM);
1189 gslpp::complex i = gslpp::complex::i();
1190 double R11 = cosalpha1*cosalpha2;
1191 double R12 = sinalpha1*cosalpha2;
1192 double R13 = -sinalpha2;
1193 gslpp::complex yu1 = (R11 + (R12 - i*R13)*(Nu_11r + i*Nu_11i).conjugate());
1200 double getyu1R()
const {
1202 return (yu1R_GTHDM);
1205 double R11 = cosalpha1*cosalpha2;
1206 double R12 = sinalpha1*cosalpha2;
1207 double yu1R = (R11 + R12*Nu_11r);
1214 gslpp::complex getyd1()
const {
1216 return (yd1R_GTHDM);
1219 gslpp::complex i = gslpp::complex::i();
1220 double R11 = cosalpha1*cosalpha2;
1221 double R12 = sinalpha1*cosalpha2;
1222 double R13 = -sinalpha2;
1223 gslpp::complex yd1 = (R11 + (R12 - i*R13)*(Nd_11r + i*Nd_11i));
1230 double getyd1R()
const {
1232 return (yd1R_GTHDM);
1235 double R11 = cosalpha1*cosalpha2;
1236 double R12 = sinalpha1*cosalpha2;
1237 double yd1R = (R11 + R12*Nd_11r);
1243 gslpp::complex getyl1()
const {
1245 return (yl1R_GTHDM);
1248 gslpp::complex i = gslpp::complex::i();
1249 double R11 = cosalpha1*cosalpha2;
1250 double R12 = sinalpha1*cosalpha2;
1251 double R13 = -sinalpha2;
1252 gslpp::complex yl1 = (R11 + (R12 - i*R13)*(Nl_11r + i*Nl_11i));
1259 double getyl1R()
const {
1261 return (yl1R_GTHDM);
1264 double R11 = cosalpha1*cosalpha2;
1265 double R12 = sinalpha1*cosalpha2;
1266 double yl1R = (R11 + R12*Nl_11r);
1276 double getQ_GTHDM()
const {
1284 double getRpepsGTHDM()
const {
1292 double getNLOuniscaleGTHDM()
const {
1293 return NLOuniscaleGTHDM;
1301 bool getATHDMflag()
const {
1310 bool getCPconservationflag()
const {
1311 return flag_CPconservation;
1319 std::string getRGEorderflag()
const {
1320 return flag_RGEorder;
1329 bool getsqmassesflag()
const {
1330 return flag_use_sq_masses;
1333 virtual const double muggH(
const double sqrt_s)
const;
1334 virtual const double muVBF(
const double sqrt_s)
const;
1335 virtual const double mueeWBF(
const double sqrt_s,
const double Pol_em,
const double Pol_ep)
const;
1336 virtual const double muWH(
const double sqrt_s)
const;
1337 virtual const double muZH(
const double sqrt_s)
const;
1338 virtual const double mueeZH(
const double sqrt_s,
const double Pol_em,
const double Pol_ep)
const;
1339 virtual const double muVH(
const double sqrt_s)
const;
1340 virtual const double muVBFpVH(
const double sqrt_s)
const;
1341 virtual const double muttH(
const double sqrt_s)
const;
1342 virtual const double mutH(
const double sqrt_s)
const;
1343 virtual const double mubbH(
const double sqrt_s)
const;
1344 virtual const double muttHptH(
const double sqrt_s)
const;
1345 virtual const double muggHpVBFpbbH(
const double sqrt_s)
const;
1346 virtual const double muggHpttHptHpbbH(
const double sqrt_s)
const;
1347 virtual const double muggHpbbH(
const double sqrt_s)
const;
1350 virtual const double GammaTotal()
const;
1360 virtual const double muggHgaga(
const double sqrt_s)
const;
1362 virtual const double muVBFHgaga(
const double sqrt_s)
const;
1363 virtual const double muVHgaga(
const double sqrt_s)
const;
1364 virtual const double muWHgaga(
const double sqrt_s)
const;
1365 virtual const double muZHgaga(
const double sqrt_s)
const;
1366 virtual const double muttHgaga(
const double sqrt_s)
const;
1367 virtual const double mutHgaga(
const double sqrt_s)
const;
1372 virtual const double muggHZZ(
const double sqrt_s)
const;
1373 virtual const double muggHpbbH_HZZ(
const double sqrt_s)
const;
1374 virtual const double muVBFHZZ(
const double sqrt_s)
const;
1375 virtual const double muVHZZ(
const double sqrt_s)
const;
1376 virtual const double muZHZZ(
const double sqrt_s)
const;
1377 virtual const double muWHZZ(
const double sqrt_s)
const;
1378 virtual const double muttHZZ(
const double sqrt_s)
const;
1379 virtual const double muttHptH_HZZ(
const double sqrt_s)
const;
1380 virtual const double muggHWW(
const double sqrt_s)
const;
1381 virtual const double muggHpbbH_HWW(
const double sqrt_s)
const;
1382 virtual const double muVBFHWW(
const double sqrt_s)
const;
1383 virtual const double muWHWW(
const double sqrt_s)
const;
1384 virtual const double muZHWW(
const double sqrt_s)
const;
1385 virtual const double muVHWW(
const double sqrt_s)
const;
1386 virtual const double muttHWW(
const double sqrt_s)
const;
1387 virtual const double muttHptH_HWW(
const double sqrt_s)
const;
1388 virtual const double muggHtautau(
const double sqrt_s)
const;
1390 virtual const double muVBFHtautau(
const double sqrt_s)
const;
1391 virtual const double muWHtautau(
const double sqrt_s)
const;
1392 virtual const double muZHtautau(
const double sqrt_s)
const;
1393 virtual const double muVHtautau(
const double sqrt_s)
const;
1394 virtual const double muttHtautau(
const double sqrt_s)
const;
1396 virtual const double muggHbb(
const double sqrt_s)
const;
1398 virtual const double muVBFHbb(
const double sqrt_s)
const;
1399 virtual const double muWHbb(
const double sqrt_s)
const;
1400 virtual const double muZHbb(
const double sqrt_s)
const;
1401 virtual const double muVHbb(
const double sqrt_s)
const;
1402 virtual const double muttHbb(
const double sqrt_s)
const;
1403 virtual const double muttHptH_Hbb(
const double sqrt_s)
const;
1404 virtual const double muVHcc(
const double sqrt_s)
const;
1405 virtual const double muppHmumu(
const double sqrt_s)
const;
1406 virtual const double muggHmumu(
const double sqrt_s)
const;
1408 virtual const double muVBFHmumu(
const double sqrt_s)
const;
1409 virtual const double muVHmumu(
const double sqrt_s)
const;
1412 virtual const double muggHZga(
const double sqrt_s)
const;
1413 virtual const double muVBFHZga(
const double sqrt_s)
const;
1414 virtual const double muppHZga(
const double sqrt_s)
const;
1425 const double F(
const double m02,
const double m12)
const;
1461 virtual const double Mw()
const;
1470 virtual void setParameter(
const std::string,
const double&);
1477 bool checkRGEorder(
const std::string RGEorder)
const
1480 if (RGEorder.compare(
"LO") == 0
1481 || RGEorder.compare(
"approxNLO") == 0
1482 || RGEorder.compare(
"NLO") == 0)
1488 if (RGEorder.compare(
"LO") == 0)
1507 double mH1sq, mHp2, mH2sq, mH3sq, mH1, mHp1, mH21, mH31, alpha1, cosalpha1, sinalpha1, tanalpha1, alpha2, cosalpha2, sinalpha2,
1508 alpha3, cosalpha3, sinalpha3, mu2,
lambda1,
lambda2,
lambda3,
lambda4, Relambda5, Imlambda5, Relambda6, Imlambda6, Relambda7, Imlambda7,
1509 yu1R_GTHDM, yd1R_GTHDM, yl1R_GTHDM,
1510 Nu_11r, Nu_11i, Nu_12r, Nu_12i, Nu_13r, Nu_13i,
1511 Nu_21r, Nu_21i, Nu_22r, Nu_22i, Nu_23r, Nu_23i,
1512 Nu_31r, Nu_31i, Nu_32r, Nu_32i, Nu_33r, Nu_33i,
1513 Nd_11r, Nd_11i, Nd_12r, Nd_12i, Nd_13r, Nd_13i,
1514 Nd_21r, Nd_21i, Nd_22r, Nd_22i, Nd_23r, Nd_23i,
1515 Nd_31r, Nd_31i, Nd_32r, Nd_32i, Nd_33r, Nd_33i,
1516 Nl_11r, Nl_11i, Nl_12r, Nl_12i, Nl_13r, Nl_13i,
1517 Nl_21r, Nl_21i, Nl_22r, Nl_22i, Nl_23r, Nl_23i,
1518 Nl_31r, Nl_31i, Nl_32r, Nl_32i, Nl_33r, Nl_33i,
1519 Q_GTHDM, RpepsGTHDM, NLOuniscaleGTHDM;
1520 bool flag_ATHDM, flag_CPconservation, flag_use_sq_masses, flag_sigma, flag_SM_Higgs;
1521 std::string flag_RGEorder;
std::map< std::string, double > DPars
An observable class for the THDM contribution to the electroweak Peskin-Takeuchi pseudo-observable .
std::string getModelName() const
A method to fetch the name of the model.
The auxiliary base model class for other model classes.
virtual const double muggHbb(const double sqrt_s) const
virtual const double muggHZga(const double sqrt_s) const
virtual const double muVH(const double sqrt_s) const
The ratio between the WH+ZH associated production cross-section in the current model and in the Stan...
virtual const double muttHptH_HWW(const double sqrt_s) const
virtual const double muttH(const double sqrt_s) const
The ratio between the t-tbar-Higgs associated production cross-section in the current model and in t...
virtual const double muVBF(const double sqrt_s) const
The ratio between the vector-boson fusion Higgs production cross-section in the current model and in...
virtual const double BrHZgaRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for NPbase.
virtual const double muggHpbbH_Htautau(const double sqrt_s) const
virtual const double muVBFHmumu(const double sqrt_s) const
virtual const double muggHpttHptHpbbH_Hmumu(const double sqrt_s) const
virtual const double muVBFHZZ(const double sqrt_s) const
virtual const double muttHtautau(const double sqrt_s) const
virtual const double muVBFHWW(const double sqrt_s) const
virtual const double muWHWW(const double sqrt_s) const
virtual const double muVBFHZga(const double sqrt_s) const
virtual const double BrHbbRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double muggHgaga(const double sqrt_s) const
virtual const double muVHcc(const double sqrt_s) const
virtual const double muttHptH_Hgaga(const double sqrt_s) const
virtual const double muppHmumu(const double sqrt_s) const
virtual const double Mw() const
The mass of the boson, .
virtual const double muttHWW(const double sqrt_s) const
virtual const double muVHZZ(const double sqrt_s) const
virtual const double muggHpbbH_HZZ(const double sqrt_s) const
virtual const double muZH(const double sqrt_s) const
The ratio between the Z-Higgs associated production cross-section in the current model and in the St...
virtual const double BrHZZRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double muVBFpVH_Hmumu(const double sqrt_s) const
virtual const double muttHptH_HZZ(const double sqrt_s) const
virtual const double mueeZH(const double sqrt_s, const double Pol_em, const double Pol_ep) const
The ratio between the associated production cross-section in the current model and in the Standard ...
virtual const double muggHmumu(const double sqrt_s) const
virtual const double muttHptH_Htautau(const double sqrt_s) const
virtual const double muZHbb(const double sqrt_s) const
virtual const double muZHtautau(const double sqrt_s) const
virtual const double mutHgaga(const double sqrt_s) const
virtual const double muZHgaga(const double sqrt_s) const
virtual const double muWHgaga(const double sqrt_s) const
virtual const double BrHggRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double BrHgagaRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double muVBFHbb(const double sqrt_s) const
virtual const double computeGammaTotalRatio() const
The ratio of the in the current model and in the Standard Model.
virtual const double muZHWW(const double sqrt_s) const
virtual const double muVBFpVH(const double sqrt_s) const
The ratio between the sum of VBF and WH+ZH associated production cross-section in the current model ...
virtual const double muggHpbbH_Hgaga(const double sqrt_s) const
virtual const double muWHbb(const double sqrt_s) const
virtual const double muVHWW(const double sqrt_s) const
virtual const double muWHtautau(const double sqrt_s) const
virtual const double muggHpVBFpbbH_Hbb(const double sqrt_s) const
virtual const double muVHbb(const double sqrt_s) const
virtual const double muttHgaga(const double sqrt_s) const
virtual const double muZHZZ(const double sqrt_s) const
virtual const double muttHZZ(const double sqrt_s) const
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of NPbase.
virtual const double muWH(const double sqrt_s) const
The ratio between the W-Higgs associated production cross-section in the current model and in the St...
virtual const double muWHZZ(const double sqrt_s) const
virtual const double muggHtautau(const double sqrt_s) const
virtual const double muggHZZ(const double sqrt_s) const
virtual const double BrHccRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double muVBFHtautau(const double sqrt_s) const
virtual const double mueeWBF(const double sqrt_s, const double Pol_em, const double Pol_ep) const
The ratio between the production cross-section in the current model and in the Standard Model.
virtual const double muVHtautau(const double sqrt_s) const
virtual const double BrHmumuRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double muVBFHgaga(const double sqrt_s) const
virtual const double BrHWWRatio() const
The ratio of the Br in the current model and in the Standard Model.
virtual const double mubbH(const double sqrt_s) const
The ratio between the bbH production cross-section in the current model and in the Standard Model.
virtual const double muVHmumu(const double sqrt_s) const
virtual const double muppHZga(const double sqrt_s) const
virtual const double muggH(const double sqrt_s) const
The ratio between the gluon-gluon fusion Higgs production cross-section in the current model and in ...
virtual const double muggHWW(const double sqrt_s) const
virtual const double muggHpbbH_HWW(const double sqrt_s) const
virtual const double muttHbb(const double sqrt_s) const
virtual const double mutH(const double sqrt_s) const
The ratio between the t-Higgs associated production cross-section in the current model and in the St...
virtual const double muttHptH_Hmumu(const double sqrt_s) const
virtual const double muVHgaga(const double sqrt_s) const
virtual const double muttHptH_Hbb(const double sqrt_s) const
virtual const double BrHtautauRatio() const
The ratio of the Br in the current model and in the Standard Model.
const double getMuw() const
A get method to retrieve the matching scale around the weak scale.
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for StandardModel have been provided in model initi...
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of StandardModel.
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
virtual bool PostUpdate()
The post-update method for StandardModel.
double muw
A matching scale around the weak scale in GeV.
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
virtual bool InitializeModel()
A method to initialize the model.
parameter of the Higgs potential
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling .