49#include <boost/bind/bind.hpp>
50using namespace boost::placeholders;
54 modelFactory[
"StandardModel"] = boost::factory<StandardModel*>();
56 modelFactory[
"NPSTUZbbbarLR"] = boost::factory<NPSTUZbbbarLR*>();
57 modelFactory[
"NPEpsilons"] = boost::factory<NPEpsilons*>();
58 modelFactory[
"NPEpsilons_pureNP"] = boost::factory<NPEpsilons_pureNP*>();
60 modelFactory[
"NPZbbbar"] = bind(boost::factory<NPZbbbar*>(),
false);
61 modelFactory[
"NPZbbbarLR"] = bind(boost::factory<NPZbbbar*>(),
true);
62 modelFactory[
"NPZbbbarLinearized"] = bind(boost::factory<NPZbbbarLinearized*>(),
false);
63 modelFactory[
"NPZbbbarLinearizedLR"] = bind(boost::factory<NPZbbbarLinearized*>(),
true);
64 modelFactory[
"NPSMEFTd6"] = bind(boost::factory<NPSMEFTd6*>(),
false,
false);
65 modelFactory[
"NPSMEFTd6General"] = boost::factory<NPSMEFTd6General*>();
66 modelFactory[
"NPSMEFTd6U2qU1le"] = boost::factory<NPSMEFTd6U2qU1le*>();
67 modelFactory[
"NPSMEFTd6U2"] = boost::factory<NPSMEFTd6U2*>();
68 modelFactory[
"NPSMEFTd6U3"] = boost::factory<NPSMEFTd6U3*>();
72 modelFactory[
"NPSMEFT6dtopquark"] = boost::factory<NPSMEFT6dtopquark*>();
76 modelFactory[
"NPSMEFTd6_LFU_QFU"] = bind(boost::factory<NPSMEFTd6*>(),
true,
true);
77 modelFactory[
"HiggsKigen"] = boost::factory<HiggsKigen*>();
78 modelFactory[
"HiggsChiral"] = boost::factory<HiggsChiral*>();
81 modelFactory[
"FlavourWilsonCoefficient"] = boost::factory<FlavourWilsonCoefficient*>();
82 modelFactory[
"FlavourWilsonCoefficient_DF2"] = boost::factory<FlavourWilsonCoefficient_DF2*>();
83 modelFactory[
"RealWeakEFTLFV"] = boost::factory<RealWeakEFTLFV*>();
84 modelFactory[
"RealWeakEFTCC"] = bind(boost::factory<RealWeakEFTCC*>(), 0);
85 modelFactory[
"RealWeakEFTCCPM"] = bind(boost::factory<RealWeakEFTCC*>(), 1);
86 modelFactory[
"LoopMediators"] = boost::factory<LoopMediators*>();
87 modelFactory[
"SUSYMassInsertion"] = boost::factory<SUSYMassInsertion*>();
89 modelFactory[
"GeneralSUSY"] = boost::factory<GeneralSUSY*>();
90 modelFactory[
"GeorgiMachacek"] = boost::factory<GeorgiMachacek*>();
91 modelFactory[
"LeftRightSymmetricModel"] = boost::factory<LeftRightSymmetricModel*>();
95 modelFactory[
"NPSTUVWXY"] = boost::factory<NPSTUVWXY*>();
96 modelFactory[
"GeneralTHDM"] = boost::factory<GeneralTHDM*>();
97 modelFactory[
"GeneralTHDMZ2"] = boost::factory<GeneralTHDMZ2*>();
110 throw std::runtime_error(
"ERROR: Wrong model " + name +
" passed to ModelFactory.\n");
void addModelToFactory(const std::string name, boost::function< StandardModel *() >)
std::map< std::string, boost::function< StandardModel *()> > modelFactory
StandardModel * CreateModel(const std::string &ModelName)
A model class for the Standard Model.