a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
ModelFactory.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2014 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "ModelFactory.h"
9#include "NPSTU.h"
10#include "NPSTUZbbbarLR.h"
11#include "NPEpsilons.h"
12#include "NPEpsilons_pureNP.h"
13#include "NPHiggs.h"
14#include "NPZbbbar.h"
15#include "NPZbbbarLinearized.h"
16#include "NPSMEFTd6.h"
17#include "NPSMEFTd6General.h"
18#include "NPSMEFTd6U2qU1le.h"
19#include "NPSMEFTd6U2.h"
20#include "NPSMEFTd6U3.h"
21#include "NPSMEFTd6MFV.h"
22
23#include "NPd6SILH.h"
24
25#include "NPSMEFT6dtopquark.h"
26#include "SigmaBR.h"
27#include "HiggsKigen.h"
28#include "HiggsChiral.h"
29#include "GeneralSUSY.h"
30#include "SUSYMassInsertion.h"
31#include "SUSY.h"
32#include "THDM.h"
35#include "RealWeakEFTLFV.h"
36#include "RealWeakEFTCC.h"
37#include "LoopMediators.h"
38#include "NPDF2.h"
39#include "CMFV.h"
40#include "GeorgiMachacek.h"
42/* BEGIN: REMOVE FROM THE PACKAGE */
43#include "pMSSM.h"
44#include "MFV.h"
45#include "NPSTUVWXY.h"
46#include "GeneralTHDM.h"
47#include "GeneralTHDMZ2.h"
48#include "THDMW.h"
49/* END: REMOVE FROM THE PACKAGE */
50#include <boost/bind/bind.hpp>
51using namespace boost::placeholders;
52
54{
55 modelFactory["StandardModel"] = boost::factory<StandardModel*>();
56 modelFactory["NPSTU"] = boost::factory<NPSTU*>();
57 modelFactory["NPSTUZbbbarLR"] = boost::factory<NPSTUZbbbarLR*>();
58 modelFactory["NPEpsilons"] = boost::factory<NPEpsilons*>();
59 modelFactory["NPEpsilons_pureNP"] = boost::factory<NPEpsilons_pureNP*>();
60 modelFactory["NPHiggs"] = boost::factory<NPHiggs*>();
61 modelFactory["NPZbbbar"] = bind(boost::factory<NPZbbbar*>(), false);
62 modelFactory["NPZbbbarLR"] = bind(boost::factory<NPZbbbar*>(), true);
63 modelFactory["NPZbbbarLinearized"] = bind(boost::factory<NPZbbbarLinearized*>(), false);
64 modelFactory["NPZbbbarLinearizedLR"] = bind(boost::factory<NPZbbbarLinearized*>(), true);
65 modelFactory["NPSMEFTd6"] = bind(boost::factory<NPSMEFTd6*>(), false, false);
66 modelFactory["NPSMEFTd6General"] = boost::factory<NPSMEFTd6General*>();
67 modelFactory["NPSMEFTd6U2qU1le"] = boost::factory<NPSMEFTd6U2qU1le*>();
68 modelFactory["NPSMEFTd6U2"] = boost::factory<NPSMEFTd6U2*>();
69 modelFactory["NPSMEFTd6U3"] = boost::factory<NPSMEFTd6U3*>();
70 modelFactory["NPSMEFTd6MFV"] = boost::factory<NPSMEFTd6MFV*>();
71
72 modelFactory["NPd6SILH"] = boost::factory<NPd6SILH*>();
73
74 modelFactory["NPSMEFT6dtopquark"] = boost::factory<NPSMEFT6dtopquark*>();
75
76 //modelFactory["NPSMEFT6dtopquark"] = bind(boost::factory<NPSMEFT6dtopquark*>(), false, false);
77 modelFactory["SigmaBR"] = boost::factory<SigmaBR*>();
78 modelFactory["NPSMEFTd6_LFU_QFU"] = bind(boost::factory<NPSMEFTd6*>(), true, true);
79 modelFactory["HiggsKigen"] = boost::factory<HiggsKigen*>();
80 modelFactory["HiggsChiral"] = boost::factory<HiggsChiral*>();
81 modelFactory["NPDF2"] = boost::factory<NPDF2*>();
82 modelFactory["CMFV"] = boost::factory<CMFV*>();
83 modelFactory["FlavourWilsonCoefficient"] = boost::factory<FlavourWilsonCoefficient*>();
84 modelFactory["FlavourWilsonCoefficient_DF2"] = boost::factory<FlavourWilsonCoefficient_DF2*>();
85 modelFactory["RealWeakEFTLFV"] = boost::factory<RealWeakEFTLFV*>();
86 modelFactory["RealWeakEFTCC"] = bind(boost::factory<RealWeakEFTCC*>(), 0);
87 modelFactory["RealWeakEFTCCPM"] = bind(boost::factory<RealWeakEFTCC*>(), 1);
88 modelFactory["LoopMediators"] = boost::factory<LoopMediators*>();
89 modelFactory["SUSYMassInsertion"] = boost::factory<SUSYMassInsertion*>();
90 modelFactory["THDM"] = boost::factory<THDM*>();
91 modelFactory["GeneralSUSY"] = boost::factory<GeneralSUSY*>();
92 modelFactory["GeorgiMachacek"] = boost::factory<GeorgiMachacek*>();
93 modelFactory["LeftRightSymmetricModel"] = boost::factory<LeftRightSymmetricModel*>();
94/* BEGIN: REMOVE FROM THE PACKAGE */
95 modelFactory["MFV"] = boost::factory<MFV*>();
96 modelFactory["pMSSM"] = boost::factory<pMSSM*>();
97 modelFactory["NPSTUVWXY"] = boost::factory<NPSTUVWXY*>();
98 modelFactory["GeneralTHDM"] = boost::factory<GeneralTHDM*>();
99 modelFactory["GeneralTHDMZ2"] = boost::factory<GeneralTHDMZ2*>();
100 modelFactory["THDMW"] = boost::factory<THDMW*>();
101/* END: REMOVE FROM THE PACKAGE */
102}
103
104void ModelFactory::addModelToFactory(const std::string name, boost::function<StandardModel*() > funct)
105{
106 modelFactory[name] = funct;
107}
108
110{
111 if (modelFactory.find(name) == modelFactory.end())
112 throw std::runtime_error("ERROR: Wrong model " + name + " passed to ModelFactory.\n");
113 return (modelFactory[name]());
114}
void addModelToFactory(const std::string name, boost::function< StandardModel *() >)
std::map< std::string, boost::function< StandardModel *()> > modelFactory
Definition: ModelFactory.h:35
StandardModel * CreateModel(const std::string &ModelName)
A model class for the Standard Model.