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);
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
StandardModel trueSM
Definition: NPbase.h:5731
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 epsilon2() const
The SM contribution to the epsilon parameter .
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 double epsilonb() const
The SM contribution to the epsilon parameter .
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 .
virtual const double epsilon1() const
The SM contribution to the epsilon parameter .
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 .
virtual const double epsilon3() const
The SM contribution to the epsilon parameter .
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)