a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
GeneralTHDMZ2.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2025 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "GeneralTHDMZ2.h"
9
10const std::string GeneralTHDMZ2::GeneralTHDMZ2vars[NGeneralTHDMZ2vars] = {"logtb", "bma", "m12_2"};
11
13{
14 ModelParamMap.insert(std::make_pair("logtb", std::cref(logtb)));
15 ModelParamMap.insert(std::make_pair("bma", std::cref(bma)));
16 ModelParamMap.insert(std::make_pair("m12_2", std::cref(m12_2)));
17}
18
20{
21 if (IsModelInitialized()) {
22 }
23}
24
26// Initialization
27
29{
30 setModelInitialized(GeneralTHDM::InitializeModel());
31 return (true);
32}
33
35{
36 if (!GeneralTHDM::PreUpdate()) return (false);
37
38 if(!getCPconservationflag())
39 throw std::runtime_error("ERROR: GeneralTHDMZ2 class requires CP conservation, check corresponding flag");
40
41 return (true);
42}
43
44bool GeneralTHDMZ2::Update(const std::map<std::string, double>& DPars)
45{
46 if (!PreUpdate()) return (false);
47
48 if (!GeneralTHDM::Update(DPars)) return (false);
49
50 UpdateError = false;
51
52 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
53 setParameter(it->first, it->second);
54
55 if (UpdateError) return (false);
56
57 if (!PostUpdate()) return (false);
58
59 return (true);
60}
61
63{
64 if (!GeneralTHDM::PostUpdate()) return (false);
65
66 return (true);
67}
68
69void GeneralTHDMZ2::setParameter(const std::string name, const double& value)
70{
71 if (name.compare("logtb") == 0) {
72 tanb = pow(10., value); // Input is log(tanb), but we work with tanb
73 beta = atan(tanb);
74 cosb = cos(beta);
75 cos2b = cos(2.*beta);
76 cos4b = cos(4.*beta);
77 cos6b = cos(6.*beta);
78 sinb = sin(beta);
79 sin2b = sin(2.*beta);
80 sin4b = sin(4.*beta);
81 sin6b = sin(6.*beta);
82 }
83 else if (name.compare("bma") == 0) {
84 bma = value;
85 cos2bma = cos(2.*bma);
86 sin2bma = sin(2.*bma);
87 cos2bmbma = cos(2.*(beta-bma));
88 sin2bmbma = sin(2.*(beta-bma));
89 }
90 else if (name.compare("m12_2") == 0) {
91 m12_2 = value;
93
94 // Fix alpha1 in Higgs basis of Z2-symmetric model (cross-checked against 1509.06060)
95 GeneralTHDM::setParameter("alpha1", M_PI/2. - bma);
96
97 // Fix lambda2 in Higgs basis of Z2-symmetric model
98 mh_2 = getmH1sq();
99 mH_2 = getmH2sq();
100 mA_2 = getmH3sq();
101 mHp_2 = getmHp2();
102 vev = GeneralTHDM::v();
103 GeneralTHDM::setParameter("lambda2", (-8.*M2aux + 5.*(mh_2+mH_2) + (-8.*M2aux + 3.*(mh_2+mH_2))*cos4b
104 + (mh_2-mH_2)*(3.+5.*cos4b)*cos2bma + 4.*(mh_2-mH_2)*sin4b*sin2bma)/4./vev/vev/sin2b/sin2b);
105
106 // Fix lambda3 in Higgs basis of Z2-symmetric model
107 GeneralTHDM::setParameter("lambda3", (-4.*M2aux + mh_2 + mH_2 + 4.*mHp_2
108 - (mh_2-mH_2)*(cos2bma-2.*cos2b*sin2bma/sin2b))/2./vev/vev);
109
110 // Fix lambda7 in Higgs basis of Z2-symmetric model
111 GeneralTHDM::setParameter("Relambda7", (2.* cos2b * (-2.*M2aux + mh_2 + mH_2 + (mh_2-mH_2)*cos2bma)
112 + (mh_2-mH_2)*sin2bma*sin2b)/2./vev/vev/sin2b);
113
114 // Fix sigma_u,d,l in Higgs basis of Z2-symmetric model
115 if (flag_model == "type1") {
116 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
117 GeneralTHDM::setParameter("Nd_11r", 1./tanb);
118 GeneralTHDM::setParameter("Nl_11r", 1./tanb);
119 }
120 else if (flag_model == "type2") {
121 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
122 GeneralTHDM::setParameter("Nd_11r", -tanb);
123 GeneralTHDM::setParameter("Nl_11r", -tanb);
124 }
125 else if (flag_model == "typeX") {
126 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
127 GeneralTHDM::setParameter("Nd_11r", 1./tanb);
128 GeneralTHDM::setParameter("Nl_11r", -tanb);
129 }
130 else if (flag_model == "typeY") {
131 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
132 GeneralTHDM::setParameter("Nd_11r", -tanb);
133 GeneralTHDM::setParameter("Nl_11r", 1./tanb);
134 }
135 else if (flag_model == "inert") {
136 GeneralTHDM::setParameter("Nu_11r", 0.);
137 GeneralTHDM::setParameter("Nd_11r", 0.);
138 GeneralTHDM::setParameter("Nl_11r", 0.);
139 }
140 }
141 else if (name.compare("alpha1") == 0) {
142 }
143 else if (name.compare("lambda2") == 0) {
144 }
145 else if (name.compare("lambda3") == 0) {
146 }
147 else if (name.compare("Relambda7") == 0) {
148 }
149 else if (name.compare("Nu_11r") == 0) {
150 }
151 else if (name.compare("Nd_11r") == 0) {
152 }
153 else if (name.compare("Nl_11r") == 0) {
154 }
155 else
156 GeneralTHDM::setParameter(name, value);
157}
158
159bool GeneralTHDMZ2::CheckParameters(const std::map<std::string, double>& DPars)
160{
161 for (int i = 0; i < NGeneralTHDMZ2vars; i++) {
162 if (DPars.find(GeneralTHDMZ2vars[i]) == DPars.end()) {
163 std::cout << "ERROR: missing mandatory GeneralTHDMZ2 parameter " << GeneralTHDMZ2vars[i] << std::endl;
164 raiseMissingModelParameterCount();
165 addMissingModelParameter(GeneralTHDMZ2vars[i]);
166 }
167 }
168 return(GeneralTHDM::CheckParameters(DPars));
169}
170
171
173// Flags
174
175bool GeneralTHDMZ2::setFlagStr(const std::string name, const std::string value)
176{
177 bool res = false;
178
179 if(name.compare("modelType") == 0) {
180 if (CheckModelType(value))
181 {
182 flag_model = value;
183 res = true;
184 }
185 else
186 {
187 throw std::runtime_error("GeneralTHDMZ2::setFlagStr(): invalid model-type flag"
188 + name + "=" + value);
189 }
190 }
191 else
192 res = GeneralTHDM::setFlagStr(name,value);
193
194 return res;
195}
196
197bool GeneralTHDMZ2::CheckModelType(const std::string modeltype) const
198{
199 if (modeltype.compare("type1") == 0 ||
200 modeltype.compare("type2") == 0 ||
201 modeltype.compare("typeX") == 0 ||
202 modeltype.compare("typeY") == 0 ||
203 modeltype.compare("inert") == 0 )
204 return true;
205 else
206 return false;
207}
208
209bool GeneralTHDMZ2::setFlag(const std::string name, const bool value)
210{
211 bool res = false;
212
213 if(name.compare("use_wf_renorm") == 0) {
214 flag_wfr = value;
215 res = true;
216 }
217 else
218 res = GeneralTHDM::setFlag(name,value);
219
220 return res;
221}
std::map< std::string, double > DPars
Definition: Minimal.cpp:11
GeneralTHDMZ2()
GeneralTHDMZ2 constructor.
virtual bool InitializeModel()
The post-update method for GeneralTHDMZ2.
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of GeneralTHDMZ2.
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for GeneralTHDMZ2.
~GeneralTHDMZ2()
GeneralTHDMZ2 destructor.
virtual bool PostUpdate()
The post-update method for GeneralTHDMZ2.
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a string flag of GeneralTHDMZ2.
double m12_2
parameters exclusively in Z2 models: log(tan(beta)), beta-alpha, m_12^2
bool CheckModelType(const std::string modeltype) const
A method to check if the model type name in string form is valid.
static const int NGeneralTHDMZ2vars
Definition: GeneralTHDMZ2.h:17
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for GeneralTHDMZ2 have been provided in model initi...
virtual void setParameter(const std::string, const double &)
A method to set the value of a parameter of GeneralTHDMZ2.
static const std::string GeneralTHDMZ2vars[NGeneralTHDMZ2vars]
Definition: GeneralTHDMZ2.h:19
std::string flag_model
virtual bool PreUpdate()
The pre-update method for GeneralTHDMZ2.