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 
11 const 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);
32  if (FlagEpsilon1SM)
34  if (FlagEpsilon2SM)
36  if (FlagEpsilon3SM)
38  if (FlagEpsilonbSM)
40  return (true);
41 }
42 
43 void 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
54  NPbase::setParameter(name, value);
55 }
56 
57 bool 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  }
67  return (NPbase::CheckParameters(DPars));
68 }
69 
70 bool 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 
93 double NPEpsilons::epsilon1() const
94 {
95  return myEpsilon_1;
96 }
97 
98 double NPEpsilons::epsilon2() const
99 {
100  return myEpsilon_2;
101 }
102 
103 double NPEpsilons::epsilon3() const
104 {
105  return myEpsilon_3;
106 }
107 
108 double NPEpsilons::epsilonb() const
109 {
110  return myEpsilon_b;
111 }
112 
113 
115 
116 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 
127 double NPEpsilons::Mw() const
128 {
130 }
131 
132 double NPEpsilons::GammaW() const
133 {
134  throw std::runtime_error("NPEpsilons::GammaW() is not available.");
135 }
136 
137 double NPEpsilons::Gamma_Z() const
138 {
139  return (StandardModel::Gamma_Z());
140 }
141 
143 {
144  return (StandardModel::sigma0_had());
145 }
146 
147 double NPEpsilons::sin2thetaEff(const Particle p) const
148 {
149  return (StandardModel::sin2thetaEff(p));
150 }
151 
152 double NPEpsilons::A_f(const Particle p) const
153 {
154  return (StandardModel::A_f(p));
155 }
156 
157 double NPEpsilons::AFB(const Particle p) const
158 {
159  return (StandardModel::AFB(p));
160 }
161 
162 double NPEpsilons::R0_f(const Particle p) const
163 {
164  return (StandardModel::R0_f(p));
165 }
166 
167 
169 
170 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 
186 {
187  if (p.is("TOP"))
188  return gslpp::complex(0.0, 0.0, false);
189  else if (p.is("BOTTOM"))
190  return rhoZ_f_eps(p, myEpsilon_1, myEpsilon_b);
191  else
192  return rhoZ_f_eps(p, myEpsilon_1);
193 }
194 
195 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 
212 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 
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 
243 {
244  if (p.is("TOP"))
245  return gslpp::complex(0.0, 0.0, false);
246  else if (p.is("BOTTOM"))
248  else
249  return (kappaZ_f_eps(p, myEpsilon_1, myEpsilon_3));
250 }
251 
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 
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 
274 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 
280 double NPEpsilons::Delta_kappaPrime(const double eps1, const double eps3) const
281 {
282  return ( (eps3 - c02() * eps1) / (c02() - s02()));
283 }
NPEpsilons::myEpsilon_3
double myEpsilon_3
The parameter .
Definition: NPEpsilons.h:395
NPEpsilons::sigma0_had
virtual double sigma0_had() const
The hadronic cross section for at the -pole, .
Definition: NPEpsilons.cpp:142
NPEpsilons::setFlag
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of the model.
Definition: NPEpsilons.cpp:70
NPEpsilons::EPSILONvars
static const std::string EPSILONvars[NEPSILONvars]
A string array containing the labels of the model parameters in NPEpsilons.
Definition: NPEpsilons.h:134
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:231
Particle::is
bool is(std::string name_i) const
Definition: Particle.cpp:23
Particle
A class for particles.
Definition: Particle.h:26
StandardModel::setFlagNoApproximateGammaZ
void setFlagNoApproximateGammaZ(bool FlagNoApproximateGammaZ)
Definition: StandardModel.h:649
NPEpsilons::FlagEpsilonbSM
bool FlagEpsilonbSM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:411
NPEpsilons::epsilon3
virtual double epsilon3() const
The parameter .
Definition: NPEpsilons.cpp:103
NPEpsilons::kappaZ_f_eps
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
StandardModel::GF
double GF
The Fermi constant in .
Definition: StandardModel.h:2511
NPEpsilons::GammaW
virtual double GammaW() const
The total width of the boson, .
Definition: NPEpsilons.cpp:132
StandardModel::A_f
virtual double A_f(const Particle f) const
The left-right asymmetry in at the -pole, .
Definition: StandardModel.cpp:1183
StandardModel::sigma0_had
virtual double sigma0_had() const
The hadronic cross section for at the -pole, .
Definition: StandardModel.cpp:1344
Model::addMissingModelParameter
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:232
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:313
NPEpsilons::setParameter
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
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
StandardModel::epsilonb
virtual double epsilonb() const
The SM contribution to the epsilon parameter .
Definition: StandardModel.cpp:1789
NPEpsilons::Delta_kappaPrime
double Delta_kappaPrime(const double eps1, const double eps3) const
The auxiliary function .
Definition: NPEpsilons.cpp:280
NPEpsilons::myEpsilon_1
double myEpsilon_1
The parameter .
Definition: NPEpsilons.h:393
NPEpsilons::sin2thetaEff
virtual double sin2thetaEff(const Particle p) const
The effective weak mixing angle for at the the -mass scale.
Definition: NPEpsilons.cpp:147
QCD::ELECTRON
Definition: QCD.h:312
Particle::getIsospin
double getIsospin() const
A get method to access the particle isospin.
Definition: Particle.h:115
StandardModel::DeltaAlpha
double DeltaAlpha() const
The total corrections to the electromagnetic coupling at the -mass scale, denoted as .
Definition: StandardModel.cpp:855
StandardModel::ale
double ale
The fine-structure constant .
Definition: StandardModel.h:2512
StandardModel::setFlag
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
Definition: StandardModel.cpp:378
Model::ModelParamMap
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:262
StandardModel::IsFlagWithoutNonUniversalVC
bool IsFlagWithoutNonUniversalVC() const
A method to retrieve the model flag WithoutNonUniversalVC.
Definition: StandardModel.h:631
NPEpsilons::Delta_rW
double Delta_rW(const double eps1, const double eps2, const double eps3) const
The auxiliary function .
Definition: NPEpsilons.cpp:274
StandardModel::epsilon2
virtual double epsilon2() const
The SM contribution to the epsilon parameter .
Definition: StandardModel.cpp:1767
NPbase::trueSM
StandardModel trueSM
Definition: NPbase.h:2787
StandardModel::c02
double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections.
Definition: StandardModel.cpp:939
NPEpsilons::NPEpsilons
NPEpsilons()
The default constructor.
Definition: NPEpsilons.cpp:14
NPEpsilons::epsilon2
virtual double epsilon2() const
The parameter .
Definition: NPEpsilons.cpp:98
NPEpsilons::NEPSILONvars
static const int NEPSILONvars
The number of the model parameters in NPEpsilons.
Definition: NPEpsilons.h:129
NPbase
The auxiliary base model class for other model classes.
Definition: NPbase.h:66
StandardModel::sW2
double sW2() const
Definition: StandardModel.cpp:1005
NPEpsilons::Mw
virtual double Mw() const
The mass of the boson, .
Definition: NPEpsilons.cpp:127
NPEpsilons::gV_f_eps
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
Model::raiseMissingModelParameterCount
void raiseMissingModelParameterCount()
Definition: Model.h:242
gslpp::sqrt
complex sqrt(const complex &z)
Definition: gslpp_complex.cpp:385
NPEpsilons::epsilonb
virtual double epsilonb() const
The parameter .
Definition: NPEpsilons.cpp:108
Particle::getCharge
double getCharge() const
A get method to access the particle charge.
Definition: Particle.h:97
NPEpsilons::FlagEpsilon1SM
bool FlagEpsilon1SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:408
NPEpsilons::gV_f
virtual gslpp::complex gV_f(const Particle f) const
The total (SM+NP) contribution to the neutral-current vector coupling .
Definition: NPEpsilons.cpp:252
StandardModel::epsilon1
virtual double epsilon1() const
The SM contribution to the epsilon parameter .
Definition: StandardModel.cpp:1759
StandardModel::deltaKappaZ_f
virtual gslpp::complex deltaKappaZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
Definition: StandardModel.cpp:1729
StandardModel::R0_f
virtual double R0_f(const Particle f) const
The ratio .
Definition: StandardModel.cpp:1369
NPEpsilons::epsilon1
virtual double epsilon1() const
The parameter .
Definition: NPEpsilons.cpp:93
StandardModel::epsilon3
virtual double epsilon3() const
The SM contribution to the epsilon parameter .
Definition: StandardModel.cpp:1779
NPEpsilons::FlagEpsilon2SM
bool FlagEpsilon2SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:409
StandardModel::AFB
virtual double AFB(const Particle f) const
Definition: StandardModel.cpp:1190
NPEpsilons::myEpsilon_b
double myEpsilon_b
The parameter .
Definition: NPEpsilons.h:396
NPEpsilons::Gamma_Z
virtual double Gamma_Z() const
The total decay width of the boson, .
Definition: NPEpsilons.cpp:137
NPEpsilons::R0_f
virtual double R0_f(const Particle p) const
The ratio or , for leptons or quarks, respectively.
Definition: NPEpsilons.cpp:162
StandardModel::s02
double s02() const
The square of the sine of the weak mixing angle defined without weak radiative corrections.
Definition: StandardModel.cpp:930
NPEpsilons::myEpsilon_2
double myEpsilon_2
The parameter .
Definition: NPEpsilons.h:394
NPEpsilons::rhoZ_f_eps
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
StandardModel::sin2thetaEff
virtual double sin2thetaEff(const Particle f) const
The effective weak mixing angle for at the the -mass scale.
Definition: StandardModel.cpp:1195
gslpp::complex::real
const double & real() const
Definition: gslpp_complex.cpp:53
NPEpsilons.h
StandardModel::leptons
Particle leptons[6]
An array of Particle objects for the leptons.
Definition: StandardModel.h:2496
NPEpsilons::rhoZ_f
virtual gslpp::complex rhoZ_f(const Particle f) const
The effective neutral-current coupling including SM plus NP contributions.
Definition: NPEpsilons.cpp:185
NPbase::PostUpdate
virtual bool PostUpdate()
The postupdate method for NPbase.
Definition: NPbase.cpp:23
Model::name
std::string name
The name of the model.
Definition: Model.h:267
StandardModel::Mz
double Mz
The mass of the boson in GeV.
Definition: StandardModel.h:2510
NPEpsilons::Mw_eps
double Mw_eps(const double eps1, const double eps2, const double eps3) const
The -boson mass .
Definition: NPEpsilons.cpp:116
NPEpsilons::AFB
virtual double AFB(const Particle p) const
The forward-backward asymmetry in at the -pole, .
Definition: NPEpsilons.cpp:157
NPEpsilons::PostUpdate
virtual bool PostUpdate()
The post-update method for NPEpsilons.
Definition: NPEpsilons.cpp:29
NPEpsilons::gA_f
virtual gslpp::complex gA_f(const Particle f) const
The total (SM+NP) contribution to the neutral-current axial-vector coupling .
Definition: NPEpsilons.cpp:262
NPEpsilons::CheckParameters
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
StandardModel::Gamma_Z
virtual double Gamma_Z() const
The total decay width of the boson, .
Definition: StandardModel.cpp:1318
StandardModel::deltaRhoZ_f
virtual gslpp::complex deltaRhoZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
Definition: StandardModel.cpp:1704
NPEpsilons::A_f
virtual double A_f(const Particle p) const
The left-right asymmetry in at the -pole, .
Definition: NPEpsilons.cpp:152
NPEpsilons::gA_f_eps
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
NPEpsilons::FlagEpsilon3SM
bool FlagEpsilon3SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:410
NPEpsilons::kappaZ_f
virtual gslpp::complex kappaZ_f(const Particle f) const
The effective neutral-current coupling including SM plus NP contributions.
Definition: NPEpsilons.cpp:242