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
10const std::string LoopMediators::LoopMediatorsvars[NLoopMediatorsvars] = {"GammaL", "GammaR", "GammamuL", "GammamuR", "lambdaE", "mphi", "yD", "yE", "charge", "WCscale"};
11
12LoopMediators::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
44bool LoopMediators::Init(const std::map<std::string, double>& DPars)
45{
47}
48
50{
51 if(!StandardModel::PreUpdate()) return (false);
52
53 return (true);
54}
55
56bool 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
126void 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
152bool 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 }
162}
163
165// Flags
166
167bool 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
179double 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
196double 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
206double LoopMediators::F7t(double x)
207{
208 if (x == 1.)
209 return 1./24.;
210 else
211 return F7(1./x) / x;
212}
213
214double 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
224double 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}
std::map< std::string, double > DPars
Definition: Minimal.cpp:11
const gslpp::complex computelamt_s() const
The product of the CKM elements .
Definition: CKM.cpp:174
double computeThValue()
Two positivity conditions of the Higgs potential.
const LoopMediators * myLM
Deltaamu(const StandardModel &SM_i)
Constructor.
Model for NP contributions to flavour.
Definition: LoopMediators.h:20
LoopMediators()
FlavourWilsonCoefficient constructor.
static const int NLoopMediatorsvars
Definition: LoopMediators.h:23
static const std::string LoopMediatorsvars[NLoopMediatorsvars]
Definition: LoopMediators.h:25
double G7t(double x)
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
virtual bool InitializeModel()
virtual bool PostUpdate()
double F7(double x)
virtual bool setFlag(const std::string name, const bool value)
~LoopMediators()
FlavourWilsonCoefficient destructor.
double F7t(double x)
virtual bool PreUpdate()
double F9(double x, double y)
double G7(double x)
virtual bool Init(const std::map< std::string, double > &DPars)
virtual bool Update(const std::map< std::string, double > &DPars)
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:250
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:280
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
Definition: Model.h:145
bool IsModelInitialized() const
A method to check if the model is initialized.
Definition: Model.h:136
std::string name
The name of the model.
Definition: Model.h:285
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:272
void raiseMissingModelParameterCount()
Definition: Model.h:260
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
@ MU
Definition: QCD.h:314
A model class for the Standard Model.
virtual bool PreUpdate()
The pre-update method for StandardModel.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
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...
const CKM & getCKM() const
A get method to retrieve the member object of type CKM.
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
Matching< StandardModelMatching, StandardModel > SMM
An object of type Matching.
double GF
The Fermi constant in .
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
double ale
The fine-structure constant .
virtual bool PostUpdate()
The post-update method for StandardModel.
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
const double v() const
The Higgs vacuum expectation value.
virtual bool InitializeModel()
A method to initialize the model.
A class for the matching in the Standard Model.
A class for a model prediction of an observable.
Definition: ThObservable.h:25