gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
VectorSingletDM_Z2SimpleSpec.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
22 
23 #ifndef __VectorSingletDM_Z2SimpleSpec_hpp__
24 #define __VectorSingletDM_Z2SimpleSpec_hpp__
25 
26 #include "gambit/Elements/spec.hpp"
28 
29 namespace Gambit
30 {
31  namespace Models
32  {
39  {
40  double HiggsPoleMass;
41  double HiggsVEV;
43  double VectorLambda;
45 
46  double LambdaH;
47  double VectorLambdaS;
48  double g1, g2, g3, sinW2;
49  double Yd[3], Ye[3], Yu[3];
50  };
51 
52 
56  }
57 
59  template <>
60  struct SpecTraits<Models::VectorSingletDM_Z2SimpleSpec> : DefaultTraits
61  {
62  static std::string name() { return "VectorSingletDM_Z2SimpleSpec"; }
64  };
65 
66  namespace Models
67  {
68  class VectorSingletDM_Z2SimpleSpec : public Spec<VectorSingletDM_Z2SimpleSpec>
69  {
70  private:
72 
74 
75  public:
78  : params(p)
79  {}
80 
81  static int index_offset() {return -1;}
82 
84 
86  double get_HiggsPoleMass() const { return params.HiggsPoleMass; }
87 
88  double get_HiggsPoleMass_1srd_low() const { return params.HiggsPoleMass_1srd_low; }
89  double get_HiggsPoleMass_1srd_high() const { return params.HiggsPoleMass_1srd_high; }
90 
91  double get_HiggsVEV() const { return params.HiggsVEV; }
92  double get_VectorPoleMass() const { return params.VectorPoleMass; }
93  double get_lambda_hV() const { return params.VectorLambda; }
94  double get_lambda_h() const { return params.LambdaH; }
95  double get_g1() const { return params.g1; }
96  double get_g2() const { return params.g2; }
97  double get_g3() const { return params.g3; }
98  double get_sinW2() const { return params.sinW2; }
99 
100  double get_Yd(int i, int j) const { if (i==j){return params.Yd[i];}else{return 0;} }
101  double get_Yu(int i, int j) const { if (i==j){return params.Yu[i];}else{return 0;} }
102  double get_Ye(int i, int j) const { if (i==j){return params.Ye[i];}else{return 0;} }
103 
104  void set_HiggsPoleMass(double in) { params.HiggsPoleMass=in; }
105  void set_HiggsPoleMass_1srd_low(double in) { params.HiggsPoleMass_1srd_low=in; }
107 
108  void set_HiggsVEV(double in) { params.HiggsVEV=in; }
109  void set_VectorPoleMass(double in) { params.VectorPoleMass=in; }
110  void set_lambda_hV(double in) { params.VectorLambda=in; }
111  void set_lambda_h(double in) { params.LambdaH=in; }
112  void set_g1(double in) { params.g1=in; }
113  void set_g2(double in) { params.g2=in; }
114  void set_g3(double in) { params.g3=in; }
115  void set_sinW2(double in) { params.sinW2=in; }
116 
117  void set_Yd(double in, int i, int j) { if (i==j){params.Yd[i]=in;}}
118  void set_Yu(double in, int i, int j) { if (i==j){params.Yu[i]=in;}}
119  void set_Ye(double in, int i, int j) { if (i==j){params.Ye[i]=in;}}
120 
123  {
124  GetterMaps getters;
125  typedef typename MTget::FInfo2W FInfo2W;
126  static const int i012v[] = {0,1,2};
127  static const std::set<int> i012(i012v, Utils::endA(i012v));
128 
129  using namespace Par;
130 
131  getters[mass1] .map0W["vev"] = &Self::get_HiggsVEV;
132  getters[dimensionless].map0W["lambda_hV"] = &Self::get_lambda_hV;
133  getters[Pole_Mass].map0W["V"] = &Self::get_VectorPoleMass;
134 
135  getters[Pole_Mass].map0W["h0_1"] = &Self::get_HiggsPoleMass;
136  getters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_high;
137  getters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_low;
138 
139  getters[dimensionless].map0W["lambda_h"] = &Self::get_lambda_h;
140 
141  getters[dimensionless].map0W["g1"] = &Self::get_g1;
142  getters[dimensionless].map0W["g2"] = &Self::get_g2;
143  getters[dimensionless].map0W["g3"] = &Self::get_g3;
144  getters[dimensionless].map0W["sinW2"] = &Self::get_sinW2;
145 
146  getters[dimensionless].map2W["Yd"]= FInfo2W( &Self::get_Yd, i012, i012);
147  getters[dimensionless].map2W["Yu"]= FInfo2W( &Self::get_Yu, i012, i012);
148  getters[dimensionless].map2W["Ye"]= FInfo2W( &Self::get_Ye, i012, i012);
149 
150  return getters;
151  }
152 
154  {
155  SetterMaps setters;
156  typedef typename MTset::FInfo2W FInfo2W;
157  static const int i012v[] = {0,1,2};
158  static const std::set<int> i012(i012v, Utils::endA(i012v));
159 
160  using namespace Par;
161 
162  setters[mass1].map0W["vev"] = &Self::set_HiggsVEV;
163  setters[dimensionless].map0W["lambda_hV"] = &Self::set_lambda_hV;
164  setters[dimensionless].map0W["lambda_h"] = &Self::set_lambda_h;
165  setters[Pole_Mass].map0W["V"] = &Self::set_VectorPoleMass;
166 
167  setters[dimensionless].map0W["g1"] = &Self::set_g1;
168  setters[dimensionless].map0W["g2"] = &Self::set_g2;
169  setters[dimensionless].map0W["g3"] = &Self::set_g3;
170  setters[dimensionless].map0W["sinW2"] = &Self::set_sinW2;
171 
172  setters[Pole_Mass].map0W["h0_1"] = &Self::set_HiggsPoleMass;
173  setters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_high;
174  setters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_low;
175 
176  setters[dimensionless].map2W["Yd"]= FInfo2W( &Self::set_Yd, i012, i012);
177  setters[dimensionless].map2W["Yu"]= FInfo2W( &Self::set_Yu, i012, i012);
178  setters[dimensionless].map2W["Ye"]= FInfo2W( &Self::set_Ye, i012, i012);
179 
180  return setters;
181  }
183 
184  };
185 
186  } // end Models namespace
187 } // end Gambit namespace
188 
189 #endif
Need to forward declare Spec class.
Definition: spec_head.hpp:39
Simple extension of the SMHiggsSimpleSpec "model object" to include vector DM parameters We could eas...
Register the definitions of SubSpectrum contents here.
std::map< Par::Tags, MapCollection< MTset > > SetterMaps
Definition: spec_head.hpp:249
VectorSingletDM_Z2SimpleSpec(const VectorSingletDM_Z2Model &p)
Constructors/destructors.
Some member function definitions from classes in spec_head.hpp.
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
T * endA(T(&arr)[N])
double get_HiggsPoleMass() const
Wrapper-side interface functions to parameter object.
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