gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
ScalarSingletDMSimpleSpec.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
18 
19 #ifndef __ScalarSingletDMSimpleSpec_hpp__
20 #define __ScalarSingletDMSimpleSpec_hpp__
21 
22 #include "gambit/Elements/spec.hpp"
23 
25 
26 namespace Gambit
27 {
28  namespace Models
29  {
36  {
37  double HiggsPoleMass;
38  double HiggsVEV;
40  double SingletLambda;
42 
43  double LambdaH;
45  double g1, g2, g3, sinW2;
46  double Yd[3], Ye[3], Yu[3];
47  };
48 
50  {
51  double HiggsPoleMass;
52  double HiggsVEV;
54  double SingletLambda;
56  double mu3;
57 
58  double LambdaH;
60  double g1, g2, g3, sinW2;
61  double Yd[3], Ye[3], Yu[3];
62  };
63 
64 
65 
70  }
71 
73  template <>
74  struct SpecTraits<Models::ScalarSingletDM_Z2SimpleSpec> : DefaultTraits
75  {
76  static std::string name() { return "ScalarSingletDM_Z2SimpleSpec"; }
78  };
79 
81  template <>
82  struct SpecTraits<Models::ScalarSingletDM_Z3SimpleSpec> : DefaultTraits
83  {
84  static std::string name() { return "ScalarSingletDM_Z3SimpleSpec"; }
86  };
87 
88  namespace Models
89  {
90 
91  class ScalarSingletDM_Z2SimpleSpec : public Spec<ScalarSingletDM_Z2SimpleSpec>
92  {
93  private:
95 
97 
98  public:
101  : params(p)
102  {}
103 
104  static int index_offset() {return -1;}
105 
107 
109  double get_HiggsPoleMass() const { return params.HiggsPoleMass; }
110 
111  double get_HiggsPoleMass_1srd_low() const { return params.HiggsPoleMass_1srd_low; }
112  double get_HiggsPoleMass_1srd_high() const { return params.HiggsPoleMass_1srd_high; }
113 
114  double get_HiggsVEV() const { return params.HiggsVEV; }
115  double get_SingletPoleMass() const { return params.SingletPoleMass; }
116  double get_lambda_hS() const { return params.SingletLambda; }
117  double get_lambda_S() const { return params.SingletLambdaS; }
118  double get_lambda_h() const { return params.LambdaH; }
119  double get_g1() const { return params.g1; }
120  double get_g2() const { return params.g2; }
121  double get_g3() const { return params.g3; }
122  double get_sinW2() const { return params.sinW2; }
123 
124  double get_Yd(int i, int j) const { if (i==j){return params.Yd[i];}else{return 0;} }
125  double get_Yu(int i, int j) const { if (i==j){return params.Yu[i];}else{return 0;} }
126  double get_Ye(int i, int j) const { if (i==j){return params.Ye[i];}else{return 0;} }
127 
128  void set_HiggsPoleMass(double in) { params.HiggsPoleMass=in; }
129  void set_HiggsPoleMass_1srd_low(double in) { params.HiggsPoleMass_1srd_low=in; }
131 
132  void set_HiggsVEV(double in) { params.HiggsVEV=in; }
133  void set_SingletPoleMass(double in) { params.SingletPoleMass=in; }
134  void set_lambda_hS(double in) { params.SingletLambda=in; }
135  void set_lambda_S(double in) { params.SingletLambdaS=in; }
136  void set_lambda_h(double in) { params.LambdaH=in; }
137  void set_g1(double in) { params.g1=in; }
138  void set_g2(double in) { params.g2=in; }
139  void set_g3(double in) { params.g3=in; }
140  void set_sinW2(double in) { params.sinW2=in; }
141 
142  void set_Yd(double in, int i, int j) { if (i==j){params.Yd[i]=in;}}
143  void set_Yu(double in, int i, int j) { if (i==j){params.Yu[i]=in;}}
144  void set_Ye(double in, int i, int j) { if (i==j){params.Ye[i]=in;}}
145 
148  {
149  GetterMaps getters;
150  typedef typename MTget::FInfo2W FInfo2W;
151  static const int i012v[] = {0,1,2};
152  static const std::set<int> i012(i012v, Utils::endA(i012v));
153 
154  using namespace Par;
155 
156  getters[mass1] .map0W["vev"] = &Self::get_HiggsVEV;
157  getters[dimensionless].map0W["lambda_hS"] = &Self::get_lambda_hS;
158 
159  getters[Pole_Mass].map0W["h0_1"] = &Self::get_HiggsPoleMass;
160  getters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_high;
161  getters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_low;
162 
163  getters[Pole_Mass].map0W["S"] = &Self::get_SingletPoleMass;
164 
165  getters[dimensionless].map0W["lambda_S"] = &Self::get_lambda_S;
166  getters[dimensionless].map0W["lambda_h"] = &Self::get_lambda_h;
167 
168  getters[dimensionless].map0W["g1"] = &Self::get_g1;
169  getters[dimensionless].map0W["g2"] = &Self::get_g2;
170  getters[dimensionless].map0W["g3"] = &Self::get_g3;
171  getters[dimensionless].map0W["sinW2"] = &Self::get_sinW2;
172 
173  getters[dimensionless].map2W["Yd"]= FInfo2W( &Self::get_Yd, i012, i012);
174  getters[dimensionless].map2W["Yu"]= FInfo2W( &Self::get_Yu, i012, i012);
175  getters[dimensionless].map2W["Ye"]= FInfo2W( &Self::get_Ye, i012, i012);
176 
177  return getters;
178  }
179 
181  {
182  SetterMaps setters;
183  typedef typename MTset::FInfo2W FInfo2W;
184  static const int i012v[] = {0,1,2};
185  static const std::set<int> i012(i012v, Utils::endA(i012v));
186 
187  using namespace Par;
188 
189  setters[mass1].map0W["vev"] = &Self::set_HiggsVEV;
190  setters[dimensionless].map0W["lambda_hS"] = &Self::set_lambda_hS;
191  setters[dimensionless].map0W["lambda_S"] = &Self::set_lambda_S;
192  setters[dimensionless].map0W["lambda_h"] = &Self::set_lambda_h;
193 
194  setters[dimensionless].map0W["g1"] = &Self::set_g1;
195  setters[dimensionless].map0W["g2"] = &Self::set_g2;
196  setters[dimensionless].map0W["g3"] = &Self::set_g3;
197  setters[dimensionless].map0W["sinW2"] = &Self::set_sinW2;
198 
199  setters[Pole_Mass].map0W["h0_1"] = &Self::set_HiggsPoleMass;
200 
201  setters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_high;
202  setters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_low;
203 
204  setters[Pole_Mass].map0W["S"] = &Self::set_SingletPoleMass;
205 
206  setters[dimensionless].map2W["Yd"]= FInfo2W( &Self::set_Yd, i012, i012);
207  setters[dimensionless].map2W["Yu"]= FInfo2W( &Self::set_Yu, i012, i012);
208  setters[dimensionless].map2W["Ye"]= FInfo2W( &Self::set_Ye, i012, i012);
209 
210  return setters;
211  }
213 
214  };
215 
216  class ScalarSingletDM_Z3SimpleSpec : public Spec<ScalarSingletDM_Z3SimpleSpec>
217  {
218  private:
220 
222 
223  public:
226  : params(p)
227  {}
228 
229  static int index_offset() {return -1;}
230 
232 
234  double get_HiggsPoleMass() const { return params.HiggsPoleMass; }
235 
236  double get_HiggsPoleMass_1srd_low() const { return params.HiggsPoleMass_1srd_low; }
237  double get_HiggsPoleMass_1srd_high() const { return params.HiggsPoleMass_1srd_high; }
238 
239  double get_HiggsVEV() const { return params.HiggsVEV; }
240  double get_SingletPoleMass() const { return params.SingletPoleMass; }
241  double get_lambda_hS() const { return params.SingletLambda; }
242  double get_lambda_S() const { return params.SingletLambdaS; }
243  double get_lambda_h() const { return params.LambdaH; }
244  double get_mu3() const { return params.mu3; }
245  double get_g1() const { return params.g1; }
246  double get_g2() const { return params.g2; }
247  double get_g3() const { return params.g3; }
248  double get_sinW2() const { return params.sinW2; }
249 
250  double get_Yd(int i, int j) const { if (i==j){return params.Yd[i];}else{return 0;} }
251  double get_Yu(int i, int j) const { if (i==j){return params.Yu[i];}else{return 0;} }
252  double get_Ye(int i, int j) const { if (i==j){return params.Ye[i];}else{return 0;} }
253 
254  void set_HiggsPoleMass(double in) { params.HiggsPoleMass=in; }
255  void set_HiggsPoleMass_1srd_low(double in) { params.HiggsPoleMass_1srd_low=in; }
257 
258  void set_HiggsVEV(double in) { params.HiggsVEV=in; }
259  void set_SingletPoleMass(double in) { params.SingletPoleMass=in; }
260  void set_lambda_hS(double in) { params.SingletLambda=in; }
261  void set_lambda_S(double in) { params.SingletLambdaS=in; }
262  void set_lambda_h(double in) { params.LambdaH=in; }
263  void set_mu3(double in) { params.mu3=in; }
264  void set_g1(double in) { params.g1=in; }
265  void set_g2(double in) { params.g2=in; }
266  void set_g3(double in) { params.g3=in; }
267  void set_sinW2(double in) { params.sinW2=in; }
268 
269  void set_Yd(double in, int i, int j) { if (i==j){params.Yd[i]=in;}}
270  void set_Yu(double in, int i, int j) { if (i==j){params.Yu[i]=in;}}
271  void set_Ye(double in, int i, int j) { if (i==j){params.Ye[i]=in;}}
272 
275  {
276  GetterMaps getters;
277  typedef typename MTget::FInfo2W FInfo2W;
278  static const int i012v[] = {0,1,2};
279  static const std::set<int> i012(i012v, Utils::endA(i012v));
280 
281  using namespace Par;
282 
283  getters[mass1] .map0W["vev"] = &Self::get_HiggsVEV;
284  getters[mass1] .map0W["mu3"] = &Self::get_mu3;
285  getters[dimensionless].map0W["lambda_hS"] = &Self::get_lambda_hS;
286 
287  getters[Pole_Mass].map0W["h0_1"] = &Self::get_HiggsPoleMass;
288  getters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_high;
289  getters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_low;
290 
291  getters[Pole_Mass].map0W["S"] = &Self::get_SingletPoleMass;
292 
293  getters[dimensionless].map0W["lambda_S"] = &Self::get_lambda_S;
294  getters[dimensionless].map0W["lambda_h"] = &Self::get_lambda_h;
295 
296  getters[dimensionless].map0W["g1"] = &Self::get_g1;
297  getters[dimensionless].map0W["g2"] = &Self::get_g2;
298  getters[dimensionless].map0W["g3"] = &Self::get_g3;
299  getters[dimensionless].map0W["sinW2"] = &Self::get_sinW2;
300 
301  getters[dimensionless].map2W["Yd"]= FInfo2W( &Self::get_Yd, i012, i012);
302  getters[dimensionless].map2W["Yu"]= FInfo2W( &Self::get_Yu, i012, i012);
303  getters[dimensionless].map2W["Ye"]= FInfo2W( &Self::get_Ye, i012, i012);
304 
305  return getters;
306  }
307 
309  {
310  SetterMaps setters;
311  typedef typename MTset::FInfo2W FInfo2W;
312  static const int i012v[] = {0,1,2};
313  static const std::set<int> i012(i012v, Utils::endA(i012v));
314 
315  using namespace Par;
316 
317  setters[mass1].map0W["vev"] = &Self::set_HiggsVEV;
318  setters[mass1].map0W["mu3"] = &Self::set_mu3;
319  setters[dimensionless].map0W["lambda_hS"] = &Self::set_lambda_hS;
320  setters[dimensionless].map0W["lambda_S"] = &Self::set_lambda_S;
321  setters[dimensionless].map0W["lambda_h"] = &Self::set_lambda_h;
322 
323  setters[dimensionless].map0W["g1"] = &Self::set_g1;
324  setters[dimensionless].map0W["g2"] = &Self::set_g2;
325  setters[dimensionless].map0W["g3"] = &Self::set_g3;
326  setters[dimensionless].map0W["sinW2"] = &Self::set_sinW2;
327 
328  setters[Pole_Mass].map0W["h0_1"] = &Self::set_HiggsPoleMass;
329 
330  setters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_high;
331  setters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_low;
332 
333  setters[Pole_Mass].map0W["S"] = &Self::set_SingletPoleMass;
334 
335  setters[dimensionless].map2W["Yd"]= FInfo2W( &Self::set_Yd, i012, i012);
336  setters[dimensionless].map2W["Yu"]= FInfo2W( &Self::set_Yu, i012, i012);
337  setters[dimensionless].map2W["Ye"]= FInfo2W( &Self::set_Ye, i012, i012);
338 
339  return setters;
340  }
342 
343  };
344 
345  } // end Models namespace
346 } // end Gambit namespace
347 
348 #endif
Need to forward declare Spec class.
Definition: spec_head.hpp:39
Register the definitions of SubSpectrum contents here.
std::map< Par::Tags, MapCollection< MTset > > SetterMaps
Definition: spec_head.hpp:249
Some member function definitions from classes in spec_head.hpp.
double get_HiggsPoleMass() const
Wrapper-side interface functions to parameter object.
ScalarSingletDM_Z3SimpleSpec(const ScalarSingletDM_Z3Model &p)
Constructors/destructors.
double get_HiggsPoleMass() const
Wrapper-side interface functions to parameter object.
ScalarSingletDM_Z2SimpleSpec(const ScalarSingletDM_Z2Model &p)
Constructors/destructors.
Forward declare base traits class which communicates Model and Input typedefs from the wrapper class ...
Definition: spec_head.hpp:59
Default values for traits. Specialisations of SpecTraits should inherit from this, and then override the traits that they want to customise.
Definition: spec_head.hpp:65
Simple extension of the SMHiggsSimpleSpec "model object" to include scalar singlet DM parameters We c...
T * endA(T(&arr)[N])
TODO: see if we can use this one:
Definition: Analysis.hpp:33
std::map< Par::Tags, MapCollection< MTget > > GetterMaps
Will need a map of map collections for both the getters and setters, containing the map collections f...
Definition: spec_head.hpp:248