a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
NPEpsilons.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 "NPEpsilons.h"
9#include <stdexcept>
10
11const std::string NPEpsilons::EPSILONvars[NEPSILONvars]
12 = {"epsilon_1", "epsilon_2", "epsilon_3", "epsilon_b"};
13
15: NPbase()
16{
18
19 FlagEpsilon1SM = false;
20 FlagEpsilon2SM = false;
21 FlagEpsilon3SM = false;
22 FlagEpsilonbSM = false;
23 ModelParamMap.insert(std::make_pair("epsilon_1", std::cref(myEpsilon_1)));
24 ModelParamMap.insert(std::make_pair("epsilon_2", std::cref(myEpsilon_2)));
25 ModelParamMap.insert(std::make_pair("epsilon_3", std::cref(myEpsilon_3)));
26 ModelParamMap.insert(std::make_pair("epsilon_b", std::cref(myEpsilon_b)));
27}
28
30{
31 if (!NPbase::PostUpdate()) return (false);
33 myEpsilon_1 = trueSM.epsilon1();
35 myEpsilon_2 = trueSM.epsilon2();
37 myEpsilon_3 = trueSM.epsilon3();
39 myEpsilon_b = trueSM.epsilonb();
40 return (true);
41}
42
43void NPEpsilons::setParameter(const std::string name, const double& value)
44{
45 if (name.compare("epsilon_1") == 0)
46 myEpsilon_1 = value;
47 else if (name.compare("epsilon_2") == 0)
48 myEpsilon_2 = value;
49 else if (name.compare("epsilon_3") == 0)
50 myEpsilon_3 = value;
51 else if (name.compare("epsilon_b") == 0)
52 myEpsilon_b = value;
53 else
55}
56
57bool NPEpsilons::CheckParameters(const std::map<std::string, double>& DPars)
58{
59 for (int i = 0; i < NEPSILONvars; i++) {
60 if (DPars.find(EPSILONvars[i]) == DPars.end()) {
61 std::cout << "ERROR: Missing mandatory NPEpsilons parameter "
62 << EPSILONvars[i] << std::endl;
65 }
66 }
68}
69
70bool NPEpsilons::setFlag(const std::string name, const bool value)
71{
72 bool res = false;
73 if (name.compare("epsilon1SM") == 0) {
74 FlagEpsilon1SM = value;
75 res = true;
76 } else if (name.compare("epsilon2SM") == 0) {
77 FlagEpsilon2SM = value;
78 res = true;
79 } else if (name.compare("epsilon3SM") == 0) {
80 FlagEpsilon3SM = value;
81 res = true;
82 } else if (name.compare("epsilonbSM") == 0) {
83 FlagEpsilonbSM = value;
84 res = true;
85 } else
86 res = NPbase::setFlag(name, value);
87
88 return (res);
89}
90
92
93const double NPEpsilons::epsilon1() const
94{
95 return myEpsilon_1;
96}
97
98const double NPEpsilons::epsilon2() const
99{
100 return myEpsilon_2;
101}
102
103const double NPEpsilons::epsilon3() const
104{
105 return myEpsilon_3;
106}
107
108const double NPEpsilons::epsilonb() const
109{
110 return myEpsilon_b;
111}
112
113
115
116const double NPEpsilons::Mw_eps(const double eps1, const double eps2, const double eps3) const
117{
118 double Delta_r = 1.0 - (1.0 - DeltaAlpha())*(1.0 - Delta_rW(eps1, eps2, eps3));
119
120 double tmp = 4.0 * M_PI * ale / sqrt(2.0) / GF / Mz / Mz;
121 if (tmp / (1.0 - Delta_r) > 1.0)
122 throw std::runtime_error("Error in EWNPEpsilons::Mw()");
123
124 return ( Mz / sqrt(2.0) * sqrt(1.0 + sqrt(1.0 - tmp / (1.0 - Delta_r))));
125}
126
127const double NPEpsilons::Mw() const
128{
130}
131
132const double NPEpsilons::GammaW() const
133{
134 throw std::runtime_error("NPEpsilons::GammaW() is not available.");
135}
136
137const double NPEpsilons::Gamma_Z() const
138{
139 return (StandardModel::Gamma_Z());
140}
141
142const double NPEpsilons::sigma0_had() const
143{
144 return (StandardModel::sigma0_had());
145}
146
147const double NPEpsilons::sin2thetaEff(const Particle p) const
148{
149 return (StandardModel::sin2thetaEff(p));
150}
151
152const double NPEpsilons::A_f(const Particle p) const
153{
154 return (StandardModel::A_f(p));
155}
156
157const double NPEpsilons::AFB(const Particle p) const
158{
159 return (StandardModel::AFB(p));
160}
161
162const double NPEpsilons::R0_f(const Particle p) const
163{
164 return (StandardModel::R0_f(p));
165}
166
167
169
170const gslpp::complex NPEpsilons::rhoZ_f_eps(const Particle p, const double eps1, const double epsb) const
171{
172 double gAe = gA_f_eps(leptons[ELECTRON], eps1).real();
173 double rhoZ_e = 4. * gAe*gAe;
174 double bfact = (1. + epsb)*(1. + epsb);
175
176 if (p.is("TOP"))
177 throw std::runtime_error("Error in NPEpsilons::rhoZ_f_eps()");
179 return ( rhoZ_e * bfact);
180 else
181 //return ( (rhoZ_e + trueSM.deltaRhoZ_f(p).real()) * bfact); // for test
182 return ( (rhoZ_e + deltaRhoZ_f(p).real()) * bfact);
183}
184
185const gslpp::complex NPEpsilons::rhoZ_f(const Particle p) const
186{
187 if (p.is("TOP"))
188 return gslpp::complex(0.0, 0.0, false);
189 else if (p.is("BOTTOM"))
191 else
192 return rhoZ_f_eps(p, myEpsilon_1);
193}
194
195const gslpp::complex NPEpsilons::gV_f_eps(const Particle p, const double eps1,
196 const double eps3, double epsb) const
197{
198 double I3f = p.getIsospin();
199 double Qf = p.getCharge();
200 if (p.is("TOP"))
201 throw std::runtime_error("Error in NPEpsilons::gV_f_eps()");
202 else if (p.is("BOTTOM"))
203 return ( sqrt(rhoZ_f_eps(p, eps1, epsb).real()) * I3f
204 * (1.0 - 4.0 * fabs(Qf) * kappaZ_f_eps(p, eps1, eps3, epsb) * sW2()));
205 else if (p.is("ELECTRON"))
206 return ( (1.0 - 4.0 * (1.0 + Delta_kappaPrime(eps1, eps3)) * s02()) * gA_f_eps(leptons[ELECTRON], eps1));
207 else
208 return ( sqrt(rhoZ_f_eps(p, eps1).real()) * I3f
209 * (1.0 - 4.0 * fabs(Qf) * kappaZ_f_eps(p, eps1, eps3) * sW2()));
210}
211
212const gslpp::complex NPEpsilons::gA_f_eps(const Particle p, const double eps1, const double epsb) const
213{
214 double I3f = p.getIsospin();
215
216 if (p.is("TOP"))
217 throw std::runtime_error("Error in NPEpsilons::gA_f_eps()");
218 else if (p.is("BOTTOM"))
219 return ( sqrt(rhoZ_f_eps(p, eps1, epsb).real()) * I3f);
220 else if (p.is("ELECTRON"))
221 return gslpp::complex(-(1.0 + eps1 / 2.0) / 2.0, 0.0, false);
222 else
223 return ( gslpp::complex(sqrt(rhoZ_f_eps(p, eps1).real()) * I3f, 0.0, false));
224}
225
226const gslpp::complex NPEpsilons::kappaZ_f_eps(const Particle p,
227 const double eps1, const double eps3, const double epsb) const
228{
229 double kappaZ_e = (1.0 - (gV_f_eps(leptons[ELECTRON], eps1, eps3)
230 / gA_f_eps(leptons[ELECTRON], eps1)).real()) / (4.0 * sW2());
231 double bfact = (1. + epsb);
232
233 if (p.is("TOP"))
234 throw std::runtime_error("Error in NPEpsilons::kappaZ_f_eps()");
236 return ( kappaZ_e / bfact);
237 else
238 //return ( (kappaZ_e + trueSM.deltaKappaZ_f(p).real()) / bfact); // for test
239 return ( (kappaZ_e + deltaKappaZ_f(p).real()) / bfact);
240}
241
242const gslpp::complex NPEpsilons::kappaZ_f(const Particle p) const
243{
244 if (p.is("TOP"))
245 return gslpp::complex(0.0, 0.0, false);
246 else if (p.is("BOTTOM"))
248 else
250}
251
252const gslpp::complex NPEpsilons::gV_f(const Particle p) const
253{
254 if (p.is("TOP"))
255 return gslpp::complex(0.0, 0.0, false);
256 else if (p.is("BOTTOM"))
258 else
259 return (gV_f_eps(p, myEpsilon_1, myEpsilon_3));
260}
261
262const gslpp::complex NPEpsilons::gA_f(const Particle p) const
263{
264 if (p.is("TOP"))
265 return gslpp::complex(0.0, 0.0, false);
266 else if (p.is("BOTTOM"))
267 return (gA_f_eps(p, myEpsilon_1, myEpsilon_b));
268 else
269 return (gA_f_eps(p, myEpsilon_1));
270}
271
273
274const double NPEpsilons::Delta_rW(const double eps1, const double eps2, const double eps3) const
275{
276 return ( (c02() - s02()) / s02()
277 *(eps2 - c02() * eps1 + 2.0 * s02() * Delta_kappaPrime(eps1, eps3)));
278}
279
280const double NPEpsilons::Delta_kappaPrime(const double eps1, const double eps3) const
281{
282 return ( (eps3 - c02() * eps1) / (c02() - s02()));
283}
std::map< std::string, double > DPars
Definition: Minimal.cpp:11
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:250
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:280
std::string name
The name of the model.
Definition: Model.h:285
void raiseMissingModelParameterCount()
Definition: Model.h:260
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of the model.
Definition: NPEpsilons.cpp:43
static const int NEPSILONvars
The number of the model parameters in NPEpsilons.
Definition: NPEpsilons.h:129
virtual const double epsilon3() const
The parameter .
Definition: NPEpsilons.cpp:103
virtual const double GammaW() const
The total width of the boson, .
Definition: NPEpsilons.cpp:132
double myEpsilon_2
The parameter .
Definition: NPEpsilons.h:394
const double Delta_kappaPrime(const double eps1, const double eps3) const
The auxiliary function .
Definition: NPEpsilons.cpp:280
static const std::string EPSILONvars[NEPSILONvars]
A string array containing the labels of the model parameters in NPEpsilons.
Definition: NPEpsilons.h:134
const gslpp::complex gA_f_eps(const Particle f, const double eps1, const double epsb=0.) const
The effective neutral-current axial-vector coupling .
Definition: NPEpsilons.cpp:212
const double Delta_rW(const double eps1, const double eps2, const double eps3) const
The auxiliary function .
Definition: NPEpsilons.cpp:274
double myEpsilon_1
The parameter .
Definition: NPEpsilons.h:393
double myEpsilon_3
The parameter .
Definition: NPEpsilons.h:395
virtual const double epsilonb() const
The parameter .
Definition: NPEpsilons.cpp:108
const gslpp::complex rhoZ_f_eps(const Particle f, const double eps1, const double epsb=0.) const
The effective neutral-current coupling .
Definition: NPEpsilons.cpp:170
virtual const double Mw() const
The mass of the boson, .
Definition: NPEpsilons.cpp:127
virtual const double AFB(const Particle p) const
The forward-backward asymmetry in at the -pole, .
Definition: NPEpsilons.cpp:157
const gslpp::complex kappaZ_f_eps(const Particle f, const double eps1, const double eps3, const double epsb=0.) const
The effective neutral-current coupling .
Definition: NPEpsilons.cpp:226
virtual bool PostUpdate()
The post-update method for NPEpsilons.
Definition: NPEpsilons.cpp:29
virtual const double epsilon1() const
The parameter .
Definition: NPEpsilons.cpp:93
const double Mw_eps(const double eps1, const double eps2, const double eps3) const
The -boson mass .
Definition: NPEpsilons.cpp:116
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of the model.
Definition: NPEpsilons.cpp:70
virtual const double A_f(const Particle p) const
The left-right asymmetry in at the -pole, .
Definition: NPEpsilons.cpp:152
virtual const double epsilon2() const
The parameter .
Definition: NPEpsilons.cpp:98
bool FlagEpsilon3SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:410
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for the model have been provided in model initializ...
Definition: NPEpsilons.cpp:57
virtual const gslpp::complex rhoZ_f(const Particle f) const
The effective neutral-current coupling including SM plus NP contributions.
Definition: NPEpsilons.cpp:185
bool FlagEpsilon2SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:409
virtual const double R0_f(const Particle p) const
The ratio or , for leptons or quarks, respectively.
Definition: NPEpsilons.cpp:162
virtual const double Gamma_Z() const
The total decay width of the boson, .
Definition: NPEpsilons.cpp:137
virtual const gslpp::complex kappaZ_f(const Particle f) const
The effective neutral-current coupling including SM plus NP contributions.
Definition: NPEpsilons.cpp:242
NPEpsilons()
The default constructor.
Definition: NPEpsilons.cpp:14
virtual const gslpp::complex gA_f(const Particle f) const
The total (SM+NP) contribution to the neutral-current axial-vector coupling .
Definition: NPEpsilons.cpp:262
double myEpsilon_b
The parameter .
Definition: NPEpsilons.h:396
const gslpp::complex gV_f_eps(const Particle f, const double eps1, const double eps3, const double epsb=0.) const
The effective neutral-current vector coupling .
Definition: NPEpsilons.cpp:195
virtual const double sigma0_had() const
The hadronic cross section for at the -pole, .
Definition: NPEpsilons.cpp:142
virtual const gslpp::complex gV_f(const Particle f) const
The total (SM+NP) contribution to the neutral-current vector coupling .
Definition: NPEpsilons.cpp:252
virtual const double sin2thetaEff(const Particle p) const
The effective weak mixing angle for at the the -mass scale.
Definition: NPEpsilons.cpp:147
bool FlagEpsilon1SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:408
bool FlagEpsilonbSM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:411
The auxiliary base model class for other model classes.
Definition: NPbase.h:66
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of NPbase.
Definition: NPbase.h:97
A class for particles.
Definition: Particle.h:26
bool is(std::string name_i) const
Definition: Particle.cpp:23
double getIsospin() const
A get method to access the particle isospin.
Definition: Particle.h:115
double getCharge() const
A get method to access the particle charge.
Definition: Particle.h:97
@ ELECTRON
Definition: QCD.h:312
virtual const double sin2thetaEff(const Particle f) const
The effective weak mixing angle for at the the -mass scale.
double Mz
The mass of the boson in GeV.
virtual const double AFB(const Particle f) const
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...
Particle leptons[6]
An array of Particle objects for the leptons.
virtual const double sigma0_had() const
The hadronic cross section for at the -pole, .
const double s02() const
The square of the sine of the weak mixing angle defined without weak radiative corrections.
virtual const double Gamma_Z() const
The total decay width of the boson, .
const bool IsFlagWithoutNonUniversalVC() const
A method to retrieve the model flag WithoutNonUniversalVC.
double GF
The Fermi constant in .
virtual const gslpp::complex deltaRhoZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
virtual const double A_f(const Particle f) const
The left-right asymmetry in at the -pole, .
virtual const gslpp::complex deltaKappaZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
const double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections.
virtual const double R0_f(const Particle f) const
The ratio .
double ale
The fine-structure constant .
virtual bool PostUpdate()
The post-update method for StandardModel.
const double DeltaAlpha() const
The total corrections to the electromagnetic coupling at the -mass scale, denoted as .
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
void setFlagNoApproximateGammaZ(bool FlagNoApproximateGammaZ)