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] = {"tanb", "bma", "m12_2"};
11
13{
14 ModelParamMap.insert(std::make_pair("tanb", std::cref(tanb)));
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("tanb") == 0) {
72 tanb = value;
73 if(tanb > 0.) {
74 beta = atan(tanb);
75 cosb = cos(beta);
76 cos2b = cos(2.*beta);
77 cos4b = cos(4.*beta);
78 cos6b = cos(6.*beta);
79 sinb = sin(beta);
80 sin2b = sin(2.*beta);
81 sin4b = sin(4.*beta);
82 sin6b = sin(6.*beta);
83 }
84 else {
85 throw std::runtime_error("ERROR: in GeneralTHDMZ2::setParameter, tanb < 0!");
86 }
87 }
88 else if (name.compare("bma") == 0) {
89 bma = value;
90 cos2bma = cos(2.*bma);
91 sin2bma = sin(2.*bma);
92 cos2bmbma = cos(2.*(beta-bma));
93 sin2bmbma = sin(2.*(beta-bma));
94 }
95 else if (name.compare("m12_2") == 0) {
96 m12_2 = value;
98
99 // Fix alpha1 in Higgs basis of Z2-symmetric model
100 GeneralTHDM::setParameter("alpha1", bma - M_PI/2.);
101
102 // Fix lambda2 in Higgs basis of Z2-symmetric model
103 mh_2 = getmH1sq();
104 mH_2 = getmH2sq();
105 mA_2 = getmH3sq();
106 mHp_2 = getmHp2();
107 vev = GeneralTHDM::v();
108 GeneralTHDM::setParameter("lambda2", (4.*(mh_2 - mH_2)*(3. + 5.*cos4b)*cos2bma/cosb/sinb +
109 (-32.*m12_2*(1. + cos4b) + (mh_2 + mH_2)*(7.*sin2b + 3.*sin6b))/cosb/cosb/sinb/sinb +
110 64.*(mh_2 - mH_2)*cos2b*sin2bma)/64./cosb/sinb/vev/vev);
111
112 // Fix lambda3 in Higgs basis of Z2-symmetric model
113 GeneralTHDM::setParameter("lambda3", (mh_2 + mH_2 + mA_2 + (-2.*m12_2 +
114 (mh_2 - mH_2)*cos2b*cos(bma)*sin(bma))/cosb/sinb)/vev/vev);
115
116 // Fix lambda7 in Higgs basis of Z2-symmetric model
117 GeneralTHDM::setParameter("Relambda7", ((mh_2 - mH_2)*cos2b*cos2bma/cosb/sinb +
118 (mh_2 + mH_2 - 2.*m12_2/cosb/sinb)*sin4b/sin2b/sin2b + (mh_2 - mH_2)*sin2bma)/2./vev/vev);
119
120 // Fix sigma_u,d,l in Higgs basis of Z2-symmetric model
121 if (flag_model == "type1") {
122 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
123 GeneralTHDM::setParameter("Nd_11r", 1./tanb);
124 GeneralTHDM::setParameter("Nl_11r", 1./tanb);
125 }
126 else if (flag_model == "type2") {
127 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
128 GeneralTHDM::setParameter("Nd_11r", -tanb);
129 GeneralTHDM::setParameter("Nl_11r", -tanb);
130 }
131 else if (flag_model == "typeX") {
132 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
133 GeneralTHDM::setParameter("Nd_11r", 1./tanb);
134 GeneralTHDM::setParameter("Nl_11r", -tanb);
135 }
136 else if (flag_model == "typeY") {
137 GeneralTHDM::setParameter("Nu_11r", 1./tanb);
138 GeneralTHDM::setParameter("Nd_11r", -tanb);
139 GeneralTHDM::setParameter("Nl_11r", 1./tanb);
140 }
141 else if (flag_model == "inert") {
142 GeneralTHDM::setParameter("Nu_11r", 0.);
143 GeneralTHDM::setParameter("Nd_11r", 0.);
144 GeneralTHDM::setParameter("Nl_11r", 0.);
145 }
146 }
147 else if (name.compare("alpha1") == 0) {
148 }
149 else if (name.compare("lambda2") == 0) {
150 }
151 else if (name.compare("lambda3") == 0) {
152 }
153 else if (name.compare("Relambda7") == 0) {
154 }
155 else if (name.compare("Nu_11r") == 0) {
156 }
157 else if (name.compare("Nd_11r") == 0) {
158 }
159 else if (name.compare("Nl_11r") == 0) {
160 }
161 else
162 GeneralTHDM::setParameter(name, value);
163}
164
165bool GeneralTHDMZ2::CheckParameters(const std::map<std::string, double>& DPars)
166{
167 for (int i = 0; i < NGeneralTHDMZ2vars; i++) {
168 if (DPars.find(GeneralTHDMZ2vars[i]) == DPars.end()) {
169 std::cout << "ERROR: missing mandatory GeneralTHDMZ2 parameter " << GeneralTHDMZ2vars[i] << std::endl;
170 raiseMissingModelParameterCount();
171 addMissingModelParameter(GeneralTHDMZ2vars[i]);
172 }
173 }
174 return(GeneralTHDM::CheckParameters(DPars));
175}
176
177
179// Flags
180
181bool GeneralTHDMZ2::setFlagStr(const std::string name, const std::string value)
182{
183 bool res = false;
184
185 if(name.compare("modelType") == 0) {
186 if (CheckModelType(value))
187 {
188 flag_model = value;
189 res = true;
190 }
191 else
192 {
193 throw std::runtime_error("GeneralTHDMZ2::setFlagStr(): invalid model-type flag"
194 + name + "=" + value);
195 }
196 }
197 else
198 res = GeneralTHDM::setFlagStr(name,value);
199
200 return res;
201}
202
203bool GeneralTHDMZ2::CheckModelType(const std::string modeltype) const
204{
205 if (modeltype.compare("type1") == 0 ||
206 modeltype.compare("type2") == 0 ||
207 modeltype.compare("typeX") == 0 ||
208 modeltype.compare("typeY") == 0 ||
209 modeltype.compare("inert") == 0 )
210 return true;
211 else
212 return false;
213}
214
215bool GeneralTHDMZ2::setFlag(const std::string name, const bool value)
216{
217 bool res = false;
218
219 if(name.compare("use_wf_renorm") == 0) {
220 flag_wfr = value;
221 res = true;
222 }
223 else
224 res = GeneralTHDM::setFlag(name,value);
225
226 return res;
227}
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: 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.