gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
external_examples.hpp
Go to the documentation of this file.
1 
6 
7 // FlexibleSUSY headers
8 #include "flexiblesusy/src/ew_input.hpp"
9 #include "flexiblesusy/src/numerics2.hpp"
10 #include "flexiblesusy/src/wrappers.hpp"
11 #include "flexiblesusy/models/CMSSM/CMSSM_two_scale_model.hpp"
12 #include "flexiblesusy/models/CMSSM/CMSSM_two_scale_model_slha.hpp"
13 
14 #define PRINTOUT std::cout
15 
16 template <class Model>
17 void setpars(Model& mssm)
18 {
19  Eigen::Matrix<double,3,3> Yu;
20  Eigen::Matrix<double,3,3> Yd;
21  Eigen::Matrix<double,3,3> Ye;
22  double Mu;
23  double g1;
24  double g2;
25  double g3;
26  double vd;
27  double vu;
28  Eigen::Matrix<double,3,3> TYu;
29  Eigen::Matrix<double,3,3> TYd;
30  Eigen::Matrix<double,3,3> TYe;
31  double BMu;
32  Eigen::Matrix<double,3,3> mq2;
33  Eigen::Matrix<double,3,3> ml2;
34  double mHd2;
35  double mHu2;
36  Eigen::Matrix<double,3,3> md2;
37  Eigen::Matrix<double,3,3> mu2;
38  Eigen::Matrix<double,3,3> me2;
39  double MassB;
40  double MassWB;
41  double MassG;
42 
43  // susy parameters
44  Yu << 1.26136e-05, 0, 0,
45  0, 0.00667469, 0,
46  0, 0, 0.857849;
47 
48  Yd << 0.000242026, 0, 0,
49  0, 0.00529911, 0,
50  0, 0, 0.193602;
51 
52  Ye << 2.84161e-05, 0, 0,
53  0, 0.00587557, 0,
54  0, 0, 0.10199;
55 
56  Mu = 627.164;
57  g1 = 0.468171;
58  g2 = 0.642353;
59  g3 = 1.06459;
60  vd = 25.0944;
61  vu = 242.968;
62 
63  // soft parameters
64  TYu << -0.0144387, 0, 0,
65  0, -7.64037, 0,
66  0, 0, -759.305;
67 
68  TYd << -0.336207, 0, 0,
69  0, -7.36109, 0,
70  0, 0, -250.124;
71 
72  TYe << -0.00825134, 0, 0,
73  0, -1.70609, 0,
74  0, 0, -29.4466;
75 
76  BMu = 52140.8;
77 
78  mq2 << 1.03883e+06, 0, 0,
79  0, 1.03881e+06, 0,
80  0, 0, 879135;
81 
82  ml2 << 124856, 0, 0,
83  0, 124853, 0,
84  0, 0, 124142;
85 
86  mHd2 = 92436.9;
87  mHu2 = -380337;
88 
89  md2 << 954454, 0, 0,
90  0, 954439, 0,
91  0, 0, 934727;
92 
93  mu2 << 963422, 0, 0,
94  0, 963400, 0,
95  0, 0, 656621;
96 
97  me2 << 49215.8, 0, 0,
98  0, 49210.9, 0,
99  0, 0, 47759.2;
100 
101  MassB = 210.328;
102  MassWB = 389.189;
103  MassG = 1114.45;
104 
105  // set parameters
106  mssm.set_scale(flexiblesusy::Electroweak_constants::MZ);
107  mssm.set_Yu(Yu);
108  mssm.set_Yd(Yd);
109  mssm.set_Ye(Ye);
110  mssm.set_Mu(Mu);
111  mssm.set_g1(g1);
112  mssm.set_g2(g2);
113  mssm.set_g3(g3);
114  mssm.set_vd(vd);
115  mssm.set_vu(vu);
116  mssm.set_TYu(TYu);
117  mssm.set_TYd(TYd);
118  mssm.set_TYe(TYe);
119  mssm.set_BMu(BMu);
120  mssm.set_mq2(mq2);
121  mssm.set_ml2(ml2);
122  mssm.set_mHd2(mHd2);
123  mssm.set_mHu2(mHu2);
124  mssm.set_md2(md2);
125  mssm.set_mu2(mu2);
126  mssm.set_me2(me2);
127  mssm.set_MassB(MassB);
128  mssm.set_MassWB(MassWB);
129  mssm.set_MassG(MassG);
130 }
131 
132 
134 
135  PRINTOUT << "spec.GetScale() ="
136  << spec.GetScale() << std::endl;
137  PRINTOUT << "mHd2 = "
138  << spec.get_mass2_parameter("mHd2")
139  <<std::endl;
140  PRINTOUT << " mHu2 = " << spec.get_mass2_parameter("mHu2")
141  <<std::endl;
142  PRINTOUT << "BMu =" << spec.get_mass2_parameter("BMu")
143  <<std::endl;
144 
145  PRINTOUT << "mq2(1,1) = "
146  << spec.get_mass2_parameter("mq2",1,1) << std::endl;
147 
148  PRINTOUT << "mu2(1,2) = "
149  << spec.get_mass2_parameter("mq2",1,2) << std::endl;
150 
151  PRINTOUT << "me2(3,3) = "
152  << spec.get_mass2_parameter("mq2",3,3) << std::endl;
153 
156  //PRINTOUT << "Mu = "
157  // << spec.get_mass_parameter("Mu",3,3) << std::endl;
158  PRINTOUT << "Mu = "
159  << spec.get_mass_parameter("Mu") << std::endl;
160 
161  //what not to do here...
162  // Ben: these now throw errors, so cannot continue test if we do them.
163  //PRINTOUT << "mistake mq2(1) = "
164  // << spec.get_mass2_parameter("mq2",1) << std::endl;
165  //PRINTOUT << "mistake 2 mq2(1) = "
166  // << spec.get_mass2_parameter("mqL2",1,1) << std::endl;
167  //PRINTOUT << "mistake 3 mq2(1) = "
168  // << spec.get_mass_parameter("mq2",1) << std::endl;
169 
170  double mgluino = spec.get_Pole_Mass("~g");
171  PRINTOUT << "mgluino = " << mgluino<< std::endl;
172 }
173 
174 template <class M>
176 {
177 
178  PRINTOUT << "mssm.GetScale() ="
179  << mssm.GetScale() << std::endl;
180  PRINTOUT << "map mHd2 "
181  << mssm.get_mass2_parameter("mHd2") <<std::endl;
182  PRINTOUT << "map mHu2 "
183  << mssm.get_mass2_parameter("mHu2") <<std::endl;
184  PRINTOUT << "map BMu "
185  << mssm.get_mass2_parameter("BMu") <<std::endl;
186 
187  PRINTOUT << "mq2(1,1) = "
188  << mssm.get_mass2_parameter("mq2",1,1)
189  << std::endl;
190  PRINTOUT << "mu2(1,2) = "
191  << mssm.get_mass2_parameter("mq2",1,2) << std::endl;
192 
193  PRINTOUT << "me2(3,3) = "
194  << mssm.get_mass2_parameter("mq2",3,3) << std::endl;
195 
196  PRINTOUT << "Mu = "
197  << mssm.get_mass_parameter("Mu",3,3) << std::endl;
198 
199  //what not to do
200  PRINTOUT << "mistake mq2(1) = "
201  << mssm.get_mass2_parameter("mq2",1)
202  << std::endl;
203  PRINTOUT << "mistake 2 mq2(1) = "
204  << mssm.get_mass2_parameter("mqL2",1,1) << std::endl;
205  PRINTOUT << "mistake 3 mq2(1) = "
206  << mssm.get_mass_parameter("mq2",1) << std::endl;
207 
208  double mgluino = mssm.get_Pole_Mass("MGluino");
209  PRINTOUT << "mgluino = " << mgluino<< std::endl;
210 
211 }
212 
213 
215 {
216  PRINTOUT << "inside spectrum_manipulate" <<std::endl;
217  double lowscale = spec.GetScale();
218  double highscale = 1e+15;
219  PRINTOUT << "lowscale = " << lowscale << std::endl;
220  PRINTOUT << "highscale = " << highscale << std::endl;
221  spec_print(spec);
222  PRINTOUT << "Testing stability after .." << std::endl;
223  spec.RunToScale(highscale);
224  PRINTOUT << "after run scale to high scale" << std::endl;
225  spec_print(spec);
226  spec.RunToScale(lowscale);
227  PRINTOUT << "After run scale back to low scale"
228  << spec.GetScale() << std::endl;
229  spec_print(spec);
230 
231 }
232 
233 template <class M>
235 {
236  PRINTOUT << "inside mssm_manipulate" <<std::endl;
237  double lowscale = mssm.GetScale();
238  //setting to same scale to test
239  mssm.SetScale(lowscale);
240  double highscale = 1e+15;
241  PRINTOUT << "Mssm start at lowscale = " << lowscale << std::endl;
242  mssm_print(mssm);
243  mssm.RunToScale(highscale);
244  PRINTOUT << "after run to highscale" << std::endl;
245  mssm_print(mssm);
246  mssm.RunToScale(lowscale);
247  PRINTOUT << "after run scale back top low scale" << std::endl;
248  mssm_print(mssm);
249 
250 }
251 
253  PRINTOUT << "In specbit_test_func3: "
254  << " testing retrieval from SubSpectrum*"
255  << " with capability SM_spectrum..." << endl;
256  PRINTOUT << " Scale: " << SM.GetScale() << endl;
257  // *** This is stuff from an MSSMSpec object. Now testing QedQcdWrapper instead.
258  // PRINTOUT << " Gauge couplings:" << endl;
259  // PRINTOUT << " g1: "
260  // << spec.get_dimensionless_parameter("g1") << endl;
261  // PRINTOUT << " g2: "
262  // << spec.get_dimensionless_parameter("g2") << endl;
263  // PRINTOUT << " g3: "
264  // << spec.get_dimensionless_parameter("g3") << endl;
265  // PRINTOUT << " Yukawa couplings:" << endl;
266  //
267  // for (int i=1; i<=3; i++) { for (int j=1; j<=3; j++) {
268  // PRINTOUT << " Yu("<<i<<","<<j<<"): " << spec.get_dimensionless_parameter("Yu", i, j) << endl;
269  // }
270  // }
271  // for (int i=1; i<=3; i++) { for (int j=1; j<=3; j++) {
272  // PRINTOUT << " Yd("<<i<<","<<j<<"): " << spec.get_dimensionless_parameter("Yd", i, j) << endl;
273  // }
274  // }
275  // for (int i=1; i<=3; i++) { for (int j=1; j<=3; j++) {
276  // PRINTOUT << " Ye("<<i<<","<<j<<"): " << spec.get_dimensionless_parameter("Ye", i, j) << endl;
277  // }
278  // }
279  // ***
280 
281  // Pole masses
282  PRINTOUT << "SM pole masses:" << endl;
283  PRINTOUT << "Z: " << SM.get_Pole_Mass("Z0") << endl;
284  PRINTOUT << "gamma: " << SM.get_Pole_Mass("gamma") << endl;
285  PRINTOUT << "W: " << SM.get_Pole_Mass("W+") << endl;
286  PRINTOUT << "g: " << SM.get_Pole_Mass("g") << endl;
287  PRINTOUT << "t: " << SM.get_Pole_Mass("t") << endl; // i.e. top
288  PRINTOUT << "u(3): " << SM.get_Pole_Mass("u",3) << endl; // i.e. top
289  PRINTOUT << "b: " << SM.get_Pole_Mass("b") << endl; // i.e. bottom
290  PRINTOUT << "d(3): " << SM.get_Pole_Mass("d",3) << endl; // i.e. bottom
291  PRINTOUT << "e-(1): " << SM.get_Pole_Mass("e-",1) << endl; // i.e. electron
292  PRINTOUT << "e-: " << SM.get_Pole_Mass("e-") << endl; // i.e. electron
293  PRINTOUT << "e-(2): " << SM.get_Pole_Mass("e-",2) << endl; // i.e. muon
294  PRINTOUT << "mu-: " << SM.get_Pole_Mass("mu-") << endl; // i.e. muon
295  PRINTOUT << "e-(3): " << SM.get_Pole_Mass("e-",3) << endl; // i.e. tau
296  PRINTOUT << "tau-: " << SM.get_Pole_Mass("tau-") << endl; // i.e. tau
297  PRINTOUT << "nu(1): " << SM.get_Pole_Mass("nu",1) << endl; // Just mass ordered (if there is mixing)
298  PRINTOUT << "nu(2): " << SM.get_Pole_Mass("nu",2) << endl;
299  PRINTOUT << "nu(3): " << SM.get_Pole_Mass("nu",3) << endl;
300  // MSbar parameters
301  PRINTOUT << "SM running parameters:" << endl;
302  PRINTOUT << "Current scale: " << SM.GetScale() << endl;
303  PRINTOUT << "alpha: " << SM.get_dimensionless_parameter("alpha") << endl;
304  PRINTOUT << "alphaS:" << SM.get_dimensionless_parameter("alphaS") << endl;
305  PRINTOUT << "d: " << SM.get_mass_parameter("d") << endl;
306  PRINTOUT << "u: " << SM.get_mass_parameter("u") << endl;
307  PRINTOUT << "s: " << SM.get_mass_parameter("s") << endl;
308  PRINTOUT << "c: " << SM.get_mass_parameter("c") << endl;
309  PRINTOUT << "b: " << SM.get_mass_parameter("b") << endl;
310  PRINTOUT << "t: " << SM.get_mass_parameter("t") << endl;
311  PRINTOUT << "e: " << SM.get_mass_parameter("e") << endl;
312  PRINTOUT << "mu: " << SM.get_mass_parameter("mu") << endl;
313  PRINTOUT << "tau: " << SM.get_mass_parameter("tau") << endl;
314  PRINTOUT << "gamma: " << SM.get_mass_parameter("gamma") << endl;
315  PRINTOUT << "g: " << SM.get_mass_parameter("g") << endl;
316 }
317 
void RunToScale(double scale, const int behave=0)
Run spectrum to a new scale This function is a wrapper for RunToScaleOverride which automatically che...
MSSM derived version of SubSpectrum class.
void spec_print(Gambit::SubSpectrum &spec)
virtual double GetScale() const
Returns the renormalisation scale of parameters.
Definition: MSSMSpec.hpp:198
virtual double GetScale() const
Returns the renormalisation scale of parameters.
void setpars(Model &mssm)
#define PRINTOUT
contains examples of how to use Spectrum objects.
void SM_checks(Gambit::SubSpectrum &SM)
void mssm_manipulate(Gambit::SpecBit::MSSMSpec< M > &mssm)
void spec_manipulate(Gambit::SubSpectrum &spec)
void mssm_print(Gambit::SpecBit::MSSMSpec< M > &mssm)
Virtual base class for interacting with spectrum generator output.
Definition: subspectrum.hpp:87
virtual void SetScale(double scale)
Manually set the renormalisation scale of parameters somewhat dangerous to allow this but may be need...
Definition: MSSMSpec.hpp:203