ModelFactory.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 HEPfit Collaboration
3  * All rights reserved.
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 "NPEffectiveBS.h"
17 #include "NPEffectiveGIMR.h"
18 #include "HiggsKvKf.h"
19 #include "HiggsKvKfgen.h"
20 #include "HiggsKvgenKf.h"
21 #include "GeneralSUSY.h"
22 #include "SUSYMassInsertion.h"
23 #include "SUSY.h"
24 #include "THDM.h"
26 #include <boost/bind.hpp>
27 
29 {
30  modelFactory["StandardModel"] = boost::factory<StandardModel*>();
31  modelFactory["NPSTU"] = boost::factory<NPSTU*>();
32  modelFactory["NPSTUZbbbarLR"] = boost::factory<NPSTUZbbbarLR*>();
33  modelFactory["NPEpsilons"] = boost::factory<NPEpsilons*>();
34  modelFactory["NPEpsilons_pureNP"] = boost::factory<NPEpsilons_pureNP*>();
35  modelFactory["NPHiggs"] = boost::factory<NPHiggs*>();
36  modelFactory["NPZbbbar"] = boost::bind(boost::factory<NPZbbbar*>(), false);
37  modelFactory["NPZbbbarLR"] = boost::bind(boost::factory<NPZbbbar*>(), true);
38  modelFactory["NPZbbbarLinearized"] = boost::bind(boost::factory<NPZbbbarLinearized*>(), false);
39  modelFactory["NPZbbbarLinearizedLR"] = boost::bind(boost::factory<NPZbbbarLinearized*>(), true);
40  modelFactory["NPEffectiveBS"] = boost::bind(boost::factory<NPEffectiveBS*>(), false, false);
41  modelFactory["NPEffectiveBS_LFU"] = boost::bind(boost::factory<NPEffectiveBS*>(), true, false);
42  modelFactory["NPEffectiveBS_QFU"] = boost::bind(boost::factory<NPEffectiveBS*>(), false, true);
43  modelFactory["NPEffectiveBS_LFU_QFU"] = boost::bind(boost::factory<NPEffectiveBS*>(), true, true);
44  modelFactory["NPEffectiveGIMR"] = boost::bind(boost::factory<NPEffectiveGIMR*>(), false, false);
45  //modelFactory["NPEffectiveGIMR_LFU"] = boost::bind(boost::factory<NPEffectiveGIMR*>(), true, false);
46  //modelFactory["NPEffectiveGIMR_QFU"] = boost::bind(boost::factory<NPEffectiveGIMR*>(), false, true);
47  modelFactory["NPEffectiveGIMR_LFU_QFU"] = boost::bind(boost::factory<NPEffectiveGIMR*>(), true, true);
48  modelFactory["HiggsKvKf"] = boost::factory<HiggsKvKf*>();
49  modelFactory["HiggsKvKfgen"] = boost::factory<HiggsKvKfgen*>();
50  modelFactory["HiggsKvgenKf"] = boost::factory<HiggsKvgenKf*>();
51  modelFactory["GeneralSUSY"] = boost::factory<GeneralSUSY*>();
52  modelFactory["SUSYMassInsertion"] = boost::factory<SUSYMassInsertion*>();
53  modelFactory["THDM"] = boost::factory<THDM*>();
54  modelFactory["FlavourWilsonCoefficient"] = boost::factory<FlavourWilsonCoefficient*>();
55 }
56 
57 void ModelFactory::addModelToFactory(const std::string name, boost::function<StandardModel*() > funct)
58 {
59  modelFactory[name] = funct;
60 }
61 
62 StandardModel* ModelFactory::CreateModel(const std::string& name)
63 {
64  if (modelFactory.find(name) == modelFactory.end())
65  throw std::runtime_error("ERROR: Wrong model " + name + " passed to ModelFactory.\n");
66  return (modelFactory[name]());
67 }
StandardModel * CreateModel(const std::string &ModelName)
A model class for the Standard Model.
std::map< std::string, boost::function< StandardModel *()> > modelFactory
Definition: ModelFactory.h:35
void addModelToFactory(const std::string name, boost::function< StandardModel *() >)