a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
LoopMediators.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "LoopMediators.h"
9 
10 const std::string LoopMediators::LoopMediatorsvars[NLoopMediatorsvars] = {"GammaL", "GammaR", "GammamuL", "GammamuR", "lambdaE", "mphi", "yD", "yE", "charge", "WCscale"};
11 
12 LoopMediators::LoopMediators() : StandardModel(), LoopMediatorsM(*this)
13 {
14 
15  SMM.setObj((StandardModelMatching&) LoopMediatorsM.getObj());
16  ModelParamMap.insert(std::make_pair("GammaL", std::cref(GammaL)));
17  ModelParamMap.insert(std::make_pair("GammaR", std::cref(GammaR)));
18  ModelParamMap.insert(std::make_pair("GammamuL", std::cref(GammamuL)));
19  ModelParamMap.insert(std::make_pair("GammamuR", std::cref(GammamuR)));
20  ModelParamMap.insert(std::make_pair("lambdaE", std::cref(lambdaE)));
21  ModelParamMap.insert(std::make_pair("mphi", std::cref(mphi)));
22  ModelParamMap.insert(std::make_pair("yD", std::cref(yD)));
23  ModelParamMap.insert(std::make_pair("yE", std::cref(yE)));
24  ModelParamMap.insert(std::make_pair("charge", std::cref(charge)));
25 
26  ModelParamMap.insert(std::make_pair("WCscale", std::cref(WCscale)));
27 }
28 
30 {
31  if (IsModelInitialized()) {
32  }
33 }
34 
36 // Initialization
37 
39 {
41  return(true);
42 }
43 
44 bool LoopMediators::Init(const std::map<std::string, double>& DPars)
45 {
46  return(StandardModel::Init(DPars));
47 }
48 
50 {
51  if(!StandardModel::PreUpdate()) return (false);
52 
53  return (true);
54 }
55 
56 bool LoopMediators::Update(const std::map<std::string, double>& DPars)
57 {
58 
59  if(!PreUpdate()) return (false);
60 
61  UpdateError = false;
62 
63  for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
64  setParameter(it->first, it->second);
65 
66  if (UpdateError) return (false);
67 
68  if(!PostUpdate()) return (false);
69 
70  return (true);
71 }
72 
74 {
75  if(!StandardModel::PostUpdate()) return (false);
76 
77  double GammaL2 = GammaL*GammaL;
78  double GammaR2 = GammaR*GammaR;
79  double GammaLR = GammaL*GammaR;
80  double GammamuL2 = GammamuL * GammamuL;
81  double GammamuR2 = GammamuR * GammamuR;
82  double mphi2 = mphi * mphi;
83  double qphi = -charge;
84  double qpsi = charge - 1.;
85 
86  double M_PI2 = M_PI*M_PI;
87  double mmu = getLeptons(MU).getMass();
88  gslpp::complex Norm = sqrt(2.) / (4. * GF * getCKM().computelamt_s()) / (32. * M_PI * ale);
89 
90  C1 = 1. / (128. * M_PI2 * mphi2) * GammaL2 * F9(yD,yD);
91  C2 = 0.;
92  C3 = 0.;
93  C4 = 0.;
94  C5 = - 1. / (32. * M_PI2 * mphi2) * GammaLR * F9(yD,yD);
95 
96  C1p = 1. / (128. * M_PI2 * mphi2) * GammaR2 * F9(yD,yD);
97  C2p = 0.;
98  C3p = 0.;
99 
100  C7 = 0.;
101  C8 = 0.;
102  C9 = - Norm * GammaL * (GammamuL2 + GammamuR2) / mphi2 * F9(yD,yE);
103  C10 = Norm * GammaL * (GammamuL2 - GammamuR2) / mphi2 * F9(yD,yE);
104  CS = 0.;
105  CP = 0.;
106 
107  C7p = 0.;
108  C8p = 0.;
109  C9p = - Norm * GammaR * (GammamuL2 + GammamuR2) / mphi2 * F9(yD,yE);
110  C10p = Norm * GammaR * (GammamuL2 - GammamuR2) / mphi2 * F9(yD,yE);
111  CSp = 0.;
112  CPp = 0.;
113 
114  Deltaamu = mmu*mmu / ( 8. * M_PI2 * mphi2) * (
115  (GammamuL2 + GammamuR2) * (qphi*F7t(yE) - qpsi*F7(yE))
116  + 4./sqrt(2.) * v() * lambdaE / mmu * (2.*GammamuL*GammamuR) * (qphi*G7t(yE) - qpsi*G7(yE))
117  );
118 
119  /* Necessary for updating StandardModel parameters in StandardModelMatching,
120  * and LoopMediators and LoopMediators-derived parameters in LoopMediatorsMatching */
121  LoopMediatorsM.getObj().updateLoopMediatorsParameters();
122 
123  return (true);
124 }
125 
126 void LoopMediators::setParameter(const std::string name, const double& value)
127 {
128  if(name.compare("GammaL") == 0)
129  GammaL = value;
130  else if(name.compare("GammaR") == 0)
131  GammaR = value;
132  else if(name.compare("GammamuL") == 0)
133  GammamuL = value;
134  else if(name.compare("GammamuR") == 0)
135  GammamuR = value;
136  else if(name.compare("lambdaE") == 0)
137  lambdaE = value;
138  else if(name.compare("mphi") == 0)
139  mphi = value;
140  else if(name.compare("yD") == 0)
141  yD = value;
142  else if(name.compare("yE") == 0)
143  yE = value;
144  else if(name.compare("charge") == 0)
145  charge = value;
146  else if(name.compare("WCscale") == 0)
147  WCscale = value;
148  else
150 }
151 
152 bool LoopMediators::CheckParameters(const std::map<std::string, double>& DPars)
153 {
154  for (int i = 0; i < NLoopMediatorsvars; i++) {
155  if (DPars.find(LoopMediatorsvars[i]) == DPars.end()) {
156  std::cout << "ERROR: missing mandatory LoopMediators parameter " << LoopMediatorsvars[i] << std::endl;
159  }
160  }
161  return(StandardModel::CheckParameters(DPars));
162 }
163 
165 // Flags
166 
167 bool LoopMediators::setFlag(const std::string name, const bool value)
168 {
169  bool res = false;
170 
171  res = StandardModel::setFlag(name,value);
172 
173  return(res);
174 }
175 
177 // Loop Functions
178 
179 double LoopMediators::F9(double x, double y)
180 {
181  double ym1 = y - 1.;
182  double xm1 = x - 1.;
183 
184  if (x == 1. && y == 1.)
185  return 1./3.;
186  else if (x == 1.)
187  return (-3.*y*y + 2.*y*y*log(y) + 4.*y - 1.)/2./ym1/ym1/ym1;
188  else if (y == 1.)
189  return (-3.*x*x + 2.*x*x*log(x) + 4.*x - 1.)/2./xm1/xm1/xm1;
190  else if (x == y)
191  return (y*y - 2.*y*log(y) - 1.)/ym1/ym1/ym1;
192  else
193  return 1./xm1/ym1 + x*x*log(x)/xm1/xm1/(x-y) + y*y*log(y)/ym1/ym1/(y-x);
194 }
195 
196 double LoopMediators::F7(double x)
197 {
198  double xm1 = x - 1.;
199 
200  if (x == 1.)
201  return 1./24.;
202  else
203  return (x*x*x - 6.*x*x + 3.*x + 2. + 6.*x*log(x)) / (12.*xm1*xm1*xm1*xm1);
204 }
205 
206 double LoopMediators::F7t(double x)
207 {
208  if (x == 1.)
209  return 1./24.;
210  else
211  return F7(1./x) / x;
212 }
213 
214 double LoopMediators::G7(double x)
215 {
216  double xm1 = x - 1.;
217 
218  if (x == 1.)
219  return 1./12.;
220  else
221  return (x*x - 4.*x + 3. + 2.*log(x)) / (8.*xm1*xm1*xm1);
222 }
223 
224 double LoopMediators::G7t(double x)
225 {
226  double xm1 = x - 1.;
227 
228  if (x == 1.)
229  return 1./24.;
230  else
231  return (x*x - 1. - 2.*x*log(x)) / (8.*xm1*xm1*xm1);
232 }
233 
234 
235 
236 
238 
239 
240 
242 : ThObservable(SM_i), myLM(static_cast<const LoopMediators*> (&SM_i))
243 {
244 };
245 
247 {
248 };
249 
251 {
252  return myLM->getDeltaamu();
253 }
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:257
StandardModel::v
virtual double v() const
The Higgs vacuum expectation value.
Definition: StandardModel.cpp:943
LoopMediators::F7
double F7(double x)
Definition: LoopMediators.cpp:196
LoopMediators::Init
virtual bool Init(const std::map< std::string, double > &DPars)
Definition: LoopMediators.cpp:44
LoopMediators::PreUpdate
virtual bool PreUpdate()
Definition: LoopMediators.cpp:49
LoopMediators::setFlag
virtual bool setFlag(const std::string name, const bool value)
Definition: LoopMediators.cpp:167
Deltaamu::Deltaamu
Deltaamu(const StandardModel &SM_i)
Constructor.
Definition: LoopMediators.cpp:241
Deltaamu::myLM
const LoopMediators * myLM
Definition: LoopMediators.h:302
CKM::computelamt_s
gslpp::complex computelamt_s() const
The product of the CKM elements .
Definition: CKM.cpp:136
StandardModel::GF
double GF
The Fermi constant in .
Definition: StandardModel.h:2555
Model::addMissingModelParameter
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:240
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:339
LoopMediators::NLoopMediatorsvars
static const int NLoopMediatorsvars
Definition: LoopMediators.h:23
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
Matching::setObj
void setObj(T &obji)
Definition: Matching.h:15
gslpp::log
complex log(const complex &z)
Definition: gslpp_complex.cpp:342
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:477
Model::UpdateError
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:262
StandardModel::SMM
Matching< StandardModelMatching, StandardModel > SMM
An object of type Matching.
Definition: StandardModel.h:2550
StandardModel::ale
double ale
The fine-structure constant .
Definition: StandardModel.h:2556
StandardModel::setFlag
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
Definition: StandardModel.cpp:404
Model::ModelParamMap
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:270
LoopMediators::G7t
double G7t(double x)
Definition: LoopMediators.cpp:224
StandardModel::Init
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
Definition: StandardModel.cpp:185
StandardModelMatching
A class for the matching in the Standard Model.
Definition: StandardModelMatching.h:26
LoopMediators::CheckParameters
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
Definition: LoopMediators.cpp:152
Particle::getMass
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
LoopMediators::G7
double G7(double x)
Definition: LoopMediators.cpp:214
Deltaamu::~Deltaamu
~Deltaamu()
Definition: LoopMediators.cpp:246
LoopMediators::F9
double F9(double x, double y)
Definition: LoopMediators.cpp:179
StandardModel::PreUpdate
virtual bool PreUpdate()
The pre-update method for StandardModel.
Definition: StandardModel.cpp:198
LoopMediators
Model for NP contributions to flavour.
Definition: LoopMediators.h:20
Model::raiseMissingModelParameterCount
void raiseMissingModelParameterCount()
Definition: Model.h:250
gslpp::sqrt
complex sqrt(const complex &z)
Definition: gslpp_complex.cpp:385
LoopMediators::InitializeModel
virtual bool InitializeModel()
Definition: LoopMediators.cpp:38
LoopMediators::F7t
double F7t(double x)
Definition: LoopMediators.cpp:206
StandardModel::PostUpdate
virtual bool PostUpdate()
The post-update method for StandardModel.
Definition: StandardModel.cpp:225
Model::IsModelInitialized
bool IsModelInitialized() const
A method to check if the model is initialized.
Definition: Model.h:136
StandardModel::InitializeModel
virtual bool InitializeModel()
A method to initialize the model.
Definition: StandardModel.cpp:163
ThObservable
A class for a model prediction of an observable.
Definition: ThObservable.h:25
Deltaamu::computeThValue
double computeThValue()
Two positivity conditions of the Higgs potential.
Definition: LoopMediators.cpp:250
LoopMediators.h
LoopMediators::LoopMediatorsvars
static const std::string LoopMediatorsvars[NLoopMediatorsvars]
Definition: LoopMediators.h:25
Model::name
std::string name
The name of the model.
Definition: Model.h:275
LoopMediators::Update
virtual bool Update(const std::map< std::string, double > &DPars)
Definition: LoopMediators.cpp:56
LoopMediators::LoopMediators
LoopMediators()
FlavourWilsonCoefficient constructor.
Definition: LoopMediators.cpp:12
Deltaamu
Definition: LoopMediators.h:288
LoopMediators::PostUpdate
virtual bool PostUpdate()
Definition: LoopMediators.cpp:73
LoopMediators::~LoopMediators
~LoopMediators()
FlavourWilsonCoefficient destructor.
Definition: LoopMediators.cpp:29
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
StandardModel::getCKM
CKM getCKM() const
A get method to retrieve the member object of type CKM.
Definition: StandardModel.h:879
QCD::MU
Definition: QCD.h:314
StandardModel::getLeptons
Particle getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
Definition: StandardModel.h:712