a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
EWPO.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2015 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "EWPO.h"
9#include "THDM.h"
10#include "THDMcache.h"
11
13: ThObservable(SM_i), myTHDM(static_cast<const THDM*> (&SM_i))
14{
15 mycache = new THDMcache(SM_i);
16};
17
19{
20 return 0.0;
21}
22
24{
25 double Ale=myTHDM->getAle();
26 double MZ=myTHDM->getMz();
27 double MZ2=MZ*MZ;
28// double MW=myTHDM->Mw_tree();
29// double MW2=MW*MW;
30 double s02=myTHDM->s02();
31 double c02=myTHDM->c02();
32// double bma=myTHDM->getbma();
33// double CBA2=cos(bma)*cos(bma);
34// double SBA2=sin(bma)*sin(bma);
35// double mHl2=myTHDM->getmHl2();
36// double mHh2=myTHDM->getmHh2();
37// double mA2=myTHDM->getmA2();
38// double mHp2=myTHDM->getmHp2();
39
40 double prefactor=Ale/(4.*c02*MZ2*M_PI*s02*s02);
41
42 double part_A=0.;
43// double part_A=-(c02*(mycache->A0_MZ2_mHp2(MZ2,mHp2)*(1.0 -10.0*c02*c02 +16.0*c02*s02 -6.0*s02*s02)
44// -9.0*mycache->A0_MZ2_MW2(MZ2,MW2)*(13.0*c02*c02 -2.0*c02*s02 +s02*s02)))/2.;
45
46
47// double B0_MZ2_0_MW2_mHh2 = mycache->B0_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2).abs();
48// double B0_MZ2_0_MW2_mHl2 = mycache->B0_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2).abs();
49// double Re_B0_MZ2_MW2_MW2_mHh2 = mycache->B0_MZ2_MW2_MW2_mHh2(MZ2,MW2,mHh2).real();
50// double Re_B0_MZ2_MW2_MW2_mHl2 = mycache->B0_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2).real();
51// double Re_B0_MZ2_MZ2_MZ2_mHh2 = mycache->B0_MZ2_MZ2_MZ2_mHh2(MZ2,mHh2).real();
52// double Re_B0_MZ2_MZ2_MZ2_mHl2 = mycache->B0_MZ2_MZ2_MZ2_mHl2(MZ2,mHl2).real();
53
54// double B00_MZ2_0_mA2_mHp2 = mycache->B00_MZ2_0_mA2_mHp2(MZ2,mA2,mHp2).abs();
55// double B00_MZ2_0_mHh2_mHp2 = mycache->B00_MZ2_0_mHh2_mHp2(MZ2,mHh2,mHp2).abs();
56// double B00_MZ2_0_mHh2_MW2 = mycache->B00_MZ2_0_mHh2_MW2(MZ2,mHh2,MW2).abs();
57// double B00_MZ2_0_mHl2_mHp2 = mycache->B00_MZ2_0_mHl2_mHp2(MZ2,mHl2,mHp2).abs();
58// double B00_MZ2_0_mHl2_MW2 = mycache->B00_MZ2_0_mHl2_MW2(MZ2,mHl2,MW2).abs();
59// double B00_MZ2_0_mHp2_mHp2 = mycache->B00_MZ2_0_mHp2_mHp2(MZ2,mHp2).abs();
60// double B00_MZ2_0_MW2_mHl2 = mycache->B00_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2).abs();
61// double B00_MZ2_0_MW2_MZ2 = mycache->B00_MZ2_0_MW2_MZ2(MZ2,MW2).abs();
62// double B00_MZ2_0_MZ2_MW2 = mycache->B00_MZ2_0_MZ2_MW2(MZ2,MW2).abs();
63
64// double Re_B00_MZ2_MW2_mA2_mHp2 = mycache->B00_MZ2_MW2_mA2_mHp2(MZ2,MW2,mA2,mHp2).real();
65// double Re_B00_MZ2_MW2_mHh2_mHp2 = mycache->B00_MZ2_MW2_mHh2_mHp2(MZ2,MW2,mHh2,mHp2).real();
66// double Re_B00_MZ2_MW2_mHh2_MW2 = mycache->B00_MZ2_MW2_mHh2_MW2(MZ2,MW2,mHh2).real();
67// double Re_B00_MZ2_MW2_mHl2_mHp2 = mycache->B00_MZ2_MW2_mHl2_mHp2(MZ2,MW2,mHl2,mHp2).real();
68// double Re_B00_MZ2_MW2_mHl2_MW2 = mycache->B00_MZ2_MW2_mHl2_MW2(MZ2,MW2,mHl2).real();
69// double Re_B00_MZ2_MW2_MW2_mHl2 = mycache->B00_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2).real();
70// double Re_B00_MZ2_MW2_MW2_MZ2 = mycache->B00_MZ2_MW2_MW2_MZ2(MZ2,MW2).real();
71// double Re_B00_MZ2_MW2_MZ2_MW2 = mycache->B00_MZ2_MW2_MZ2_MW2(MZ2,MW2).real();
72// double Re_B00_MZ2_MZ2_mHh2_mA2 = mycache->B00_MZ2_MZ2_mHh2_mA2(MZ2,mHh2,mA2).real();
73// double Re_B00_MZ2_MZ2_mHh2_MZ2 = mycache->B00_MZ2_MZ2_mHh2_MZ2(MZ2,mHh2).real();
74// double Re_B00_MZ2_MZ2_mHl2_mA2 = mycache->B00_MZ2_MZ2_mHl2_mA2(MZ2,mHl2,mA2).real();
75// double Re_B00_MZ2_MZ2_mHl2_MZ2 = mycache->B00_MZ2_MZ2_mHl2_MZ2(MZ2,mHl2).real();
76// double Re_B00_MZ2_MZ2_mHp2_mHp2 = mycache->B00_MZ2_MZ2_mHp2_mHp2(MZ2,mHp2).real();
77//
78// double B00p_0_mHp2_mHp2 = mycache->B00p_0_mHp2_mHp2(MZ2,mHp2).abs(); /*check whether this is the correct PV function!*/
79
80
81
82
83
84 double part_B=0.;
85// double part_B=c02*c02*c02*mycache->Re_B00_MZ2_MZ2_mHp2_mHp2(MZ2,mHp2)
87// +mycache->B00_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2)
88// +mycache->B00_MZ2_0_MW2_MZ2(MZ2,MW2)
89// -mycache->B00_MZ2_0_MZ2_MW2(MZ2,MW2)
90// +mycache->Re_B00_MZ2_MW2_mA2_mHp2(MZ2,MW2,mA2,mHp2)
91// -mycache->Re_B00_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2)
92// -mycache->Re_B00_MZ2_MW2_MW2_MZ2(MZ2,MW2)
93// +mycache->Re_B00_MZ2_MW2_MZ2_MW2(MZ2,MW2)
94// -CBA2*mycache->B00_MZ2_0_mHl2_mHp2(MZ2,mHl2,mHp2)
95// -CBA2*mycache->B00_MZ2_0_mHh2_MW2(MZ2,mHh2,MW2)
96// +CBA2*mycache->Re_B00_MZ2_MW2_mHl2_mHp2(MZ2,MW2,mHl2,mHp2)
97// +CBA2*mycache->Re_B00_MZ2_MW2_mHh2_MW2(MZ2,MW2,mHh2)
98// -SBA2*mycache->B00_MZ2_0_mHl2_MW2(MZ2,mHl2,MW2)
99// -SBA2*mycache->B00_MZ2_0_mHh2_mHp2(MZ2,mHh2,mHp2)
100// +SBA2*mycache->Re_B00_MZ2_MW2_mHl2_MW2(MZ2,MW2,mHl2)
101// +SBA2*mycache->Re_B00_MZ2_MW2_mHh2_mHp2(MZ2,MW2,mHh2,mHp2))*s02
102// -c02*(mycache->Re_B00_MZ2_MW2_mA2_mHp2(MZ2,MW2,mA2,mHp2)
103// -mycache->Re_B00_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2)
104// -mycache->Re_B00_MZ2_MW2_MW2_MZ2(MZ2,MW2)
105// +mycache->Re_B00_MZ2_MW2_MZ2_MW2(MZ2,MW2)
106// +mycache->Re_B00_MZ2_MZ2_mHl2_MZ2(MZ2,mHl2)
108// +mycache->Re_B00_MZ2_MW2_mHl2_MW2(MZ2,MW2,mHl2)*SBA2
109// +mycache->Re_B00_MZ2_MW2_mHh2_mHp2(MZ2,MW2,mHh2,mHp2)*SBA2
110// -mycache->Re_B00_MZ2_MZ2_mHl2_MZ2(MZ2,mHl2)*SBA2
111// -mycache->Re_B00_MZ2_MZ2_mHh2_mA2(MZ2,mHh2,mA2)*SBA2
117// +4.0*mycache->B00_MZ2_0_mHp2_mHp2(MZ2,mHp2)*s02*s02
118// +4.0*mycache->B00p_0_mHp2_mHp2(MZ2,mHp2)*MZ2*s02*s02 /*check whether this is the correct PV function!*/
119// -mycache->Re_B00_MZ2_MZ2_mHp2_mHp2(MZ2,mHp2)*s02*s02
120// +CBA2*(mycache->Re_B00_MZ2_MW2_mHl2_mHp2(MZ2,MW2,mHl2,mHp2)
121// +mycache->Re_B00_MZ2_MW2_mHh2_MW2(MZ2,MW2,mHh2)
122// -mycache->Re_B00_MZ2_MZ2_mHl2_mA2(MZ2,mHl2,mA2)
123// -mycache->Re_B00_MZ2_MZ2_mHh2_MZ2(MZ2,mHh2)
124// +MZ2*mycache->Re_B0_MZ2_MZ2_mHh2_MZ2(MZ2,mHh2)
129// +2.0*(2.0*mycache->B00_MZ2_0_mHp2_mHp2(MZ2,mHp2)
130// -mycache->Re_B00_MZ2_MZ2_mHp2_mHp2(MZ2,mHp2))*s02));
131
132 return prefactor*(part_A+part_B);
133}
134
136{
137// double mHl2=myTHDM->getmHl2();
138// double mA=myTHDM->getMA();
139// double mHh=myTHDM->getMHh();
140// double mHp=myTHDM->getMHp();
141// double vev=myTHDM->v();
142// double sina=myTHDM->computeSina();
143// double cosa=myTHDM->computeCosa();
144// double tanb=myTHDM->getTanb();
145// double sinb=myTHDM->getSinb();
146// double cosb=myTHDM->getCosb();
147// double sin_ba=myTHDM->getsin_ba();
148// double m12_2=myTHDM->getM12_2();
149
150// get MW shift
151// calculate deltagV and deltagA = g(MW_corr)-g(MW_SM)+deltagloop
152// gslpp::complex deltagVl=0.0;
153// gslpp::complex deltagAl=0.0;
154// calculate the Deltas:
155// double DeltaAl=AlSM*(deltagVl.real()/gVlTL
156// +deltagAl.real()/gAlTL
157// -2*(gVlTL*deltagVl.real()+gAlTL*deltagAl.real())/(gVlTL*gVlTL+gAlTL*gAlTL));
159// double DeltaAc=AcSM*(deltagVc.real()/gVuTL
160// +deltagAc.real()/gAuTL
161// -2*(gVuTL*deltagVc.real()+gAuTL*deltagAc.real())/(gVuTL*gVuTL+gAuTL*gAuTL));
162// double DeltaAb=AbSM*(deltagVb.real()/gVdTL
163// +deltagAb.real()/gAdTL
164// -2*(gVdTL*deltagVb.real()+gAdTL*deltagAb.real())/(gVdTL*gVdTL+gAdTL*gAdTL));
175
176}
177
178/*******************************************************************************
179 * Observables *
180 * ****************************************************************************/
181
183: EWPO(SM_i)
184{}
185
187{
189 double DeltaAl=0.0;
190 double AlSM=myTHDM->A_f(SM.getLeptons(SM.ELECTRON));
191 return AlSM+DeltaAl;
192}
193
195: EWPO(SM_i)
196{}
197
199{
201 double DeltaPpoltau=0.0;
202 double PpoltauSM=myTHDM->A_f(SM.getLeptons(SM.TAU));
203 return PpoltauSM+DeltaPpoltau;
204}
205
207: EWPO(SM_i)
208{}
209
211{
213 double DeltaAc=0.0;
214 double AcSM=myTHDM->A_f(SM.getQuarks(SM.CHARM));
215 return AcSM+DeltaAc;
216}
217
219: EWPO(SM_i)
220{}
221
223{
225 double DeltaAb=0.0;
226 double AbSM=myTHDM->A_f(SM.getQuarks(SM.BOTTOM));
227 return AbSM+DeltaAb;
228}
229
231: EWPO(SM_i)
232{}
233
235{
237 double DeltaAFBl0=0.0;
238 double AFBl0SM=myTHDM->AFB(SM.getLeptons(SM.ELECTRON));
239 return AFBl0SM+DeltaAFBl0;
240}
241
243: EWPO(SM_i)
244{}
245
247{
249 double DeltaAFBc0=0.0;
250 double AFBc0SM=myTHDM->AFB(SM.getQuarks(SM.CHARM));
251 return AFBc0SM+DeltaAFBc0;
252}
253
255: EWPO(SM_i)
256{}
257
259{
261 double DeltaAFBb0=0.0;
262 double AFBb0SM=myTHDM->AFB(SM.getQuarks(SM.BOTTOM));
263 return AFBb0SM+DeltaAFBb0;
264}
265
267: EWPO(SM_i)
268{}
269
271{
273 double DeltaGammaZ=0.0;
274 double GammaZSM=myTHDM->Gamma_Z();
275 return GammaZSM+DeltaGammaZ;
276}
277
279: EWPO(SM_i)
280{}
281
283{
285 double DeltaRl0=0.0;
286 double Rl0SM=myTHDM->R0_f(SM.getLeptons(SM.ELECTRON));
287 return Rl0SM+DeltaRl0;
288}
289
291: EWPO(SM_i)
292{}
293
295{
297 double DeltaRc0=0.0;
298 double Rc0SM=myTHDM->R0_f(SM.getQuarks(SM.CHARM));
299 return Rc0SM+DeltaRc0;
300}
301
303: EWPO(SM_i)
304{}
305
307{
309 double DeltaRb0=0.0;
310 double Rb0SM=myTHDM->R0_f(SM.getQuarks(SM.BOTTOM));
311 return Rb0SM+DeltaRb0;
312}
313
315: EWPO(SM_i)
316{}
317
319{
321 double DeltaSigmahad=0.0;
322 double SigmahadSM=myTHDM->sigma0_had();
323 return SigmahadSM+DeltaSigmahad;
324}
325
327: EWPO(SM_i)
328{}
329
331{
333 double DeltaGammaW=0.0;
334 double GammaWSM=myTHDM->GammaW();
335 return GammaWSM+DeltaGammaW;
336}
337
339: EWPO(SM_i)
340{}
341
343{
345 double Deltasinthetaeffl_2=0.0;
346 double sinthetaeffl_2SM=myTHDM->sin2thetaEff(SM.getLeptons(SM.ELECTRON));
347 return sinthetaeffl_2SM+Deltasinthetaeffl_2;
348}
349
351: EWPO(SM_i)
352{}
353
355{
356 double s02=myTHDM->s02();
357 double c02=myTHDM->c02();
358 double MWSM=myTHDM->Mw();
359 return MWSM - s02*MWSM*dDelta_r()/(2.*(c02-s02));
360}
double computeThValue()
The forward-backward assymetry for bottom quarks at the -pole in the THDM.
Definition: EWPO.cpp:258
AFBb0THDM(const StandardModel &SM_i)
AFBb0THDM constructor.
Definition: EWPO.cpp:254
AFBc0THDM(const StandardModel &SM_i)
AFBc0THDM constructor.
Definition: EWPO.cpp:242
double computeThValue()
The forward-backward assymetry for charm quarks at the -pole in the THDM.
Definition: EWPO.cpp:246
AFBl0THDM(const StandardModel &SM_i)
AFBl0THDM constructor.
Definition: EWPO.cpp:230
double computeThValue()
The forward-backward assymetry for electrons at the -pole in the THDM.
Definition: EWPO.cpp:234
double computeThValue()
The left-right asymmetry in at the -pole in the THDM.
Definition: EWPO.cpp:222
AbTHDM(const StandardModel &SM_i)
AbTHDM constructor.
Definition: EWPO.cpp:218
double computeThValue()
The left-right asymmetry in at the -pole in the THDM.
Definition: EWPO.cpp:210
AcTHDM(const StandardModel &SM_i)
AcTHDM constructor.
Definition: EWPO.cpp:206
AlTHDM(const StandardModel &SM_i)
AlTHDM constructor.
Definition: EWPO.cpp:182
double computeThValue()
The left-right asymmetry in at the -pole in the THDM.
Definition: EWPO.cpp:186
An observable class to calculate the electroweak precision observables in the THDM.
Definition: EWPO.h:25
THDMcache * mycache
Definition: EWPO.h:40
void computeTHDMcouplings()
Definition: EWPO.cpp:135
double dDelta_r()
Definition: EWPO.cpp:23
EWPO(const StandardModel &SM_i)
EWPO constructor.
Definition: EWPO.cpp:12
double computeThValue()
Definition: EWPO.cpp:18
const THDM * myTHDM
Definition: EWPO.h:39
GammaWTHDM(const StandardModel &SM_i)
GammaWTHDM constructor.
Definition: EWPO.cpp:326
double computeThValue()
The total width of the boson, . in GeV in the THDM.
Definition: EWPO.cpp:330
double computeThValue()
The total decay width of the boson, in the THDM.
Definition: EWPO.cpp:270
GammaZTHDM(const StandardModel &SM_i)
GammaZTHDM constructor.
Definition: EWPO.cpp:266
double computeThValue()
Definition: EWPO.cpp:354
MWTHDM(const StandardModel &SM_i)
MWTHDM constructor.
Definition: EWPO.cpp:350
PpoltauTHDM(const StandardModel &SM_i)
PpoltauTHDM constructor.
Definition: EWPO.cpp:194
double computeThValue()
The left-right asymmetry in at the -pole in the THDM.
Definition: EWPO.cpp:198
@ BOTTOM
Definition: QCD.h:329
@ CHARM
Definition: QCD.h:326
@ ELECTRON
Definition: QCD.h:312
@ TAU
Definition: QCD.h:316
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
double computeThValue()
Ratio between the decay width of to hadrons and to bottom quarks \ in the THDM.
Definition: EWPO.cpp:306
Rb0THDM(const StandardModel &SM_i)
Rb0THDM constructor.
Definition: EWPO.cpp:302
Rc0THDM(const StandardModel &SM_i)
Rc0THDM constructor.
Definition: EWPO.cpp:290
double computeThValue()
Ratio between the decay width of to hadrons and to charm quarks in the THDM.
Definition: EWPO.cpp:294
double computeThValue()
Ratio between the decay width of to hadrons and to electrons in the THDM.
Definition: EWPO.cpp:282
Rl0THDM(const StandardModel &SM_i)
Rl0THDM constructor.
Definition: EWPO.cpp:278
double computeThValue()
Definition: EWPO.cpp:318
SigmahadTHDM(const StandardModel &SM_i)
SigmahadTHDM constructor.
Definition: EWPO.cpp:314
A model class for the Standard Model.
virtual const double sin2thetaEff(const Particle f) const
The effective weak mixing angle for at the the -mass scale.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
virtual const double AFB(const Particle f) const
const double getMz() const
A get method to access the mass of the boson .
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, .
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
virtual const double A_f(const Particle f) const
The left-right asymmetry in at the -pole, .
virtual const double GammaW(const Particle fi, const Particle fj) const
A partial decay width of the boson decay into a SM fermion pair.
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 .
const double getAle() const
A get method to retrieve the fine-structure constant .
A base class for symmetric Two-Higgs-Doublet models.
Definition: THDM.h:120
A class for the caching of some THDM objects.
Definition: THDMcache.h:29
A class for a model prediction of an observable.
Definition: ThObservable.h:25
const StandardModel & SM
A reference to an object of StandardMode class.
Definition: ThObservable.h:121
double computeThValue()
The effective weak mixing angle for at the the -mass scale.
Definition: EWPO.cpp:342
sinthetaeffl_2THDM(const StandardModel &SM_i)
sinthetaeffl_2THDM constructor.
Definition: EWPO.cpp:338