a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
LEP2oblique.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 "LEP2oblique.h"
9
10
12: SM(SM_i)
13{
14}
15
16
18
20 const double s, const double ml,
21 const double ObParam_i[]) const
22{
23 double alpha0 = alpha_at_s(s);
24 double Ncf = 1.0;
25 double betaf = sqrt(1.0 - 4.0*ml*ml/s);
26 double G1NP = G1_l_NP(l, s, alpha0, ObParam_i);
27
28 return ( 4.0*M_PI*alpha0*alpha0/(3.0*s)*Ncf*betaf*G1NP );
29}
30
31
33 const double s, const double mq,
34 const double ObParam_i[]) const
35{
36 double alpha0 = alpha_at_s(s);
37 double Ncf = 3.0;
38 double betaf = sqrt(1.0 - 4.0*mq*mq/s);
39 double G1NP = G1_q_NP(q, s, alpha0, ObParam_i);
40
41 return ( 4.0*M_PI*alpha0*alpha0/(3.0*s)*Ncf*betaf*G1NP );
42}
43
44
46 const double s, const double ml,
47 const double ObParam_i[]) const
48{
49 double alpha0 = alpha_at_s(s);
50 double mf2 = ml*ml;
51 double betaf = sqrt(1.0 - 4.0*mf2/s);
52 double G1SM0 = G1_l_SM0(l, s, alpha0);
53 double G2SM0 = G2_l_SM0(l, s, alpha0);
54 double G3SM0 = G3_l_SM0(l, s, alpha0);
55 double AFB_Born0 = 3.0/4.0*betaf*G3SM0/(G1SM0 + 2.0*mf2/s*G2SM0);
56 double G1NP = G1_l_NP(l, s, alpha0, ObParam_i);
57 double G3NP = G3_l_NP(l, s, alpha0, ObParam_i);
58
59 return ( - AFB_Born0*G1NP/(G1SM0 + 2.0*mf2/s*G2SM0)
60 + AFB_Born0*G3NP/G3SM0 );
61}
62
63
65 const double s, const double mq,
66 const double ObParam_i[]) const
67{
68 double alpha0 = alpha_at_s(s);
69 double mf2 = mq*mq;
70 double betaf = sqrt(1.0 - 4.0*mf2/s);
71 double G1SM0 = G1_q_SM0(q, s, alpha0);
72 double G2SM0 = G2_q_SM0(q, s, alpha0);
73 double G3SM0 = G3_q_SM0(q, s, alpha0);
74 double AFB_Born0 = 3.0/4.0*betaf*G3SM0/(G1SM0 + 2.0*mf2/s*G2SM0);
75 double G1NP = G1_q_NP(q, s, alpha0, ObParam_i);
76 double G3NP = G3_q_NP(q, s, alpha0, ObParam_i);
77
78 return ( - AFB_Born0*G1NP/(G1SM0 + 2.0*mf2/s*G2SM0)
79 + AFB_Born0*G3NP/G3SM0 );
80}
81
82
84 const double s, const double mq,
85 const double ObParam_i[]) const
86{
87 double alpha0 = alpha_at_s(s);
88 double sigma_q_SM0 = sigma_q_LEP2_SM0(q, s, alpha0, mq);
89 double sigma_had_SM0 = sigma_q_LEP2_SM0(QCD::UP, s, alpha0, mq)
90 + sigma_q_LEP2_SM0(QCD::DOWN, s, alpha0, mq)
91 + sigma_q_LEP2_SM0(QCD::CHARM, s, alpha0, mq)
92 + sigma_q_LEP2_SM0(QCD::STRANGE, s, alpha0, mq)
93 + sigma_q_LEP2_SM0(QCD::BOTTOM, s, alpha0, mq);
94 double sigma_q_NP = sigma_q_LEP2_NP(q, s, mq, ObParam_i);
95 double sigma_had_NP = sigma_q_LEP2_NP(QCD::UP, s, mq, ObParam_i)
96 + sigma_q_LEP2_NP(QCD::DOWN, s, mq, ObParam_i)
97 + sigma_q_LEP2_NP(QCD::CHARM, s, mq, ObParam_i)
98 + sigma_q_LEP2_NP(QCD::STRANGE, s, mq, ObParam_i)
99 + sigma_q_LEP2_NP(QCD::BOTTOM, s, mq, ObParam_i);
100
101 return ( - sigma_q_SM0/(sigma_had_SM0*sigma_had_SM0)*sigma_had_NP
102 + sigma_q_NP/sigma_had_SM0 );
103}
104
105
107
108double LEP2oblique::DeltaEpsilon_1(const double alpha0,
109 const double ObParam_i[]) const
110{
111 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
112 return ( ObParam_i[That] - ObParam_i[W] + 2.0*s0/c0*ObParam_i[X]
113 - s0*s0/c0/c0*ObParam_i[Y] );
114}
115
116
117double LEP2oblique::DeltaEpsilon_2(const double alpha0,
118 const double ObParam_i[]) const
119{
120 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
121 return ( ObParam_i[Uhat] - ObParam_i[V] - ObParam_i[W]
122 + 2.0*s0/c0*ObParam_i[X] );
123}
124
125
126double LEP2oblique::DeltaEpsilon_3(const double alpha0,
127 const double ObParam_i[]) const
128{
129 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
130 return ( ObParam_i[Shat] - ObParam_i[W] + ObParam_i[X]/s0/c0
131 - ObParam_i[Y] );
132}
133
134
135double LEP2oblique::epsilonZZ(const double alpha0,
136 const double ObParam_i[]) const
137{
138 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
139 return ( c02(alpha0)*ObParam_i[W] - 2.0*s0*c0*ObParam_i[X]
140 + s02(alpha0)*ObParam_i[Y] );
141}
142
143
144double LEP2oblique::epsilonGammaGamma(const double alpha0,
145 const double ObParam_i[]) const
146{
147 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
148 return ( s02(alpha0)*ObParam_i[W] + 2.0*s0*c0*ObParam_i[X]
149 + c02(alpha0)*ObParam_i[Y] );
150}
151
152
153double LEP2oblique::epsilonGammaZ(const double alpha0,
154 const double ObParam_i[]) const
155{
156 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
157 return ( (c02(alpha0) - s02(alpha0))*ObParam_i[X] + s0*c0*(ObParam_i[W]
158 - ObParam_i[Y]) );
159}
160
161
162double LEP2oblique::vl(const QCD::lepton l, const double alpha0) const
163{
164 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
165 double Q = SM.getLeptons(l).getCharge();
166 return ( - (SM.getLeptons(l).getIsospin()
167 - 2.0*Q*s02(alpha0))/(2.0*s0*c0) );
168}
169
170
171double LEP2oblique::vq(const QCD::quark q, const double alpha0) const
172{
173 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
174 double Q = SM.getQuarks(q).getCharge();
175 return ( - (SM.getQuarks(q).getIsospin()
176 - 2.0*Q*s02(alpha0))/(2.0*s0*c0) );
177}
178
179
180double LEP2oblique::al(const QCD::lepton l, const double alpha0) const
181{
182 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
183 return ( - SM.getLeptons(l).getIsospin()/(2.0*s0*c0) );
184}
185
186
187double LEP2oblique::aq(const QCD::quark q, const double alpha0) const
188{
189 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
190 return ( - SM.getQuarks(q).getIsospin()/(2.0*s0*c0) );
191}
192
193
194double LEP2oblique::G1_NP(const double s, const double alpha0, const double Qf,
195 const double vf, const double af,
196 const double ObParam_i[]) const
197{
198 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
200 double ve = vl(StandardModel::ELECTRON, alpha0);
201 double ae = al(StandardModel::ELECTRON, alpha0);
202 double Qe2 = Qe*Qe, Qf2 = Qf*Qf;
203 double ve2 = ve*ve, vf2 = vf*vf, ae2 = ae*ae, af2 = af*af;
204 double Mz = SM.getMz();
205 double GammaZ0 = 7.0*alpha0*Mz/(16.0*s02(alpha0)*c02(alpha0));
206 gslpp::complex denom = gslpp::complex(s - Mz*Mz, Mz*GammaZ0, false);
207 double Zprop = (1.0/denom).real();
208
209 double epsilonbarGamma = - s/(Mw0(alpha0)*Mw0(alpha0))
210 *epsilonGammaGamma(alpha0, ObParam_i);
211 double epsilonbarZ = s*Zprop*DeltaEpsilon_1(alpha0, ObParam_i)
212 - s/(Mw0(alpha0)*Mw0(alpha0))*epsilonZZ(alpha0, ObParam_i);
213 double epsilonbarGammaZ = c0/s0*s*Zprop
214 *( DeltaEpsilon_1(alpha0, ObParam_i)
215 - DeltaEpsilon_2(alpha0, ObParam_i) )
216 - s0/c0*s*Zprop*DeltaEpsilon_3(alpha0, ObParam_i)
217 + s/(Mw0(alpha0)*Mw0(alpha0))
218 *epsilonGammaZ(alpha0, ObParam_i);
219
220 return ( 2.0*Qe2*Qf2*epsilonbarGamma
221 + 2.0*ve*vf*Qe*Qf*(epsilonbarZ + s*epsilonbarGamma*Zprop)
222 + 2.0*(ve2 + ae2)*(vf2 + af2)*s*epsilonbarZ*Zprop
223 + 2.0*(vf*Qe2*Qf + ve*Qe*Qf2)*epsilonbarGammaZ
224 + 2.0*(ve*(vf2 + af2)*Qe + (ve2 + ae2)*vf*Qf)*s*epsilonbarGammaZ*Zprop );
225}
226
227
229 const double s, const double alpha0,
230 const double ObParam_i[]) const
231{
232 double Qf = SM.getLeptons(l).getCharge();
233 double vf = vl(l, alpha0), af = al(l, alpha0);
234 return ( G1_NP(s, alpha0, Qf, vf, af, ObParam_i) );
235}
236
237
239 const double s, const double alpha0,
240 const double ObParam_i[]) const
241{
242 double Qf = SM.getQuarks(q).getCharge();
243 double vf = vq(q, alpha0), af = aq(q, alpha0);
244 return ( G1_NP(s, alpha0, Qf, vf, af, ObParam_i) );
245}
246
247
248double LEP2oblique::G3_NP(const double s, const double alpha0, const double Qf,
249 const double vf, const double af,
250 const double ObParam_i[]) const
251{
252 double c0 = sqrt(c02(alpha0)), s0 = sqrt(s02(alpha0));
254 double ve = vl(StandardModel::ELECTRON, alpha0);
255 double ae = al(StandardModel::ELECTRON, alpha0);
256 double Mz = SM.getMz();
257 double GammaZ0 = 7.0*alpha0*Mz/(16.0*s02(alpha0)*c02(alpha0));
258 gslpp::complex denom = gslpp::complex(s - Mz*Mz, Mz*GammaZ0, false);
259 double Zprop = (1.0/denom).real();
260
261 double epsilonbarGamma = - s/(Mw0(alpha0)*Mw0(alpha0))
262 *epsilonGammaGamma(alpha0, ObParam_i);
263 double epsilonbarZ = s*Zprop*DeltaEpsilon_1(alpha0, ObParam_i)
264 - s/(Mw0(alpha0)*Mw0(alpha0))*epsilonZZ(alpha0, ObParam_i);
265 double epsilonbarGammaZ = c0/s0*s*Zprop*( DeltaEpsilon_1(alpha0, ObParam_i)
266 - DeltaEpsilon_2(alpha0, ObParam_i) )
267 - s0/c0*s*Zprop*DeltaEpsilon_3(alpha0, ObParam_i)
268 + s/(Mw0(alpha0)*Mw0(alpha0))
269 *epsilonGammaZ(alpha0, ObParam_i);
270
271 return ( 2.0*ae*af*Qe*Qf*(epsilonbarZ + s*epsilonbarGamma*Zprop)
272 + 8.0*ve*ae*vf*af*s*epsilonbarZ*Zprop
273 + 4.0*(ae*vf*af*Qe + ve*ae*af*Qf)*s*epsilonbarGammaZ*Zprop );
274}
275
276
278 const double s, const double alpha0,
279 const double ObParam_i[]) const
280{
281 double Qf = SM.getLeptons(l).getCharge();
282 double vf = vl(l, alpha0), af = al(l, alpha0);
283 return ( G3_NP(s, alpha0, Qf, vf, af, ObParam_i) );
284}
285
286
288 const double s, const double alpha0,
289 const double ObParam_i[]) const
290{
291 double Qf = SM.getQuarks(q).getCharge();
292 double vf = vq(q, alpha0), af = aq(q, alpha0);
293 return ( G3_NP(s, alpha0, Qf, vf, af, ObParam_i) );
294}
295
296
297double LEP2oblique::G1_SM0(const double s, const double alpha0, const double Qf,
298 const double vf, const double af) const
299{
301 double ve = vl(StandardModel::ELECTRON, alpha0);
302 double ae = al(StandardModel::ELECTRON, alpha0);
303 double Qe2 = Qe*Qe, Qf2 = Qf*Qf;
304 double ve2 = ve*ve, vf2 = vf*vf, ae2 = ae*ae, af2 = af*af;
305 double Mz = SM.getMz();
306 double GammaZ0 = 7.0*alpha0*Mz/(16.0*s02(alpha0)*c02(alpha0));
307 gslpp::complex denom = gslpp::complex(s - Mz*Mz, Mz*GammaZ0, false);
308 gslpp::complex chiZ = s/denom;
309
310 return ( Qe2*Qf2 + 2.0*ve*vf*Qe*Qf*chiZ.real()
311 + (ve2 + ae2)*(vf2 + af2)*chiZ.abs2() );
312}
313
314
316 const double s, const double alpha0) const
317{
318 double Qf = SM.getLeptons(l).getCharge();
319 double vf = vl(l, alpha0), af = al(l, alpha0);
320 return ( G1_SM0(s, alpha0, Qf, vf, af) );
321}
322
323
325 const double s, const double alpha0) const
326{
327 double Qf = SM.getQuarks(q).getCharge();
328 double vf = vq(q, alpha0), af = aq(q, alpha0);
329 return ( G1_SM0(s, alpha0, Qf, vf, af) );
330}
331
332
333double LEP2oblique::G2_SM0(const double s, const double alpha0, const double Qf,
334 const double vf, const double af) const
335{
337 double ve = vl(StandardModel::ELECTRON, alpha0);
338 double ae = al(StandardModel::ELECTRON, alpha0);
339 double Qe2 = Qe*Qe, Qf2 = Qf*Qf;
340 double ve2 = ve*ve, vf2 = vf*vf, ae2 = ae*ae;
341 double Mz = SM.getMz();
342 double GammaZ0 = 7.0*alpha0*Mz/(16.0*s02(alpha0)*c02(alpha0));
343 gslpp::complex denom = gslpp::complex(s - Mz*Mz, Mz*GammaZ0, false);
344 gslpp::complex chiZ = s/denom;
345
346 return ( Qe2*Qf2 + 2.0*ve*vf*Qe*Qf*chiZ.real()
347 + (ve2 + ae2)*vf2*chiZ.abs2() );
348}
349
350
352 const double s, const double alpha0) const
353{
354 double Qf = SM.getLeptons(l).getCharge();
355 double vf = vl(l, alpha0), af = al(l, alpha0);
356 return ( G2_SM0(s, alpha0, Qf, vf, af) );
357}
358
359
361 const double s, const double alpha0) const
362{
363 double Qf = SM.getQuarks(q).getCharge();
364 double vf = vq(q, alpha0), af = aq(q, alpha0);
365 return ( G2_SM0(s, alpha0, Qf, vf, af) );
366
367}
368
369
370double LEP2oblique::G3_SM0(const double s, const double alpha0, const double Qf,
371 const double vf, const double af) const
372{
374 double ve = vl(StandardModel::ELECTRON, alpha0);
375 double ae = al(StandardModel::ELECTRON, alpha0);
376 double Mz = SM.getMz();
377 double GammaZ0 = 7.0*alpha0*Mz/(16.0*s02(alpha0)*c02(alpha0));
378 gslpp::complex denom = gslpp::complex(s - Mz*Mz, Mz*GammaZ0, false);
379 gslpp::complex chiZ = s/denom;
380
381 return ( 2.0*ae*af*Qe*Qf*chiZ.real() + 4.0*ve*ae*vf*af*chiZ.abs2() );
382}
383
384
386 const double s, const double alpha0) const
387{
388 double Qf = SM.getLeptons(l).getCharge();
389 double vf = vl(l, alpha0), af = al(l, alpha0);
390 return ( G3_SM0(s, alpha0, Qf, vf, af) );
391}
392
393
395 const double s, const double alpha0) const
396{
397 double Qf = SM.getQuarks(q).getCharge();
398 double vf = vq(q, alpha0), af = aq(q, alpha0);
399 return ( G3_SM0(s, alpha0, Qf, vf, af) );
400}
401
402
404 const double s, const double alpha0,
405 const double ml) const
406{
407 double Ncf = 1.0;
408 double mf2 = ml*ml;
409 double betaf = sqrt(1.0 - 4.0*mf2/s);
410 double G1SM0 = G1_l_SM0(l, s, alpha0), G2SM0 = G2_l_SM0(l, s, alpha0);
411
412 return ( 4.0*M_PI*alpha0*alpha0/(3.0*s)*Ncf*betaf
413 *(G1SM0 + 2.0*mf2/s*G2SM0) );
414}
415
416
418 const double s, const double alpha0,
419 const double mq) const
420{
421 double Ncf = 3.0;
422 double mf2 = mq*mq;
423 double betaf = sqrt(1.0 - 4.0*mf2/s);
424 double G1SM0 = G1_q_SM0(q, s, alpha0), G2SM0 = G2_q_SM0(q, s, alpha0);
425
426 return ( 4.0*M_PI*alpha0*alpha0/(3.0*s)*Ncf*betaf
427 *(G1SM0 + 2.0*mf2/s*G2SM0) );
428}
429
430
double G1_q_SM0(const QCD::quark q, const double s, const double alpha0) const
double G3_l_NP(const QCD::lepton l, const double s, const double alpha0, const double ObParam_i[]) const
double R_q_LEP2_NP(const QCD::quark q, const double s, const double mq, const double ObParam_i[]) const
Definition: LEP2oblique.cpp:83
double sigma_l_LEP2_NP(const QCD::lepton l, const double s, const double ml, const double ObParam_i[]) const
Definition: LEP2oblique.cpp:19
double sigma_q_LEP2_NP(const QCD::quark q, const double s, const double mq, const double ObParam_i[]) const
Definition: LEP2oblique.cpp:32
double DeltaEpsilon_1(const double alpha0, const double ObParam_i[]) const
double G3_q_NP(const QCD::quark q, const double s, const double alpha0, const double ObParam_i[]) const
double G1_l_SM0(const QCD::lepton l, const double s, const double alpha0) const
double epsilonGammaZ(const double alpha0, const double ObParam_i[]) const
double G3_q_SM0(const QCD::quark q, const double s, const double alpha0) const
double al(const QCD::lepton l, const double alpha0) const
double s02(const double alpha0) const
Definition: LEP2oblique.h:74
double Mw0(const double alpha0) const
Definition: LEP2oblique.h:68
double vq(const QCD::quark q, const double alpha0) const
double G1_q_NP(const QCD::quark q, const double s, const double alpha0, const double ObParam_i[]) const
double G2_l_SM0(const QCD::lepton l, const double s, const double alpha0) const
double AFB_l_LEP2_NP(const QCD::lepton l, const double s, const double ml, const double ObParam_i[]) const
Definition: LEP2oblique.cpp:45
double G1_NP(const double s, const double alpha0, const double Qf, const double vf, const double af, const double ObParam_i[]) const
double G1_l_NP(const QCD::lepton l, const double s, const double alpha0, const double ObParam_i[]) const
double G3_SM0(const double s, const double alpha0, const double Qf, const double vf, const double af) const
double vl(const QCD::lepton l, const double alpha0) const
double aq(const QCD::quark q, const double alpha0) const
double G2_q_SM0(const QCD::quark q, const double s, const double alpha0) const
double G3_l_SM0(const QCD::lepton l, const double s, const double alpha0) const
double DeltaEpsilon_3(const double alpha0, const double ObParam_i[]) const
double AFB_q_LEP2_NP(const QCD::quark q, const double s, const double mq, const double ObParam_i[]) const
Definition: LEP2oblique.cpp:64
double G1_SM0(const double s, const double alpha0, const double Qf, const double vf, const double af) const
double c02(const double alpha0) const
Definition: LEP2oblique.h:84
double sigma_l_LEP2_SM0(const QCD::lepton l, const double s, const double alpha0, const double ml) const
double epsilonGammaGamma(const double alpha0, const double ObParam_i[]) const
double G3_NP(const double s, const double alpha0, const double Qf, const double vf, const double af, const double ObParam_i[]) const
double epsilonZZ(const double alpha0, const double ObParam_i[]) const
LEP2oblique(const StandardModel &SM_i)
LEP2oblique constructor.
Definition: LEP2oblique.cpp:11
double sigma_q_LEP2_SM0(const QCD::quark q, const double s, const double alpha0, const double mq) const
double G2_SM0(const double s, const double alpha0, const double Qf, const double vf, const double af) const
double alpha_at_s(const double s) const
Definition: LEP2oblique.h:62
double DeltaEpsilon_2(const double alpha0, const double ObParam_i[]) const
const StandardModel & SM
Definition: LEP2oblique.h:52
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
quark
An enum type for quarks.
Definition: QCD.h:323
@ UP
Definition: QCD.h:324
@ BOTTOM
Definition: QCD.h:329
@ DOWN
Definition: QCD.h:325
@ STRANGE
Definition: QCD.h:327
@ CHARM
Definition: QCD.h:326
lepton
An enum type for leptons.
Definition: QCD.h:310
@ ELECTRON
Definition: QCD.h:312
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:536
A model class for the Standard Model.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
const double getMz() const
A get method to access the mass of the boson .
Test Observable.