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 <algorithm>
10#include "GeorgiMachacek.h"
11#include "GMcache.h"
12
13std::string GeorgiMachacek::GMvars[NGMvars] = {"vDelta", "alpha", "mHh", "mA", "mH5", "Mu1", "Mu2", "Q_GM"};
14
16 SMM.setObj((StandardModelMatching&) GMM.getObj());
17 ModelParamMap.insert(std::make_pair("vDelta", std::cref(vDelta)));
18 ModelParamMap.insert(std::make_pair("alpha", std::cref(alpha)));
19 ModelParamMap.insert(std::make_pair("mHh", std::cref(mHh)));
20 ModelParamMap.insert(std::make_pair("mA", std::cref(mA)));
21 ModelParamMap.insert(std::make_pair("mH5", std::cref(mH5)));
22 ModelParamMap.insert(std::make_pair("Mu1", std::cref(Mu1)));
23 ModelParamMap.insert(std::make_pair("Mu2", std::cref(Mu2)));
24 ModelParamMap.insert(std::make_pair("Q_GM", std::cref(Q_GM)));
26}
27
29// Initialization
30
32{
33 myGMcache = new GMcache(*this);
36 return(true);
37}
38
39bool GeorgiMachacek::Init(const std::map<std::string, double>& DPars) {
41}
42
44{
45 if(!StandardModel::PreUpdate()) return (false);
46
47 return (true);
48}
49
50bool GeorgiMachacek::Update(const std::map<std::string, double>& DPars) {
51
52 if(!PreUpdate()) return (false);
53
54 UpdateError = false;
55
56 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
57 setParameter(it->first, it->second);
58
59 if (UpdateError) return (false);
60
61 if(!PostUpdate()) return (false);
62
63 return (true);
64
65}
66
68{
69 if(!StandardModel::PostUpdate()) return (false);
70
72
73 return (true);
74}
75
76void GeorgiMachacek::setParameter(const std::string name, const double& value){
77 if(name.compare("vDelta") == 0) {
78 if(vDelta >= 0.) {
79 vDelta = value;
80 }
81 else {
82 throw std::runtime_error("error in GeorgiMachacek::SetParameter, vDelta < 0!");
83 }
84 }
85 else if(name.compare("alpha") == 0) {
86 alpha = value;
87 }
88 else if(name.compare("mHh") == 0 && !flag_use_sq_masses)
89 mHh = value;
90 else if(name.compare("mA") == 0 && !flag_use_sq_masses)
91 mA = value;
92 else if(name.compare("mH5") == 0 && !flag_use_sq_masses)
93 mH5 = value;
94 else if(name.compare("mHhsq") == 0 && flag_use_sq_masses)
95 mHhsq = value;
96 else if(name.compare("mAsq") == 0 && flag_use_sq_masses)
97 mAsq = value;
98 else if(name.compare("mH5sq") == 0 && flag_use_sq_masses)
99 mH5sq = value;
100 else if(name.compare("Mu1") == 0)
101 Mu1 = value;
102 else if(name.compare("Mu2") == 0)
103 Mu2 = value;
104 else if(name.compare("Q_GM") == 0)
105 Q_GM = value;
106 else
108}
109
110bool GeorgiMachacek::CheckParameters(const std::map<std::string, double>& DPars) {
111 for (int i = 0; i < NGMvars; i++) {
112 if (DPars.find(GMvars[i]) == DPars.end()) {
113 std::cout << "ERROR: missing mandatory GeorgiMachacek parameter " << GMvars[i] << std::endl;
116 }
117 }
119}
120
121bool GeorgiMachacek::setFlag(const std::string name, const bool value)
122{
123 bool res = false;
124 if(name.compare("use_sq_masses") == 0) {
125 flag_use_sq_masses = value;
126 res = true;
127 if (flag_use_sq_masses) {
128 GMvars[std::distance(GMvars,std::find(GMvars,GMvars+NGMvars,"mHh"))] = "mHhsq";
129 GMvars[std::distance(GMvars,std::find(GMvars,GMvars+NGMvars,"mA"))] = "mAsq";
130 GMvars[std::distance(GMvars,std::find(GMvars,GMvars+NGMvars,"mH5"))] = "mH5sq";
131
132 ModelParamMap.insert(std::make_pair("mHhsq", std::cref(mHhsq)));
133 ModelParamMap.insert(std::make_pair("mAsq", std::cref(mAsq)));
134 ModelParamMap.insert(std::make_pair("mH5sq", std::cref(mH5sq)));
135 }
136 }
137 else
138 res = StandardModel::setFlag(name,value);
139
140 return(res);
141}
142
143const double GeorgiMachacek::muggH(const double sqrt_s) const
144{
145 return getMyGMCache()->rh_gg;
146}
147
148const double GeorgiMachacek::muVBF(const double sqrt_s) const
149{
150 return getMyGMCache()->rh_VV;
151}
152
153const double GeorgiMachacek::mueeWBF(const double sqrt_s, const double Pol_em, const double Pol_ep) const
154{
155 return getMyGMCache()->rh_VV;
156}
157
158const double GeorgiMachacek::muWH(const double sqrt_s) const
159{
160 return getMyGMCache()->rh_VV;
161}
162
163const double GeorgiMachacek::muZH(const double sqrt_s) const
164{
165 return getMyGMCache()->rh_VV;
166}
167
168const double GeorgiMachacek::mueeZH(const double sqrt_s, const double Pol_em, const double Pol_ep) const
169{
170 return getMyGMCache()->rh_VV;
171}
172
173const double GeorgiMachacek::muVH(const double sqrt_s) const
174{
175 return getMyGMCache()->rh_VV;
176}
177
178const double GeorgiMachacek::muVBFpVH(const double sqrt_s) const
179{
180 return getMyGMCache()->rh_VV;
181}
182
183const double GeorgiMachacek::muttH(const double sqrt_s) const
184{
185 return getMyGMCache()->rh_ff;
186}
187
189{
190 return getMyGMCache()->sumModBRs;
191}
192
193const double GeorgiMachacek::GammaTotal() const
194{
195 return getMyGMCache()->Gamma_h;
196}
197
198const double GeorgiMachacek::BrHggRatio() const
199{
201}
202
203const double GeorgiMachacek::BrHWWRatio() const
204{
206}
207
208const double GeorgiMachacek::BrHZZRatio() const
209{
211}
212
213const double GeorgiMachacek::BrHZgaRatio() const
214{
216}
217
219{
221}
222
224{
226}
227
229{
231}
232
233const double GeorgiMachacek::BrHccRatio() const
234{
236}
237
238const double GeorgiMachacek::BrHbbRatio() const
239{
241}
242
243const double GeorgiMachacek::muggHgaga(const double sqrt_s) const
244{
246}
247
248const double GeorgiMachacek::muVBFHgaga(const double sqrt_s) const
249{
251}
252
253const double GeorgiMachacek::muVHgaga(const double sqrt_s) const
254{
256}
257
258const double GeorgiMachacek::muttHgaga(const double sqrt_s) const
259{
261}
262
263const double GeorgiMachacek::muggHZZ(const double sqrt_s) const
264{
266}
267
268const double GeorgiMachacek::muVBFHZZ(const double sqrt_s) const
269{
271}
272
273const double GeorgiMachacek::muVHZZ(const double sqrt_s) const
274{
276}
277
278const double GeorgiMachacek::muttHZZ(const double sqrt_s) const
279{
281}
282
283const double GeorgiMachacek::muggHWW(const double sqrt_s) const
284{
286}
287
288const double GeorgiMachacek::muVBFHWW(const double sqrt_s) const
289{
291}
292
293const double GeorgiMachacek::muVHWW(const double sqrt_s) const
294{
296}
297
298const double GeorgiMachacek::muttHWW(const double sqrt_s) const
299{
301}
302
303const double GeorgiMachacek::muggHtautau(const double sqrt_s) const
304{
306}
307
308const double GeorgiMachacek::muVBFHtautau(const double sqrt_s) const
309{
311}
312
313const double GeorgiMachacek::muVHtautau(const double sqrt_s) const
314{
316}
317
318const double GeorgiMachacek::muttHtautau(const double sqrt_s) const
319{
321}
322
323const double GeorgiMachacek::muggHbb(const double sqrt_s) const
324{
326}
327
328const double GeorgiMachacek::muVBFHbb(const double sqrt_s) const
329{
331}
332
333const double GeorgiMachacek::muVHbb(const double sqrt_s) const
334{
336}
337
338const double GeorgiMachacek::muttHbb(const double sqrt_s) const
339{
341}
342
343const double GeorgiMachacek::muppHmumu(const double sqrt_s) const
344{
345 if(sqrt_s==8)
346 {
347 return (0.872 * getMyGMCache()->rh_gg + 0.122 * getMyGMCache()->rh_VV + 0.006 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_ff / computeGammaTotalRatio();
348 }
349 else if(sqrt_s==13)
350 {
351 return (0.871 * getMyGMCache()->rh_gg + 0.119 * getMyGMCache()->rh_VV + 0.010 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_ff / computeGammaTotalRatio();
352 }
353 else
354 {
355 throw std::runtime_error("The observable muppHmumu is only defined for 8 or 13 TeV.");
356 }
357}
358
359const double GeorgiMachacek::muppHZga(const double sqrt_s) const
360{
361 if(sqrt_s==8)
362 {
363 return (0.872 * getMyGMCache()->rh_gg + 0.122 * getMyGMCache()->rh_VV + 0.006 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_Zga / computeGammaTotalRatio();
364 }
365 else if(sqrt_s==13)
366 {
367 return (0.871 * getMyGMCache()->rh_gg + 0.119 * getMyGMCache()->rh_VV + 0.010 * getMyGMCache()->rh_ff) * getMyGMCache()->rh_Zga / computeGammaTotalRatio();
368 }
369 else
370 {
371 throw std::runtime_error("The observable muppHZga is only defined for 8 or 13 TeV.");
372 }
373}
374
375
376const double GeorgiMachacek::Mw() const{
377 double MZ = StandardModel::Mz;
378 return ( MZ / sqrt(2.0) * sqrt(1.0 + sqrt(1.0 - 4.0 * M_PI * StandardModel::ale / (sqrt(2.0) * StandardModel::GF * MZ* MZ))));
379}
std::map< std::string, double > DPars
Definition: Minimal.cpp:11
A class for the caching of GeorgiMachacek objects.
Definition: GMcache.h:23
double rh_ff
Definition: GMcache.h:905
double rh_gaga
Definition: GMcache.h:905
double Gamma_h
Definition: GMcache.h:907
double updateCache()
Definition: GMcache.cpp:4614
double rh_gg
Definition: GMcache.h:905
double sumModBRs
Definition: GMcache.h:907
double rh_Zga
Definition: GMcache.h:905
double rh_VV
Definition: GMcache.h:905
virtual const double muggHtautau(const double sqrt_s) const
GeorgiMachacek()
GeorgiMachacek constructor.
virtual const double muVBFHbb(const double sqrt_s) const
virtual const double muttHZZ(const double sqrt_s) const
virtual const double muttHtautau(const double sqrt_s) const
virtual bool PreUpdate()
The pre-update method for GeorgiMachacek.
static std::string GMvars[NGMvars]
GMcache * getMyGMCache() const
A method get the GeorgiMachacekCache.
virtual const double muVBFHtautau(const double sqrt_s) const
virtual bool setFlag(const std::string, const bool)
virtual const double BrHZZRatio() const
virtual bool Init(const std::map< std::string, double > &DPars)
Initializes the GeorgiMachacek parameters found in the argument.
virtual const double muVBF(const double sqrt_s) const
virtual const double BrHWWRatio() const
virtual const double muVHtautau(const double sqrt_s) const
virtual const double GammaTotal() const
virtual bool PostUpdate()
The post-update method for GeorgiMachacek.
virtual const double Mw() const
GMcache * myGMcache
virtual const double muVBFHgaga(const double sqrt_s) const
virtual const double BrHtautauRatio() const
virtual const double BrHZgaRatio() const
virtual const double muVHbb(const double sqrt_s) const
virtual const double muppHZga(const double sqrt_s) const
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for GeorgiMachacek.
virtual bool InitializeModel()
A method to initialize the model.
virtual const double muWH(const double sqrt_s) const
virtual const double muttHWW(const double sqrt_s) const
virtual const double muVHgaga(const double sqrt_s) const
virtual void setParameter(const std::string, const double &)
A method to set the value of a parameter of GeorgiMachacek.
virtual const double muggHgaga(const double sqrt_s) const
Matching< GMMatching, GeorgiMachacek > GMM
An object of type Matching.
virtual const double mueeWBF(const double sqrt_s, const double Pol_em, const double Pol_ep) const
virtual const double muttHbb(const double sqrt_s) const
virtual const double muZH(const double sqrt_s) const
virtual const double BrHmumuRatio() const
virtual const double muttHgaga(const double sqrt_s) const
static const int NGMvars
virtual const double muVH(const double sqrt_s) const
virtual const double muggHbb(const double sqrt_s) const
virtual const double muggH(const double sqrt_s) const
virtual const double muVBFHWW(const double sqrt_s) const
virtual const double muggHWW(const double sqrt_s) const
virtual const double muVHZZ(const double sqrt_s) const
virtual const double BrHbbRatio() const
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...
virtual const double muVHWW(const double sqrt_s) const
virtual const double muttH(const double sqrt_s) const
virtual const double muppHmumu(const double sqrt_s) const
virtual const double mueeZH(const double sqrt_s, const double Pol_em, const double Pol_ep) const
virtual const double muVBFHZZ(const double sqrt_s) const
virtual const double muVBFpVH(const double sqrt_s) const
virtual const double BrHgagaRatio() const
virtual const double muggHZZ(const double sqrt_s) const
virtual const double computeGammaTotalRatio() const
virtual const double BrHccRatio() const
virtual const double BrHggRatio() const
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:250
void setModelGeorgiMachacek()
Definition: Model.h:218
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:280
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
Definition: Model.h:145
std::string name
The name of the model.
Definition: Model.h:285
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:272
void raiseMissingModelParameterCount()
Definition: Model.h:260
The auxiliary base model class for other model classes.
Definition: NPbase.h:66
virtual bool PreUpdate()
The pre-update method for StandardModel.
double Mz
The mass of the boson in GeV.
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 Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
Matching< StandardModelMatching, StandardModel > SMM
An object of type Matching.
double GF
The Fermi constant in .
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
double ale
The fine-structure constant .
virtual bool PostUpdate()
The post-update method for StandardModel.
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.
A class for the matching in the Standard Model.