gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
model_files_and_boxes.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
23 
24 #ifndef MODELFILES_HPP
25 #define MODELFILES_HPP
26 
27 #include "SLHAea/slhaea.h"
28 
29 // This is a horrible hack to suppress the millions of warnings that get generated by flexiblesusy.
30 // It basically kills all warnings from the entire remainder of this header.
31 #pragma GCC system_header
32 #include "flexiblesusy/src/lowe.h" // From softsusy; used by flexiblesusy
33 
34 // Abstraction of algorithm name. For now everything uses 'Two_scale'.
35 #define ALGORITHM1 Two_scale
36 // Need a lowercase version for certain file names
37 #define ALGORITHM1l two_scale
38 
39 
40 // Make flexiblesusy interface struct for MSSMSpec template class
41 // We need this so that we can match spectrum objects with different
42 // routines for translating them into SLHAea objects, while still
43 // creating the appropriate overloads for the Spectrum class
44 // 'getSLHAea' virtual function.
45 //
46 // The interface class here is specific to flexiblesusy, but in order to work, it just
47 // need to typedef a Model object with all the right MSSMSpec getter names (like before).
48 // If extra objects are needed to do this (as in the
49 // flexiblesusy case), they will need to be carried around by an instance of this interface
50 // struct, which should be used to construct the MSSMSpec.
51 
52 #define MAKE_INTERFACE \
53  namespace Gambit { \
54  namespace SpecBit { \
55  using namespace flexiblesusy; \
56  \
57  template <class algorithm_type> \
58  class CAT_3(MODELNAME,_,interface) \
59  { \
60  public: \
61  /* Typedefs for accessing FlexibleSUSY classes in a generic way */ \
62  typedef CAT_3(MODELNAME,_,input_parameters) InputParameters; \
63  typedef CAT_3(MODELNAME,_,spectrum_generator<algorithm_type>) SpectrumGenerator; \
64  typedef MODELNAME<algorithm_type> BaseModel; \
65  typedef CAT_3(MODELNAME,_,slha<BaseModel>) Model; \
66  typedef CAT_3(MODELNAME,_,physical) Physical; \
67  typedef CAT_3(MODELNAME,_,slha_io) SlhaIo; \
68  typedef CAT_3(MODELNAME,_,scales) Scales; \
69  static const unsigned number_of_particles = CAT_3(MODELNAME,_,info)::NUMBER_OF_PARTICLES; \
70  typedef flexiblesusy::Spectrum_generator_problems Problems; \
71  \
72  /* Of the above, only the Model typedef is required by the MSSMSpec
73  template. The rest are for internal details, and for use in SpecBit */ \
74  /* Generic name for internal model class */ \
75  \
76  /* Internal data members for keeping track of objects needed/created by FlexibleSUSY */ \
77  Model model; /* FlexibleSUSY model */ \
78  softsusy::QedQcd oneset; /* SoftSUSY format Standard Model parameters */ \
79  InputParameters input; /* Parameters needed to compute points of Model */ \
80  Problems problems; /* FlexibleSUSY problems report manager */ \
81  Scales scales; /*scales at shich coundary conditions are applied*/ \
82  static const int index_offset = -1; /* indices start from 0 (1 less than Gambit convention) */ \
83  \
84  /* The rest is also internal data only. For now anyway, might need some of it
85  accessible at some point, like the input parameters, could add more
86  virtual functions for that */ \
87  \
88  /* Constructor */ \
89  CAT_3(MODELNAME,_,interface) (const SpectrumGenerator& spectrum_generator, const softsusy::QedQcd& onesetIN, const InputParameters& inputIN) \
90  : model(spectrum_generator.get_model()) \
91  , oneset(onesetIN) \
92  , input(inputIN) \
93  , problems() \
94  , scales() \
95  { \
96  scales.HighScale = spectrum_generator.get_high_scale(); \
97  scales.SUSYScale = spectrum_generator.get_susy_scale(); \
98  scales.LowScale = spectrum_generator.get_low_scale(); \
99  } \
100  \
101  }; \
102  /* I think that there is a need to ensure that these templates actually get
103  instantiated; was getting weird segfaults accessing the (virtual) getters
104  via a Spectrum*.
105 
106  Should add instantiations for each algorithm we want to use
107  (just one for now) */ \
108  /* Actually maybe we don't need these (and they cause duplicate symbol errors in clang */ \
109  /*template class CAT_3(MODELNAME,_,interface)<ALGORITHM1>; */ \
110  } \
111  }
112 
113 
118 #define MODELNAME CMSSM
119 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary CMSSM model headers
120 #undef MODELNAME
121 
123 #define MODELNAME MSSM
124 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary MSSM model headers etc.
125 #undef MODELNAME
126 
127 #define MODELNAME MSSMatMGUT
128 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary MSSMatMGUT model headers etc.
129 #undef MODELNAME
130 
133 #define MODELNAME MSSM_mAmu
134 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary MSSMatMGUT model headers etc.
135 #undef MODELNAME
136 
137 #define MODELNAME MSSMatMSUSY_mAmu
138 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary MSSMatMGUT model headers etc.
139 #undef MODELNAME
140 
141 #define MODELNAME MSSMatMGUT_mAmu
142 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary MSSMatMGUT model headers etc.
143 #undef MODELNAME
144 
146 #define MODELNAME MSSMEFTHiggs
147 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp"// Automatically includes necessary MSSMEFTHiggs model headers etc.
148 #undef MODELNAME
149 
151 #define MODELNAME MSSMEFTHiggs_mAmu
152 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp"// Automatically includes necessary MSSMEFTHiggs_mAmu model headers etc.
153 #undef MODELNAME
154 
156 #define MODELNAME MSSMatMSUSYEFTHiggs_mAmu
157 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp"// Automatically includes necessary MSSMatMSUSYEFTHiggs_mAmu model headers etc.
158 #undef MODELNAME
159 
161 #define MODELNAME MSSMatMGUTEFTHiggs
162 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp"// Automatically includes necessary MSSMatMGUTEFTHiggs model headers etc.
163 #undef MODELNAME
164 
166 #define MODELNAME MSSMatMGUTEFTHiggs_mAmu
167 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp"// Automatically includes necessary MSSMatMGUTEFTHiggs_mAmu model headers etc.
168 #undef MODELNAME
169 
171 #define MODELNAME ScalarSingletDM_Z2
172 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary ScalarSingletDM_Z2 model headers etc.
173 #undef MODELNAME
174 
175 #define MODELNAME ScalarSingletDM_Z3
176 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary ScalarSingletDM_Z3 model headers etc.
177 #undef MODELNAME
178 
179 #define MODELNAME MDM
180 #include "gambit/SpecBit/flexiblesusy_include_automater.hpp" // Automatically includes necessary MDM model headers etc.
181 #undef MODELNAME
182 
183 #endif
This file is part of a trick to perform tedious includes of FlexibleSUSY headers required to use part...