a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
GeorgiMachacek.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
9 #include "GeorgiMachacek.h"
10 #include "GMcache.h"
11 
12 std::string GeorgiMachacek::GMvars[NGMvars] = {"vDelta", "alpha", "mHh", "mA", "mH5", "Mu1", "Mu2", "Q_GM"};
13 
16  ModelParamMap.insert(std::make_pair("vDelta", std::cref(vDelta)));
17  ModelParamMap.insert(std::make_pair("alpha", std::cref(alpha)));
18  ModelParamMap.insert(std::make_pair("mHh", std::cref(mHh)));
19  ModelParamMap.insert(std::make_pair("mA", std::cref(mA)));
20  ModelParamMap.insert(std::make_pair("mH5", std::cref(mH5)));
21  ModelParamMap.insert(std::make_pair("Mu1", std::cref(Mu1)));
22  ModelParamMap.insert(std::make_pair("Mu2", std::cref(Mu2)));
23  ModelParamMap.insert(std::make_pair("Q_GM", std::cref(Q_GM)));
24  flag_use_sq_masses=false;
25 }
26 
28 // Initialization
29 
31 {
32  myGMcache = new GMcache(*this);
35  return(true);
36 }
37 
38 bool GeorgiMachacek::Init(const std::map<std::string, double>& DPars) {
39  return(StandardModel::Init(DPars));
40 }
41 
43 {
44  if(!StandardModel::PreUpdate()) return (false);
45 
46  return (true);
47 }
48 
49 bool GeorgiMachacek::Update(const std::map<std::string, double>& DPars) {
50 
51  if(!PreUpdate()) return (false);
52 
53  UpdateError = false;
54 
55  for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
56  setParameter(it->first, it->second);
57 
58  if (UpdateError) return (false);
59 
60  if(!PostUpdate()) return (false);
61 
62  return (true);
63 
64 }
65 
67 {
68  if(!StandardModel::PostUpdate()) return (false);
69 
71 
72  return (true);
73 }
74 
75 void GeorgiMachacek::setParameter(const std::string name, const double& value){
76  if(name.compare("vDelta") == 0) {
77  if(vDelta >= 0.) {
78  vDelta = value;
79  }
80  else {
81  throw std::runtime_error("error in GeorgiMachacek::SetParameter, vDelta < 0!");
82  }
83  }
84  else if(name.compare("alpha") == 0) {
85  alpha = value;
86  }
87  else if(name.compare("mHh") == 0 && !flag_use_sq_masses)
88  mHh = value;
89  else if(name.compare("mA") == 0 && !flag_use_sq_masses)
90  mA = value;
91  else if(name.compare("mH5") == 0 && !flag_use_sq_masses)
92  mH5 = value;
93  else if(name.compare("mHhsq") == 0 && flag_use_sq_masses)
94  mHhsq = value;
95  else if(name.compare("mAsq") == 0 && flag_use_sq_masses)
96  mAsq = value;
97  else if(name.compare("mH5sq") == 0 && flag_use_sq_masses)
98  mH5sq = value;
99  else if(name.compare("Mu1") == 0)
100  Mu1 = value;
101  else if(name.compare("Mu2") == 0)
102  Mu2 = value;
103  else if(name.compare("Q_GM") == 0)
104  Q_GM = value;
105  else
106  NPbase::setParameter(name,value);
107 }
108 
109 bool GeorgiMachacek::CheckParameters(const std::map<std::string, double>& DPars) {
110  for (int i = 0; i < NGMvars; i++) {
111  if (DPars.find(GMvars[i]) == DPars.end()) {
112  std::cout << "ERROR: missing mandatory GeorgiMachacek parameter " << GMvars[i] << std::endl;
115  }
116  }
117  return(NPbase::CheckParameters(DPars));
118 }
119 
120 bool GeorgiMachacek::setFlag(const std::string name, const bool value)
121 {
122  bool res = false;
123  if(name.compare("use_sq_masses") == 0) {
124  flag_use_sq_masses = value;
125  res = true;
126  if (flag_use_sq_masses) {
127  GMvars[std::distance(GMvars,std::find(GMvars,GMvars+NGMvars,"mHh"))] = "mHhsq";
128  GMvars[std::distance(GMvars,std::find(GMvars,GMvars+NGMvars,"mA"))] = "mAsq";
129  GMvars[std::distance(GMvars,std::find(GMvars,GMvars+NGMvars,"mH5"))] = "mH5sq";
130 
131  ModelParamMap.insert(std::make_pair("mHhsq", std::cref(mHhsq)));
132  ModelParamMap.insert(std::make_pair("mAsq", std::cref(mAsq)));
133  ModelParamMap.insert(std::make_pair("mH5sq", std::cref(mH5sq)));
134  }
135  }
136  else
137  res = StandardModel::setFlag(name,value);
138 
139  return(res);
140 }
141 
142 double GeorgiMachacek::muggH(const double sqrt_s) const
143 {
144  return getMyGMCache()->rh_gg;
145 }
146 
147 double GeorgiMachacek::muVBF(const double sqrt_s) const
148 {
149  return getMyGMCache()->rh_VV;
150 }
151 
152 double GeorgiMachacek::mueeWBF(const double sqrt_s) const
153 {
154  return getMyGMCache()->rh_VV;
155 }
156 
157 double GeorgiMachacek::muWH(const double sqrt_s) const
158 {
159  return getMyGMCache()->rh_VV;
160 }
161 
162 double GeorgiMachacek::muZH(const double sqrt_s) const
163 {
164  return getMyGMCache()->rh_VV;
165 }
166 
167 double GeorgiMachacek::mueeZH(const double sqrt_s) const
168 {
169  return getMyGMCache()->rh_VV;
170 }
171 
172 double GeorgiMachacek::muVH(const double sqrt_s) const
173 {
174  return getMyGMCache()->rh_VV;
175 }
176 
177 double GeorgiMachacek::muVBFpVH(const double sqrt_s) const
178 {
179  return getMyGMCache()->rh_VV;
180 }
181 
182 double GeorgiMachacek::muttH(const double sqrt_s) const
183 {
184  return getMyGMCache()->rh_ff;
185 }
186 
188 {
189  return getMyGMCache()->sumModBRs;
190 }
191 
193 {
194  return getMyGMCache()->Gamma_h;
195 }
196 
198 {
200 }
201 
203 {
205 }
206 
208 {
210 }
211 
213 {
215 }
216 
218 {
220 }
221 
223 {
225 }
226 
228 {
230 }
231 
233 {
235 }
236 
238 {
240 }
241 
242 double GeorgiMachacek::muggHgaga(const double sqrt_s) const
243 {
245 }
246 
247 double GeorgiMachacek::muVBFHgaga(const double sqrt_s) const
248 {
250 }
251 
252 double GeorgiMachacek::muVHgaga(const double sqrt_s) const
253 {
255 }
256 
257 double GeorgiMachacek::muttHgaga(const double sqrt_s) const
258 {
260 }
261 
262 double GeorgiMachacek::muggHZZ(const double sqrt_s) const
263 {
265 }
266 
267 double GeorgiMachacek::muVBFHZZ(const double sqrt_s) const
268 {
270 }
271 
272 double GeorgiMachacek::muVHZZ(const double sqrt_s) const
273 {
275 }
276 
277 double GeorgiMachacek::muttHZZ(const double sqrt_s) const
278 {
280 }
281 
282 double GeorgiMachacek::muggHWW(const double sqrt_s) const
283 {
285 }
286 
287 double GeorgiMachacek::muVBFHWW(const double sqrt_s) const
288 {
290 }
291 
292 double GeorgiMachacek::muVHWW(const double sqrt_s) const
293 {
295 }
296 
297 double GeorgiMachacek::muttHWW(const double sqrt_s) const
298 {
300 }
301 
302 double GeorgiMachacek::muggHtautau(const double sqrt_s) const
303 {
305 }
306 
307 double GeorgiMachacek::muVBFHtautau(const double sqrt_s) const
308 {
310 }
311 
312 double GeorgiMachacek::muVHtautau(const double sqrt_s) const
313 {
315 }
316 
317 double GeorgiMachacek::muttHtautau(const double sqrt_s) const
318 {
320 }
321 
322 double GeorgiMachacek::muggHbb(const double sqrt_s) const
323 {
325 }
326 
327 double GeorgiMachacek::muVBFHbb(const double sqrt_s) const
328 {
330 }
331 
332 double GeorgiMachacek::muVHbb(const double sqrt_s) const
333 {
335 }
336 
337 double GeorgiMachacek::muttHbb(const double sqrt_s) const
338 {
340 }
341 
342 double GeorgiMachacek::muppHmumu(const double sqrt_s) const
343 {
344  if(sqrt_s==8)
345  {
346  return (0.872 * getMyGMCache()->rh_gg + 0.122 * getMyGMCache()->rh_VV + 0.006 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_ff / computeGammaTotalRatio();
347  }
348  else if(sqrt_s==13)
349  {
350  return (0.871 * getMyGMCache()->rh_gg + 0.119 * getMyGMCache()->rh_VV + 0.010 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_ff / computeGammaTotalRatio();
351  }
352  else
353  {
354  throw std::runtime_error("The observable muppHmumu is only defined for 8 or 13 TeV.");
355  }
356 }
357 
358 double GeorgiMachacek::muppHZga(const double sqrt_s) const
359 {
360  if(sqrt_s==8)
361  {
362  return (0.872 * getMyGMCache()->rh_gg + 0.122 * getMyGMCache()->rh_VV + 0.006 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_Zga / computeGammaTotalRatio();
363  }
364  else if(sqrt_s==13)
365  {
366  return (0.871 * getMyGMCache()->rh_gg + 0.119 * getMyGMCache()->rh_VV + 0.010 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_Zga / computeGammaTotalRatio();
367  }
368  else
369  {
370  throw std::runtime_error("The observable muppHZga is only defined for 8 or 13 TeV.");
371  }
372 }
373 
374 
375 double GeorgiMachacek::Mw() const{
376  double MZ = StandardModel::Mz;
377  return ( MZ / sqrt(2.0) * sqrt(1.0 + sqrt(1.0 - 4.0 * M_PI * StandardModel::ale / (sqrt(2.0) * StandardModel::GF * MZ* MZ))));
378 }
GeorgiMachacek::BrHccRatio
virtual double BrHccRatio() const
Definition: GeorgiMachacek.cpp:232
GeorgiMachacek::computeGammaTotalRatio
virtual double computeGammaTotalRatio() const
Definition: GeorgiMachacek.cpp:187
GeorgiMachacek::Init
virtual bool Init(const std::map< std::string, double > &DPars)
Initializes the GeorgiMachacek parameters found in the argument.
Definition: GeorgiMachacek.cpp:38
GeorgiMachacek::muggH
virtual double muggH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:142
StandardModel::setParameter
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
Definition: StandardModel.cpp:231
GeorgiMachacek.h
Model::setModelGeorgiMachacek
void setModelGeorgiMachacek()
Definition: Model.h:210
GMcache::updateCache
double updateCache()
Definition: GMcache.cpp:4614
GeorgiMachacek::mHhsq
double mHhsq
Definition: GeorgiMachacek.h:491
GeorgiMachacek::muggHZZ
virtual double muggHZZ(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:262
GeorgiMachacek::InitializeModel
virtual bool InitializeModel()
A method to initialize the model.
Definition: GeorgiMachacek.cpp:30
GeorgiMachacek::Mu2
double Mu2
Definition: GeorgiMachacek.h:491
GeorgiMachacek::vDelta
double vDelta
Definition: GeorgiMachacek.h:491
GeorgiMachacek::muVHWW
virtual double muVHWW(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:292
GeorgiMachacek::BrHZgaRatio
virtual double BrHZgaRatio() const
Definition: GeorgiMachacek.cpp:212
Matching::getObj
T & getObj()
Definition: Matching.h:14
StandardModel::GF
double GF
The Fermi constant in .
Definition: StandardModel.h:2511
GeorgiMachacek::PreUpdate
virtual bool PreUpdate()
The pre-update method for GeorgiMachacek.
Definition: GeorgiMachacek.cpp:42
GeorgiMachacek::BrHmumuRatio
virtual double BrHmumuRatio() const
Definition: GeorgiMachacek.cpp:222
Model::addMissingModelParameter
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:232
StandardModel::CheckParameters
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...
Definition: StandardModel.cpp:313
GeorgiMachacek::muVBFHZZ
virtual double muVBFHZZ(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:267
GeorgiMachacek::mHh
double mHh
Definition: GeorgiMachacek.h:491
Matching::setObj
void setObj(T &obji)
Definition: Matching.h:15
GeorgiMachacek::CheckParameters
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for GeorgiMachacek have been provided in model init...
Definition: GeorgiMachacek.cpp:109
GeorgiMachacek::muttH
virtual double muttH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:182
GMcache::rh_gg
double rh_gg
Definition: GMcache.h:933
GeorgiMachacek::BrHZZRatio
virtual double BrHZZRatio() const
Definition: GeorgiMachacek.cpp:207
GeorgiMachacek::BrHtautauRatio
virtual double BrHtautauRatio() const
Definition: GeorgiMachacek.cpp:227
Model::UpdateError
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:254
GeorgiMachacek::muZH
virtual double muZH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:162
GeorgiMachacek::BrHbbRatio
virtual double BrHbbRatio() const
Definition: GeorgiMachacek.cpp:237
StandardModel::SMM
Matching< StandardModelMatching, StandardModel > SMM
An object of type Matching.
Definition: StandardModel.h:2506
GeorgiMachacek::muttHgaga
virtual double muttHgaga(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:257
GeorgiMachacek::muVHZZ
virtual double muVHZZ(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:272
GeorgiMachacek::muVBFHtautau
virtual double muVBFHtautau(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:307
StandardModel::ale
double ale
The fine-structure constant .
Definition: StandardModel.h:2512
StandardModel::setFlag
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
Definition: StandardModel.cpp:378
Model::ModelParamMap
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:262
GeorgiMachacek::Mu1
double Mu1
Definition: GeorgiMachacek.h:491
StandardModel::Init
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
Definition: StandardModel.cpp:159
GeorgiMachacek::mH5
double mH5
Definition: GeorgiMachacek.h:491
StandardModelMatching
A class for the matching in the Standard Model.
Definition: StandardModelMatching.h:26
GeorgiMachacek::muVBFHbb
virtual double muVBFHbb(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:327
GeorgiMachacek::mueeWBF
virtual double mueeWBF(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:152
GeorgiMachacek::muVH
virtual double muVH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:172
NPbase
The auxiliary base model class for other model classes.
Definition: NPbase.h:66
GeorgiMachacek::muttHbb
virtual double muttHbb(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:337
GeorgiMachacek::mA
double mA
Definition: GeorgiMachacek.h:491
GeorgiMachacek::muVHbb
virtual double muVHbb(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:332
StandardModel::PreUpdate
virtual bool PreUpdate()
The pre-update method for StandardModel.
Definition: StandardModel.cpp:172
GeorgiMachacek::muVBF
virtual double muVBF(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:147
Model::raiseMissingModelParameterCount
void raiseMissingModelParameterCount()
Definition: Model.h:242
gslpp::sqrt
complex sqrt(const complex &z)
Definition: gslpp_complex.cpp:385
GeorgiMachacek::setParameter
virtual void setParameter(const std::string, const double &)
A method to set the value of a parameter of GeorgiMachacek.
Definition: GeorgiMachacek.cpp:75
GeorgiMachacek::mueeZH
virtual double mueeZH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:167
GeorgiMachacek::muVHtautau
virtual double muVHtautau(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:312
GeorgiMachacek::myGMcache
GMcache * myGMcache
Definition: GeorgiMachacek.h:489
StandardModel::PostUpdate
virtual bool PostUpdate()
The post-update method for StandardModel.
Definition: StandardModel.cpp:199
GeorgiMachacek::alpha
double alpha
Definition: GeorgiMachacek.h:491
GeorgiMachacek::Q_GM
double Q_GM
Definition: GeorgiMachacek.h:491
GeorgiMachacek::muttHZZ
virtual double muttHZZ(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:277
GMcache.h
GeorgiMachacek::Mw
virtual double Mw() const
Definition: GeorgiMachacek.cpp:375
GeorgiMachacek::mAsq
double mAsq
Definition: GeorgiMachacek.h:491
GeorgiMachacek::muVBFHWW
virtual double muVBFHWW(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:287
GeorgiMachacek::muggHtautau
virtual double muggHtautau(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:302
GeorgiMachacek::muVHgaga
virtual double muVHgaga(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:252
GeorgiMachacek::muttHWW
virtual double muttHWW(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:297
GeorgiMachacek::muVBFHgaga
virtual double muVBFHgaga(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:247
GeorgiMachacek::BrHgagaRatio
virtual double BrHgagaRatio() const
Definition: GeorgiMachacek.cpp:217
GeorgiMachacek::mH5sq
double mH5sq
Definition: GeorgiMachacek.h:491
GeorgiMachacek::NGMvars
static const int NGMvars
Definition: GeorgiMachacek.h:123
StandardModel::InitializeModel
virtual bool InitializeModel()
A method to initialize the model.
Definition: StandardModel.cpp:140
GeorgiMachacek::BrHWWRatio
virtual double BrHWWRatio() const
Definition: GeorgiMachacek.cpp:202
GeorgiMachacek::BrHggRatio
virtual double BrHggRatio() const
Definition: GeorgiMachacek.cpp:197
StandardModelMatching.h
GeorgiMachacek::muggHWW
virtual double muggHWW(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:282
GeorgiMachacek::muggHgaga
virtual double muggHgaga(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:242
GMcache::rh_ff
double rh_ff
Definition: GMcache.h:933
GeorgiMachacek::muttHtautau
virtual double muttHtautau(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:317
GMcache::rh_VV
double rh_VV
Definition: GMcache.h:933
GeorgiMachacek::mHl2
double mHl2
Definition: GeorgiMachacek.h:492
GMcache::rh_Zga
double rh_Zga
Definition: GMcache.h:933
GeorgiMachacek::GeorgiMachacek
GeorgiMachacek()
GeorgiMachacek constructor.
Definition: GeorgiMachacek.cpp:14
GeorgiMachacek::Update
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for GeorgiMachacek.
Definition: GeorgiMachacek.cpp:49
GeorgiMachacek::GammaTotal
virtual double GammaTotal() const
Definition: GeorgiMachacek.cpp:192
Model::name
std::string name
The name of the model.
Definition: Model.h:267
StandardModel::Mz
double Mz
The mass of the boson in GeV.
Definition: StandardModel.h:2510
GeorgiMachacek::muWH
virtual double muWH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:157
GeorgiMachacek::getMyGMCache
GMcache * getMyGMCache() const
A method get the GeorgiMachacekCache.
Definition: GeorgiMachacek.h:191
GeorgiMachacek::PostUpdate
virtual bool PostUpdate()
The post-update method for GeorgiMachacek.
Definition: GeorgiMachacek.cpp:66
GeorgiMachacek::flag_use_sq_masses
bool flag_use_sq_masses
Definition: GeorgiMachacek.h:493
GMcache::sumModBRs
double sumModBRs
Definition: GMcache.h:935
GeorgiMachacek::muVBFpVH
virtual double muVBFpVH(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:177
GeorgiMachacek::setFlag
virtual bool setFlag(const std::string, const bool)
Definition: GeorgiMachacek.cpp:120
GeorgiMachacek::muppHmumu
virtual double muppHmumu(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:342
GeorgiMachacek::muggHbb
virtual double muggHbb(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:322
GMcache::Gamma_h
double Gamma_h
Definition: GMcache.h:935
GeorgiMachacek::GMvars
static std::string GMvars[NGMvars]
Definition: GeorgiMachacek.h:126
Model::setModelInitialized
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
Definition: Model.h:145
GMcache
A class for the caching of GeorgiMachacek objects.
Definition: GMcache.h:23
GeorgiMachacek::muppHZga
virtual double muppHZga(const double sqrt_s) const
Definition: GeorgiMachacek.cpp:358
GMcache::rh_gaga
double rh_gaga
Definition: GMcache.h:933
GeorgiMachacek::GMM
Matching< GMMatching, GeorgiMachacek > GMM
An object of type Matching.
Definition: GeorgiMachacek.h:485