a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
THDM.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "THDM.h"
9 #include "THDMcache.h"
10 
11 std::string THDM::THDMvars[NTHDMvars] = {"logtb","bma",/*"mHh1","mA1","mHp1",*/"mHh2","mA2","mHp2","m12_2",
12  "BDtaunu_SM","BDtaunu_A","BDtaunu_B","BDstartaunu_SM","BDstartaunu_A","BDstartaunu_B",
13  "bsgamma_theoryerror","Q_THDM","Rpeps","NLOuniscale"};
14 
15 THDM::THDM() : StandardModel(), THDMM(*this) {
17  ModelParamMap.insert(std::make_pair("logtb", std::cref(logtb)));
18  ModelParamMap.insert(std::make_pair("bma", std::cref(bma)));
19  ModelParamMap.insert(std::make_pair("mHh1", std::cref(mHh1)));
20  ModelParamMap.insert(std::make_pair("mA1", std::cref(mA1)));
21  ModelParamMap.insert(std::make_pair("mHp1", std::cref(mHp1)));
22  ModelParamMap.insert(std::make_pair("mHh2", std::cref(mHh2)));
23  ModelParamMap.insert(std::make_pair("mA2", std::cref(mA2)));
24  ModelParamMap.insert(std::make_pair("mHp2", std::cref(mHp2)));
25  ModelParamMap.insert(std::make_pair("m12_2", std::cref(m12_2)));
26  ModelParamMap.insert(std::make_pair("BDtaunu_SM", std::cref(BDtaunu_SM)));
27  ModelParamMap.insert(std::make_pair("BDtaunu_A", std::cref(BDtaunu_A)));
28  ModelParamMap.insert(std::make_pair("BDtaunu_B", std::cref(BDtaunu_B)));
29  ModelParamMap.insert(std::make_pair("BDstartaunu_SM", std::cref(BDstartaunu_SM)));
30  ModelParamMap.insert(std::make_pair("BDstartaunu_A", std::cref(BDstartaunu_A)));
31  ModelParamMap.insert(std::make_pair("BDstartaunu_B", std::cref(BDstartaunu_B)));
32  ModelParamMap.insert(std::make_pair("bsgamma_theoryerror", std::cref(bsgamma_theoryerror)));
33  ModelParamMap.insert(std::make_pair("Q_THDM", std::cref(Q_THDM)));
34  ModelParamMap.insert(std::make_pair("Rpeps", std::cref(Rpeps)));
35  ModelParamMap.insert(std::make_pair("NLOuniscale", std::cref(NLOuniscale)));
36  flag_use_sq_masses=true;
37 }
38 
40  if (IsModelInitialized()) {
41  if (myTHDMcache != NULL) delete(myTHDMcache);
42  }
43 }
44 
46 // Initialization
47 
49 {
50  myTHDMcache = new THDMcache(*this);
52  setModelTHDM();
53  return(true);
54 }
55 
56 bool THDM::Init(const std::map<std::string, double>& DPars) {
57  return(StandardModel::Init(DPars));
58 }
59 
61 {
62  if(!StandardModel::PreUpdate()) return (false);
63 
64  return (true);
65 }
66 
67 bool THDM::Update(const std::map<std::string, double>& DPars) {
68 
69  if(!PreUpdate()) return (false);
70 
71  UpdateError = false;
72 
73  for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
74  setParameter(it->first, it->second);
75 
76  if (UpdateError) return (false);
77 
78  if(!PostUpdate()) return (false);
79 
80  return (true);
81 }
82 
84 {
85  if(!StandardModel::PostUpdate()) return (false);
86 
88 
89  return (true);
90 }
91 
92 void THDM::setParameter(const std::string name, const double& value){
93 
94  if(name.compare("logtb") == 0) {
95  logtb = value;
96  tanb = pow(10.,logtb);
97  if(tanb > 0.) {
98  sinb = tanb / sqrt(1. + tanb*tanb);
99  cosb = 1. / sqrt(1. + tanb*tanb);
100  }
101  else {
102  throw std::runtime_error("error in THDM::SetParameter, tanb < 0!");
103  }
104  }
105  else if(name.compare("bma") == 0) {
106  bma = value;
107  sin_ba = sin(bma);
108  }
109  else if(name.compare("mHh1") == 0 && !flag_use_sq_masses)
110  mHh1 = value;
111  else if(name.compare("mA1") == 0 && !flag_use_sq_masses)
112  mA1 = value;
113  else if(name.compare("mHp1") == 0 && !flag_use_sq_masses)
114  mHp1 = value;
115  else if(name.compare("mHh2") == 0 && flag_use_sq_masses)
116  mHh2 = value;
117  else if(name.compare("mA2") == 0 && flag_use_sq_masses)
118  mA2 = value;
119  else if(name.compare("mHp2") == 0 && flag_use_sq_masses)
120  mHp2 = value;
121  else if(name.compare("m12_2") == 0)
122  m12_2 = value;
123  else if(name.compare("BDtaunu_SM") == 0)
124  BDtaunu_SM = value;
125  else if(name.compare("BDtaunu_A") == 0)
126  BDtaunu_A = value;
127  else if(name.compare("BDtaunu_B") == 0)
128  BDtaunu_B = value;
129  else if(name.compare("BDstartaunu_SM") == 0)
130  BDstartaunu_SM = value;
131  else if(name.compare("BDstartaunu_A") == 0)
132  BDstartaunu_A = value;
133  else if(name.compare("BDstartaunu_B") == 0)
134  BDstartaunu_B = value;
135  else if(name.compare("bsgamma_theoryerror") == 0)
136  bsgamma_theoryerror = value;
137  else if(name.compare("Q_THDM") == 0)
138  Q_THDM = value;
139  else if(name.compare("Rpeps") == 0)
140  Rpeps = value;
141  else if(name.compare("NLOuniscale") == 0)
142  NLOuniscale = value;
143  else
145 }
146 
147 bool THDM::CheckParameters(const std::map<std::string, double>& DPars) {
148  for (int i = 0; i < NTHDMvars; i++) {
149  if (DPars.find(THDMvars[i]) == DPars.end()) {
150  std::cout << "ERROR: missing mandatory THDM parameter " << THDMvars[i] << std::endl;
153  }
154  }
155  return(StandardModel::CheckParameters(DPars));
156 }
157 
159 // Flags
160 
161 bool THDM::setFlagStr(const std::string name, const std::string value)
162 {
163  bool res = false;
164  if(name.compare("modelTypeflag") == 0)
165  {
166  if (checkmodelType(value))
167  {
168  flag_model = value;
169  res = true;
170  }
171  else
172  {
173  throw std::runtime_error("THDM::setFlagStr(): Invalid flag "
174  + name + "=" + value);
175  }
176  }
177  else if(name.compare("RGEorder") == 0) {
178  if (checkRGEorder(value))
179  {
180  flag_RGEorder = value;
181  res = true;
182  }
183  else
184  {
185  throw std::runtime_error("THDM::setFlagStr(): Invalid flag "
186  + name + "=" + value);
187  }
188  }
189  else
190  {
191  res = StandardModel::setFlagStr(name,value);
192  }
193 
194  return(res);
195 }
196 
197 bool THDM::setFlag(const std::string name, const bool value)
198 {
199  bool res = false;
200  if(name.compare("use_sq_masses") == 0) {
201  flag_use_sq_masses = value;
202  res = true;
203  if (!flag_use_sq_masses) {
204  THDMvars[std::distance(THDMvars,std::find(THDMvars,THDMvars+NTHDMvars,"mHh2"))] = "mHh1";
205  THDMvars[std::distance(THDMvars,std::find(THDMvars,THDMvars+NTHDMvars,"mA2"))] = "mA1";
206  THDMvars[std::distance(THDMvars,std::find(THDMvars,THDMvars+NTHDMvars,"mHp2"))] = "mHp1";
207 
208  ModelParamMap.insert(std::make_pair("mHh1", std::cref(mHh1)));
209  ModelParamMap.insert(std::make_pair("mA1", std::cref(mA1)));
210  ModelParamMap.insert(std::make_pair("mHp1", std::cref(mHp1)));
211  }
212  }
213  else if(name.compare("wavefunctionrenormalization") == 0) {
214  flag_wfr = value;
215  res = true;
216  }
217  else
218  res = StandardModel::setFlag(name,value);
219 
220  return(res);
221 }
THDM::flag_use_sq_masses
bool flag_use_sq_masses
Definition: THDM.h:626
THDM::THDM
THDM()
THDM constructor.
Definition: THDM.cpp:15
StandardModel::setParameter
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
Definition: StandardModel.cpp:231
THDM::BDstartaunu_SM
double BDstartaunu_SM
Definition: THDM.h:624
Model::setModelTHDM
void setModelTHDM()
Definition: Model.h:186
THDM::m12_2
double m12_2
Definition: THDM.h:622
THDM::BDstartaunu_A
double BDstartaunu_A
Definition: THDM.h:624
THDM::mA1
double mA1
Definition: THDM.h:622
THDMcache.h
THDM::checkRGEorder
bool checkRGEorder(const std::string RGEorder) const
A method to check if the RGE order name in string form is valid.
Definition: THDM.h:606
THDM::mHh2
double mHh2
Definition: THDM.h:622
gslpp::sin
complex sin(const complex &z)
Definition: gslpp_complex.cpp:420
Matching::getObj
T & getObj()
Definition: Matching.h:14
THDM::sin_ba
double sin_ba
Definition: THDM.h:622
THDM::mHh1
double mHh1
Definition: THDM.h:622
Model::addMissingModelParameter
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:232
THDM::checkmodelType
bool checkmodelType(const std::string modeltype) const
A method to check if the model type name in string form is valid.
Definition: THDM.h:590
StandardModel::CheckParameters
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for StandardModel have been provided in model initi...
Definition: StandardModel.cpp:313
Matching::setObj
void setObj(T &obji)
Definition: Matching.h:15
THDMcache
A class for the caching of some THDM objects.
Definition: THDMcache.h:29
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:474
Model::UpdateError
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:254
StandardModel::SMM
Matching< StandardModelMatching, StandardModel > SMM
An object of type Matching.
Definition: StandardModel.h:2506
THDM::flag_RGEorder
std::string flag_RGEorder
Definition: THDM.h:625
THDM::Q_THDM
double Q_THDM
Definition: THDM.h:622
StandardModel::setFlag
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
Definition: StandardModel.cpp:378
Model::ModelParamMap
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:262
THDM::setFlag
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of THDM.
Definition: THDM.cpp:197
THDM::mA2
double mA2
Definition: THDM.h:622
THDM::myTHDMcache
THDMcache * myTHDMcache
An object of type THDMCache.
Definition: THDM.h:620
THDM::InitializeModel
virtual bool InitializeModel()
A method to initialize the model.
Definition: THDM.cpp:48
THDM::mHp2
double mHp2
Definition: THDM.h:622
StandardModel::Init
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
Definition: StandardModel.cpp:159
StandardModelMatching
A class for the matching in the Standard Model.
Definition: StandardModelMatching.h:26
THDM::Rpeps
double Rpeps
Definition: THDM.h:622
THDM::BDtaunu_B
double BDtaunu_B
Definition: THDM.h:624
THDM::Init
virtual bool Init(const std::map< std::string, double > &DPars)
Initializes the THDM parameters found in the argument.
Definition: THDM.cpp:56
THDM::THDMvars
static std::string THDMvars[NTHDMvars]
Definition: THDM.h:124
StandardModel::PreUpdate
virtual bool PreUpdate()
The pre-update method for StandardModel.
Definition: StandardModel.cpp:172
THDM::PostUpdate
virtual bool PostUpdate()
The post-update method for THDM.
Definition: THDM.cpp:83
gslpp::pow
complex pow(const complex &z1, const complex &z2)
Definition: gslpp_complex.cpp:395
Model::raiseMissingModelParameterCount
void raiseMissingModelParameterCount()
Definition: Model.h:242
gslpp::sqrt
complex sqrt(const complex &z)
Definition: gslpp_complex.cpp:385
THDM::BDtaunu_A
double BDtaunu_A
Definition: THDM.h:624
THDM::flag_model
std::string flag_model
Definition: THDM.h:625
THDM::~THDM
~THDM()
THDM destructor.
Definition: THDM.cpp:39
StandardModel::PostUpdate
virtual bool PostUpdate()
The post-update method for StandardModel.
Definition: StandardModel.cpp:199
THDM::mHp1
double mHp1
Definition: THDM.h:622
THDM::NTHDMvars
static const int NTHDMvars
Definition: THDM.h:123
THDM::bsgamma_theoryerror
double bsgamma_theoryerror
Definition: THDM.h:622
StandardModel::setFlagStr
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of StandardModel.
Definition: StandardModel.cpp:418
Model::IsModelInitialized
bool IsModelInitialized() const
A method to check if the model is initialized.
Definition: Model.h:136
THDM::tanb
double tanb
Definition: THDM.h:622
THDM::setParameter
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of THDM.
Definition: THDM.cpp:92
THDM::mHl2
double mHl2
Definition: THDM.h:623
THDMcache::updateCache
double updateCache()
THDM::setFlagStr
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a string flag of THDM.
Definition: THDM.cpp:161
StandardModel::InitializeModel
virtual bool InitializeModel()
A method to initialize the model.
Definition: StandardModel.cpp:140
THDM::CheckParameters
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for THDM have been provided in model initialization...
Definition: THDM.cpp:147
THDM::BDstartaunu_B
double BDstartaunu_B
Definition: THDM.h:624
THDM::NLOuniscale
double NLOuniscale
Definition: THDM.h:622
THDM::bma
double bma
Definition: THDM.h:622
THDM::PreUpdate
virtual bool PreUpdate()
The pre-update method for THDM.
Definition: THDM.cpp:60
THDM::cosb
double cosb
Definition: THDM.h:622
THDM::BDtaunu_SM
double BDtaunu_SM
Definition: THDM.h:624
THDM::flag_wfr
bool flag_wfr
Definition: THDM.h:626
Model::name
std::string name
The name of the model.
Definition: Model.h:267
THDM::sinb
double sinb
Definition: THDM.h:622
THDM.h
THDM::THDMM
Matching< THDMMatching, THDM > THDMM
An object of type THDMMatching.
Definition: THDM.h:616
THDM::Update
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for THDM.
Definition: THDM.cpp:67
Model::setModelInitialized
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
Definition: Model.h:145
THDM::logtb
double logtb
Definition: THDM.h:622