THDM.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
9 #include "THDM.h"
10 
11 const std::string THDM::THDMvars[NTHDMvars] = {"logtb","bma","mHh2","mHh2mmA2","mHh2mmHp2","m12_2","bsgamma_theoryerror"};
12 
14 
15  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("logtb", boost::cref(logtb)));
16  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("bma", boost::cref(bma)));
17  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("mHh2", boost::cref(mHh2)));
18  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("mHh2mmA2", boost::cref(mHh2mmA2)));
19  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("mHh2mmHp2", boost::cref(mHh2mmHp2)));
20  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("m12_2", boost::cref(m12_2)));
21  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("bsgamma_theoryerror", boost::cref(bsgamma_theoryerror)));
22 }
23 
25  if (IsModelInitialized()) {
26  if (myTHDMMatching != NULL) delete(myTHDMMatching);
27  }
28 }
29 
31 // Initialization
32 
34 {
35  myTHDMMatching = new THDMMatching(*this);
37  setModelTHDM();
38  return(true);
39 }
40 
41 bool THDM::Init(const std::map<std::string, double>& DPars) {
42  return(StandardModel::Init(DPars));
43 }
44 
46 {
47  if(!StandardModel::PreUpdate()) return (false);
48 
49  return (true);
50 }
51 
52 bool THDM::Update(const std::map<std::string, double>& DPars) {
53 
54  if(!PreUpdate()) return (false);
55 
56  UpdateError = false;
57 
58  for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
59  setParameter(it->first, it->second);
60 
61  if (UpdateError) return (false);
62 
63  if(!PostUpdate()) return (false);
64 
65  return (true);
66 }
67 
69 {
70  if(!StandardModel::PostUpdate()) return (false);
71 
72  /* Necessary for updating StandardModel parameters in StandardModelMatching,
73  * and THDM and THDM-derived parameters in THDMMatching */
74  myTHDMMatching->StandardModelMatching::updateSMParameters();
75 // myTHDMMatching->updateTHDMParameters();
76 
77  return (true);
78 }
79 
80 void THDM::setParameter(const std::string name, const double& value){
81 
82  if(name.compare("logtb") == 0) {
83  logtb = value;
84  tanb = pow(10.,logtb);
85  if(tanb > 0.) {
86  sinb = tanb / sqrt(1. + tanb*tanb);
87  cosb = 1. / sqrt(1. + tanb*tanb);
88  }
89  else {
90  throw std::runtime_error("error in THDM::SetParameter, tanb < 0!");
91  }
92  }
93  else if(name.compare("bma") == 0) {
94  bma = value;
95  sin_ba = sin(bma);
96  }
97  else if(name.compare("mHh2") == 0)
98  mHh2 = value;
99  else if(name.compare("mHh2mmA2") == 0)
100  mHh2mmA2 = value;
101  else if(name.compare("mHh2mmHp2") == 0)
102  mHh2mmHp2 = value;
103  else if(name.compare("m12_2") == 0)
104  m12_2 = value;
105  else if(name.compare("bsgamma_theoryerror") == 0)
106  bsgamma_theoryerror = value;
107  else
108  StandardModel::setParameter(name,value);
109 }
110 
111 bool THDM::CheckParameters(const std::map<std::string, double>& DPars) {
112  for (int i = 0; i < NTHDMvars; i++) {
113  if (DPars.find(THDMvars[i]) == DPars.end()) {
114  std::cout << "missing mandatory THDM parameter " << THDMvars[i] << std::endl;
115  return false;
116  }
117  }
118  return(StandardModel::CheckParameters(DPars));
119 }
120 
122 // Flags
123 
124 bool THDM::setFlagStr(const std::string name, const std::string value)
125 {
126  bool res = false;
127  if(name.compare("modelTypeflag") == 0)
128  {
129  if (checkmodelType(value))
130  {
131  flag_model = value;
132  res = true;
133  }
134  else
135  {
136  throw std::runtime_error("THDM::setFlagStr(): Invalid flag "
137  + name + "=" + value);
138  }
139  }
140  else
141  {
142  res = StandardModel::setFlagStr(name,value);
143  }
144 
145  return(res);
146 }
~THDM()
THDM destructor.
Definition: THDM.cpp:24
double bsgamma_theoryerror
Definition: THDM.h:315
virtual bool PostUpdate()
Definition: THDM.cpp:68
virtual bool PostUpdate()
The post-update method for StandardModel.
bool checkmodelType(const std::string modeltype) const
A method to check if the model type name in string form is valid.
Definition: THDM.h:300
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of StandardModel.
double sin_ba
Definition: THDM.h:315
double mHh2mmA2
Definition: THDM.h:315
double mHh2
Definition: THDM.h:315
complex pow(const complex &z1, const complex &z2)
virtual bool setFlagStr(const std::string name, const std::string value)
Definition: THDM.cpp:124
THDMMatching * myTHDMMatching
Definition: THDM.h:313
double sinb
Definition: THDM.h:315
THDM()
THDM constructor.
Definition: THDM.cpp:13
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:192
virtual bool InitializeModel()
A method to initialize the model.
A model class for the Standard Model.
double mHh2mmHp2
Definition: THDM.h:315
double logtb
Definition: THDM.h:315
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
Definition: Model.h:142
void setModelTHDM()
Definition: Model.h:183
double cosb
Definition: THDM.h:315
bool IsModelInitialized() const
A method to check if the model is initialized.
Definition: Model.h:133
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
Definition: THDM.cpp:111
static const std::string THDMvars[NTHDMvars]
Definition: THDM.h:98
static const int NTHDMvars
Definition: THDM.h:97
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
virtual bool PreUpdate()
The pre-update method for StandardModel.
virtual bool PreUpdate()
Definition: THDM.cpp:45
double tanb
Definition: THDM.h:315
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...
double bma
Definition: THDM.h:315
std::string flag_model
Definition: THDM.h:316
virtual bool InitializeModel()
Definition: THDM.cpp:33
virtual bool Update(const std::map< std::string, double > &DPars)
Definition: THDM.cpp:52
A class for the Wilson coefficients in the THDM.
Definition: THDMMatching.h:24
double m12_2
Definition: THDM.h:315
virtual void setParameter(const std::string, const double &)
Definition: THDM.cpp:80
complex sin(const complex &z)
virtual bool Init(const std::map< std::string, double > &DPars)
Definition: THDM.cpp:41
std::map< std::string, boost::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:200
complex sqrt(const complex &z)