NPEpsilons.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  * All rights reserved.
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::pair<std::string, boost::reference_wrapper<const double> >("epsilon_1", boost::cref(myEpsilon_1)));
24  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("epsilon_2", boost::cref(myEpsilon_2)));
25  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("epsilon_3", boost::cref(myEpsilon_3)));
26  ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >("epsilon_b", boost::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;
63  return false;
64  }
65  }
66  return (NPbase::CheckParameters(DPars));
67 }
68 
69 bool NPEpsilons::setFlag(const std::string name, const bool value)
70 {
71  bool res = false;
72  if (name.compare("epsilon1SM") == 0) {
73  FlagEpsilon1SM = value;
74  res = true;
75  } else if (name.compare("epsilon2SM") == 0) {
76  FlagEpsilon2SM = value;
77  res = true;
78  } else if (name.compare("epsilon3SM") == 0) {
79  FlagEpsilon3SM = value;
80  res = true;
81  } else if (name.compare("epsilonbSM") == 0) {
82  FlagEpsilonbSM = value;
83  res = true;
84  } else
85  res = NPbase::setFlag(name, value);
86 
87  return (res);
88 }
89 
91 
92 double NPEpsilons::epsilon1() const
93 {
94  return myEpsilon_1;
95 }
96 
97 double NPEpsilons::epsilon2() const
98 {
99  return myEpsilon_2;
100 }
101 
102 double NPEpsilons::epsilon3() const
103 {
104  return myEpsilon_3;
105 }
106 
107 double NPEpsilons::epsilonb() const
108 {
109  return myEpsilon_b;
110 }
111 
112 
114 
115 double NPEpsilons::Mw_eps(const double eps1, const double eps2, const double eps3) const
116 {
117  double Delta_r = 1.0 - (1.0 - DeltaAlpha())*(1.0 - Delta_rW(eps1, eps2, eps3));
118 
119  double tmp = 4.0 * M_PI * ale / sqrt(2.0) / GF / Mz / Mz;
120  if (tmp / (1.0 - Delta_r) > 1.0)
121  throw std::runtime_error("Error in EWNPEpsilons::Mw()");
122 
123  return ( Mz / sqrt(2.0) * sqrt(1.0 + sqrt(1.0 - tmp / (1.0 - Delta_r))));
124 }
125 
126 double NPEpsilons::Mw() const
127 {
129 }
130 
131 double NPEpsilons::GammaW() const
132 {
133  throw std::runtime_error("NPEpsilons::GammaW() is not available.");
134 }
135 
136 double NPEpsilons::Gamma_Z() const
137 {
138  return (StandardModel::Gamma_Z());
139 }
140 
142 {
143  return (StandardModel::sigma0_had());
144 }
145 
146 double NPEpsilons::sin2thetaEff(const Particle p) const
147 {
148  return (StandardModel::sin2thetaEff(p));
149 }
150 
151 double NPEpsilons::A_f(const Particle p) const
152 {
153  return (StandardModel::A_f(p));
154 }
155 
156 double NPEpsilons::AFB(const Particle p) const
157 {
158  return (StandardModel::AFB(p));
159 }
160 
161 double NPEpsilons::R0_f(const Particle p) const
162 {
163  return (StandardModel::R0_f(p));
164 }
165 
166 
168 
169 gslpp::complex NPEpsilons::rhoZ_f_eps(const Particle p, const double eps1, const double epsb) const
170 {
171  double gAe = gA_f_eps(leptons[ELECTRON], eps1).real();
172  double rhoZ_e = 4. * gAe*gAe;
173  double bfact = (1. + epsb)*(1. + epsb);
174 
175  if (p.is("TOP"))
176  throw std::runtime_error("Error in NPEpsilons::rhoZ_f_eps()");
178  return ( rhoZ_e * bfact);
179  else
180  //return ( (rhoZ_e + trueSM.deltaRhoZ_f(p).real()) * bfact); // for test
181  return ( (rhoZ_e + deltaRhoZ_f(p).real()) * bfact);
182 }
183 
185 {
186  if (p.is("TOP"))
187  return gslpp::complex(0.0, 0.0, false);
188  else if (p.is("BOTTOM"))
189  return rhoZ_f_eps(p, myEpsilon_1, myEpsilon_b);
190  else
191  return rhoZ_f_eps(p, myEpsilon_1);
192 }
193 
194 gslpp::complex NPEpsilons::gV_f_eps(const Particle p, const double eps1,
195  const double eps3, double epsb) const
196 {
197  double I3f = p.getIsospin();
198  double Qf = p.getCharge();
199  if (p.is("TOP"))
200  throw std::runtime_error("Error in NPEpsilons::gV_f_eps()");
201  else if (p.is("BOTTOM"))
202  return ( sqrt(rhoZ_f_eps(p, eps1, epsb).real()) * I3f
203  * (1.0 - 4.0 * fabs(Qf) * kappaZ_f_eps(p, eps1, eps3, epsb) * sW2()));
204  else if (p.is("ELECTRON"))
205  return ( (1.0 - 4.0 * (1.0 + Delta_kappaPrime(eps1, eps3)) * s02()) * gA_f_eps(leptons[ELECTRON], eps1));
206  else
207  return ( sqrt(rhoZ_f_eps(p, eps1).real()) * I3f
208  * (1.0 - 4.0 * fabs(Qf) * kappaZ_f_eps(p, eps1, eps3) * sW2()));
209 }
210 
211 gslpp::complex NPEpsilons::gA_f_eps(const Particle p, const double eps1, const double epsb) const
212 {
213  double I3f = p.getIsospin();
214 
215  if (p.is("TOP"))
216  throw std::runtime_error("Error in NPEpsilons::gA_f_eps()");
217  else if (p.is("BOTTOM"))
218  return ( sqrt(rhoZ_f_eps(p, eps1, epsb).real()) * I3f);
219  else if (p.is("ELECTRON"))
220  return gslpp::complex(-(1.0 + eps1 / 2.0) / 2.0, 0.0, false);
221  else
222  return ( gslpp::complex(sqrt(rhoZ_f_eps(p, eps1).real()) * I3f, 0.0, false));
223 }
224 
226  const double eps1, const double eps3, const double epsb) const
227 {
228  double kappaZ_e = (1.0 - (gV_f_eps(leptons[ELECTRON], eps1, eps3)
229  / gA_f_eps(leptons[ELECTRON], eps1)).real()) / (4.0 * sW2());
230  double bfact = (1. + epsb);
231 
232  if (p.is("TOP"))
233  throw std::runtime_error("Error in NPEpsilons::kappaZ_f_eps()");
235  return ( kappaZ_e / bfact);
236  else
237  //return ( (kappaZ_e + trueSM.deltaKappaZ_f(p).real()) / bfact); // for test
238  return ( (kappaZ_e + deltaKappaZ_f(p).real()) / bfact);
239 }
240 
242 {
243  if (p.is("TOP"))
244  return gslpp::complex(0.0, 0.0, false);
245  else if (p.is("BOTTOM"))
247  else
248  return (kappaZ_f_eps(p, myEpsilon_1, myEpsilon_3));
249 }
250 
252 {
253  if (p.is("TOP"))
254  return gslpp::complex(0.0, 0.0, false);
255  else if (p.is("BOTTOM"))
257  else
258  return (gV_f_eps(p, myEpsilon_1, myEpsilon_3));
259 }
260 
262 {
263  if (p.is("TOP"))
264  return gslpp::complex(0.0, 0.0, false);
265  else if (p.is("BOTTOM"))
266  return (gA_f_eps(p, myEpsilon_1, myEpsilon_b));
267  else
268  return (gA_f_eps(p, myEpsilon_1));
269 }
270 
272 
273 double NPEpsilons::Delta_rW(const double eps1, const double eps2, const double eps3) const
274 {
275  return ( (c02() - s02()) / s02()
276  *(eps2 - c02() * eps1 + 2.0 * s02() * Delta_kappaPrime(eps1, eps3)));
277 }
278 
279 double NPEpsilons::Delta_kappaPrime(const double eps1, const double eps3) const
280 {
281  return ( (eps3 - c02() * eps1) / (c02() - s02()));
282 }
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 double epsilon2() const
The SM contribution to the epsilon parameter .
virtual double epsilon1() const
The SM contribution to the epsilon parameter .
virtual double epsilon2() const
The parameter .
Definition: NPEpsilons.cpp:97
double myEpsilon_2
The parameter .
Definition: NPEpsilons.h:394
virtual gslpp::complex deltaRhoZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
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 the model.
Definition: NPEpsilons.cpp:69
A class for particles.
Definition: Particle.h:26
static const std::string EPSILONvars[NEPSILONvars]
A string array containing the labels of the model parameters in NPEpsilons.
Definition: NPEpsilons.h:134
virtual double sin2thetaEff(const Particle p) const
The effective weak mixing angle for at the the -mass scale.
Definition: NPEpsilons.cpp:146
virtual double Mw() const
The mass of the boson, .
Definition: NPEpsilons.cpp:126
double DeltaAlpha() const
The total corrections to the electromagnetic coupling at the -mass scale, denoted as ...
virtual double epsilonb() const
The SM contribution to the epsilon parameter .
void setFlagNoApproximateGammaZ(bool FlagNoApproximateGammaZ)
StandardModel trueSM
Definition: NPbase.h:543
bool IsFlagWithoutNonUniversalVC() const
A method to retrieve the model flag WithoutNonUniversalVC.
const double & real() const
virtual double GammaW() const
The total width of the boson, .
Definition: NPEpsilons.cpp:131
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:194
double ale
The fine-structure constant .
NPEpsilons()
The default constructor.
Definition: NPEpsilons.cpp:14
double myEpsilon_3
The parameter .
Definition: NPEpsilons.h:395
virtual gslpp::complex gA_f(const Particle f) const
The total (SM+NP) contribution to the neutral-current axial-vector coupling .
Definition: NPEpsilons.cpp:261
double GF
The Fermi constant in .
virtual double sin2thetaEff(const Particle f) const
The effective weak mixing angle for at the the -mass scale.
virtual double sigma0_had() const
The hadronic cross section for at the -pole, .
Definition: NPEpsilons.cpp:141
virtual double sigma0_had() const
The hadronic cross section for at the -pole, .
double myEpsilon_1
The parameter .
Definition: NPEpsilons.h:393
bool FlagEpsilon2SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:409
virtual gslpp::complex gV_f(const Particle f) const
The total (SM+NP) contribution to the neutral-current vector coupling .
Definition: NPEpsilons.cpp:251
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:225
bool FlagEpsilonbSM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:411
bool FlagEpsilon1SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:408
bool is(std::string name_i) const
Definition: Particle.cpp:23
double Mz
The mass of the boson in GeV.
virtual gslpp::complex rhoZ_f(const Particle f) const
The effective neutral-current coupling including SM plus NP contributions.
Definition: NPEpsilons.cpp:184
virtual double epsilon3() const
The SM contribution to the epsilon parameter .
double sW2() const
double Delta_kappaPrime(const double eps1, const double eps3) const
The auxiliary function .
Definition: NPEpsilons.cpp:279
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
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
double getCharge() const
A get method to access the particle charge.
Definition: Particle.h:97
static const int NEPSILONvars
The number of the model parameters in NPEpsilons.
Definition: NPEpsilons.h:129
virtual double AFB(const Particle p) const
The forward-backward asymmetry in at the -pole, .
Definition: NPEpsilons.cpp:156
virtual double A_f(const Particle p) const
The left-right asymmetry in at the -pole, .
Definition: NPEpsilons.cpp:151
double myEpsilon_b
The parameter .
Definition: NPEpsilons.h:396
virtual double R0_f(const Particle p) const
The ratio or , for leptons or quarks, respectively.
Definition: NPEpsilons.cpp:161
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 double epsilonb() const
The parameter .
Definition: NPEpsilons.cpp:107
virtual bool PostUpdate()
The post-update method for NPbase.
Definition: NPbase.cpp:15
virtual gslpp::complex deltaKappaZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
virtual double AFB(const Particle f) const
virtual double Gamma_Z() const
The total decay width of the boson, .
double Delta_rW(const double eps1, const double eps2, const double eps3) const
The auxiliary function .
Definition: NPEpsilons.cpp:273
double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections...
virtual bool PostUpdate()
The post-update method for NPEpsilons.
Definition: NPEpsilons.cpp:29
virtual double A_f(const Particle f) const
The left-right asymmetry in at the -pole, .
double s02() const
The square of the sine of the weak mixing angle defined without weak radiative corrections.
bool FlagEpsilon3SM
A boolean flag that is true if only the SM contribution is considered for .
Definition: NPEpsilons.h:410
virtual double epsilon3() const
The parameter .
Definition: NPEpsilons.cpp:102
virtual double epsilon1() const
The parameter .
Definition: NPEpsilons.cpp:92
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
virtual double R0_f(const Particle f) const
The ratio .
virtual gslpp::complex kappaZ_f(const Particle f) const
The effective neutral-current coupling including SM plus NP contributions.
Definition: NPEpsilons.cpp:241
virtual double Gamma_Z() const
The total decay width of the boson, .
Definition: NPEpsilons.cpp:136
double Mw_eps(const double eps1, const double eps2, const double eps3) const
The -boson mass .
Definition: NPEpsilons.cpp:115
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
gslpp::complex rhoZ_f_eps(const Particle f, const double eps1, const double epsb=0.) const
The effective neutral-current coupling .
Definition: NPEpsilons.cpp:169
std::map< std::string, boost::reference_wrapper< const double > > ModelParamMap
Definition: Model.h:200
double getIsospin() const
A get method to access the particle isospin.
Definition: Particle.h:115
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:211
complex sqrt(const complex &z)