gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
MajoranaSingletDM_Z2SimpleSpec.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
22 
23 #ifndef __MajoranaSingletDM_Z2SimpleSpec_hpp__
24 #define __MajoranaSingletDM_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;
44  double MajoranaXi;
46 
47  double LambdaH;
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::MajoranaSingletDM_Z2SimpleSpec> : DefaultTraits
61  {
62  static std::string name() { return "MajoranaSingletDM_Z2SimpleSpec"; }
64  };
65 
66  namespace Models
67  {
68  class MajoranaSingletDM_Z2SimpleSpec : public Spec<MajoranaSingletDM_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_MajoranaPoleMass() const { return params.MajoranaPoleMass; }
93  double get_lambda_X() const { return params.MajoranaLambda; }
94  double get_xi() const { return params.MajoranaXi; }
95  double get_lambda_h() const { return params.LambdaH; }
96  double get_g1() const { return params.g1; }
97  double get_g2() const { return params.g2; }
98  double get_g3() const { return params.g3; }
99  double get_sinW2() const { return params.sinW2; }
100 
101  double get_Yd(int i, int j) const { if (i==j){return params.Yd[i];}else{return 0;} }
102  double get_Yu(int i, int j) const { if (i==j){return params.Yu[i];}else{return 0;} }
103  double get_Ye(int i, int j) const { if (i==j){return params.Ye[i];}else{return 0;} }
104 
105  void set_HiggsPoleMass(double in) { params.HiggsPoleMass=in; }
106  void set_HiggsPoleMass_1srd_low(double in) { params.HiggsPoleMass_1srd_low=in; }
108 
109  void set_HiggsVEV(double in) { params.HiggsVEV=in; }
110  void set_MajoranaPoleMass(double in) { params.MajoranaPoleMass=in; }
111  void set_lambda_X(double in) { params.MajoranaLambda=in; }
112  void set_xi(double in) { params.MajoranaXi=in; }
113  void set_lambda_h(double in) { params.LambdaH=in; }
114  void set_g1(double in) { params.g1=in; }
115  void set_g2(double in) { params.g2=in; }
116  void set_g3(double in) { params.g3=in; }
117  void set_sinW2(double in) { params.sinW2=in; }
118 
119  void set_Yd(double in, int i, int j) { if (i==j){params.Yd[i]=in;}}
120  void set_Yu(double in, int i, int j) { if (i==j){params.Yu[i]=in;}}
121  void set_Ye(double in, int i, int j) { if (i==j){params.Ye[i]=in;}}
122 
125  {
126  GetterMaps getters;
127  typedef typename MTget::FInfo2W FInfo2W;
128  static const int i012v[] = {0,1,2};
129  static const std::set<int> i012(i012v, Utils::endA(i012v));
130 
131  using namespace Par;
132 
133  getters[mass1] .map0W["vev"] = &Self::get_HiggsVEV;
134  getters[dimensionless].map0W["lX"] = &Self::get_lambda_X;
135  getters[dimensionless].map0W["xi"] = &Self::get_xi;
136 
137  getters[Pole_Mass].map0W["h0_1"] = &Self::get_HiggsPoleMass;
138  getters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_high;
139  getters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::get_HiggsPoleMass_1srd_low;
140 
141  getters[Pole_Mass].map0W["X"] = &Self::get_MajoranaPoleMass;
142 
143  getters[dimensionless].map0W["lambda_h"] = &Self::get_lambda_h;
144 
145  getters[dimensionless].map0W["g1"] = &Self::get_g1;
146  getters[dimensionless].map0W["g2"] = &Self::get_g2;
147  getters[dimensionless].map0W["g3"] = &Self::get_g3;
148  getters[dimensionless].map0W["sinW2"] = &Self::get_sinW2;
149 
150  getters[dimensionless].map2W["Yd"]= FInfo2W( &Self::get_Yd, i012, i012);
151  getters[dimensionless].map2W["Yu"]= FInfo2W( &Self::get_Yu, i012, i012);
152  getters[dimensionless].map2W["Ye"]= FInfo2W( &Self::get_Ye, i012, i012);
153 
154  return getters;
155  }
156 
158  {
159  SetterMaps setters;
160  typedef typename MTset::FInfo2W FInfo2W;
161  static const int i012v[] = {0,1,2};
162  static const std::set<int> i012(i012v, Utils::endA(i012v));
163 
164  using namespace Par;
165 
166  setters[mass1].map0W["vev"] = &Self::set_HiggsVEV;
167  setters[dimensionless].map0W["lX"] = &Self::set_lambda_X;
168  setters[dimensionless].map0W["xi"] = &Self::set_xi;
169  setters[dimensionless].map0W["lambda_h"] = &Self::set_lambda_h;
170 
171  setters[dimensionless].map0W["g1"] = &Self::set_g1;
172  setters[dimensionless].map0W["g2"] = &Self::set_g2;
173  setters[dimensionless].map0W["g3"] = &Self::set_g3;
174  setters[dimensionless].map0W["sinW2"] = &Self::set_sinW2;
175 
176  setters[Pole_Mass].map0W["h0_1"] = &Self::set_HiggsPoleMass;
177  setters[Pole_Mass_1srd_high].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_high;
178  setters[Pole_Mass_1srd_low].map0W["h0_1"] = &Self::set_HiggsPoleMass_1srd_low;
179 
180  setters[Pole_Mass].map0W["X"] = &Self::set_MajoranaPoleMass;
181 
182  setters[dimensionless].map2W["Yd"]= FInfo2W( &Self::set_Yd, i012, i012);
183  setters[dimensionless].map2W["Yu"]= FInfo2W( &Self::set_Yu, i012, i012);
184  setters[dimensionless].map2W["Ye"]= FInfo2W( &Self::set_Ye, i012, i012);
185 
186  return setters;
187  }
189 
190  };
191 
192  } // end Models namespace
193 } // end Gambit namespace
194 
195 #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
double get_HiggsPoleMass() const
Wrapper-side interface functions to parameter object.
Some member function definitions from classes in spec_head.hpp.
MajoranaSingletDM_Z2SimpleSpec(const MajoranaSingletDM_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 Majorana DM parameters We could e...
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