gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
mssm_slhahelp.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
34 
35 
36 #ifndef __MSSM_slhahelp_hpp__
37 #define __MSSM_slhahelp_hpp__
38 
39 #include <iostream>
40 #include <map>
41 #include <string>
42 #include <utility>
43 #include <vector>
44 #include <stdio.h>
45 #include <stdlib.h>
46 #include <set>
47 
51 
52 namespace Gambit
53 {
54 
55  namespace slhahelp
56  {
57 
59  void add_MODSEL_disclaimer(SLHAstruct& slha, const str& object);
60 
62  void attempt_to_add_SLHA1_mixing(const str& block, SLHAstruct& slha, const str& type,
63  const SubSpectrum& spec, double tol, str& s1, str& s2, bool pterror);
64 
67 
72  str mass_es_from_gauge_es(str gauge_es, const SubSpectrum& mssm, double tol,
73  str context, bool pterror_only);
75  str mass_es_from_gauge_es(str gauge_es, double & max_mixing,
76  const SubSpectrum& mssm);
78  str mass_es_from_gauge_es(str gauge_es,
79  std::vector<double> & gauge_composition,
80  const SubSpectrum& mssm);
83  str mass_es_from_gauge_es(str gauge_es, double & max_mixing,
84  std::vector<double> & gauge_composition,
85  const SubSpectrum& mssm);
87 
92  str gauge_es_from_mass_es(str mass_es, const SubSpectrum& mssm,
93  double tol, str context, bool pterror_only);
95  str gauge_es_from_mass_es(str mass_es, double & max_mixing,
96  const SubSpectrum& mssm);
99  std::vector<double> & mass_composition,
100  const SubSpectrum& mssm);
103  str gauge_es_from_mass_es(str mass_es, double & max_mixing,
104  std::vector<double> & mass_composition,
105  const SubSpectrum& mssm);
108 
109 
112 
117  str mass_es_closest_to_family(str familystate, const SubSpectrum& mssm,
118  double tol, str context, bool pterror_only);
124  str mass_es_closest_to_family(str familystate,
125  std::vector<double> & gauge_composition,
126  const SubSpectrum& mssm);
128  str mass_es_closest_to_family(str familystate,
129  double & sum_sqr_mix,
130  const SubSpectrum& mssm);
133  str mass_es_closest_to_family(str familystate,
134  std::vector<double> & gauge_composition,
135  std::vector<double> & off_family_mixing,
136  const SubSpectrum& mssm);
138 
143  str family_state_closest_to_mass_es(str mass_es, const SubSpectrum& mssm,
144  double tol, str context, bool pterror_only);
147  str family_state_closest_to_mass_es(str mass_es, std::vector<double> & mass_comp,
148  const SubSpectrum& mssm);
155  str family_state_closest_to_mass_es(str mass_es, double & sum_sqr_mix,
156  const SubSpectrum& mssm);
160  str family_state_closest_to_mass_es(str mass_es, double & sum_sqr_mix,
161  std::vector<double> & mass_comp,
162  const SubSpectrum& mssm);
164 
171  std::vector<double> family_state_mix_matrix(str type /*"~u", "~d" or "~e-"*/, int generation,
172  str & mass_es1, str & mass_es2, const SubSpectrum& mssm,
173  double tol, str context, bool pterror_only);
179  std::vector<double> family_state_mix_matrix(str type /*"~u", "~d" or "~e-"*/, int generation,
180  str & mass_es1, str & mass_es2, const SubSpectrum& mssm);
182 
184 
186  void add_MSSM_spectrum_to_SLHAea(const SubSpectrum& mssmspec, SLHAstruct& slha, int slha_version);
187 
188  } // namespace slhahelp
189 
190 
192  struct mass_es_pseudonyms
193  {
194 
195  public:
196 
198  mass_es_pseudonyms() : filled (false) {}
199 
204  str isdl;
205  str isul;
206  str issl;
207  str iscl;
208  str isb1;
209  str ist1;
210  str isell;
211  str isnel;
212  str ismul;
213  str isnmul;
214  str istau1;
215  str isntaul;
216  str isdr;
217  str isur;
218  str issr;
219  str iscr;
220  str isb2;
221  str ist2;
222  str iselr;
223  str ismur;
224  str istau2;
225  //str iner; uncomment to add right-handed nus
226  //str inmur; uncomment to add right-handed nus
227  //str intaur; uncomment to add right-handed nus
231  str isdlbar;
232  str isulbar;
233  str isslbar;
234  str isclbar;
235  str isb1bar;
236  str ist1bar;
237  str isellbar;
238  str isnelbar;
239  str ismulbar;
240  str isnmulbar;
241  str istau1bar;
242  str isntaulbar;
243  str isdrbar;
244  str isurbar;
245  str issrbar;
246  str iscrbar;
247  str isb2bar;
248  str ist2bar;
249  str iselrbar;
250  str ismurbar;
251  str istau2bar;
252  //str inerbar; uncomment to add right-handed nus
253  //str inmurbar; uncomment to add right-handed nus
254  //str intaurbar; uncomment to add right-handed nus
257 
259  std::map<str,str> gauge_family_eigenstates;
260  std::map<str,str> mass_eigenstates;
261 
263  bool filled;
264 
266  void fill(const SubSpectrum&, double, bool, bool);
267 
269  void refill(const SubSpectrum&, double, bool, bool);
270 
272  void debug_print(const SubSpectrum&);
273 
275  void debug_print_gauge(const SubSpectrum&, str&, str&, double&);
276 
278  void debug_print_family(const SubSpectrum&, str&, str&, double&, double&);
279 
280 
281  private:
282 
285  void fill_mass_es_psn_gauge(str&, str&, str, const SubSpectrum&, double, bool, bool);
286  void fill_mass_es_psn_family(str&, str&, str, const SubSpectrum&, double, bool, bool);
288 
289  };
290 
291 
292 } // namespace gambit
293 
294 #endif
std::vector< double > family_state_mix_matrix(str type, int generation, str &mass_es1, str &mass_es2, const SubSpectrum &mssm, double tol, str context, bool pterror)
Get the family mixing matrix and corresponding mass eigenstates, then check for interfamily mixing...
This class is used to deliver both information defined in the Standard Model (or potentially just QED...
void add_MODSEL_disclaimer(SLHAstruct &slha, const str &object)
Add a disclaimer about the absence of a MODSEL block in a generated SLHAea object.
void attempt_to_add_SLHA1_mixing(const str &block, SLHAstruct &slha, const str &type, const SubSpectrum &spec, double tol, str &s1, str &s2, bool pterror)
Simple helper function for for adding missing SLHA1 2x2 family mixing matrices to an SLHAea object...
str family_state_closest_to_mass_es(str mass_es, double &sum_sq_mix, std::vector< double > &mass_comp, const SubSpectrum &mssm)
returns family state that best matches the given mass_es fills a double with the sum of the square mi...
General small utility classes, typedefs, etc.
void add_MSSM_spectrum_to_SLHAea(const SubSpectrum &mssmspec, SLHAstruct &slha, int slha_version)
Add an entire MSSM spectrum to an SLHAea object.
SLHAea::Coll SLHAstruct
Less confusing name for SLHAea container class.
std::string str
Shorthand for a standard string.
Definition: Analysis.hpp:35
Abstract class for accessing general spectrum information.
str mass_es_closest_to_family(str familystate, const SubSpectrum &mssm)
identify the mass eigenstate corresponding to family state takes string and returns only requested st...
str gauge_es_from_mass_es(str mass_es, double &max_mixing, std::vector< double > &mass_composition, const SubSpectrum &mssm)
identifies gauge_es with largest mass_es content also fills largest max_mixing and full mass_composit...
str mass_es_from_gauge_es(str gauge_es, double &max_mixing, std::vector< double > &gauge_composition, const SubSpectrum &mssm)
indentifies the state with largest gauge_es content also fills largest max_mixing and full gauge_comp...
TODO: see if we can use this one:
Definition: Analysis.hpp:33