STU.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #include "STU.h"
9 #include "StandardModel.h"
10 
11 STU::STU(const StandardModel& SM_i)
12 : ThObservable(SM_i), myTHDM(static_cast<const THDM*> (&SM_i))
13 
14 {
15  mycache = new THDMcache();
16 };
17 
19 {
20  return 0.0;
21 }
22 
24 
25 double STU::F(const double m02, const double m12) const {
26  double F;
27 
28  if(m02 == 0. && m12 != 0.) {
29  F=0.5 * m12;
30  } else if(m02 != 0. && m12 == 0.){
31  F=0.5 * m02;
32  } else if((m02 == 0. && m12 == 0.) || (fabs(m02-m12) < LEPS)){
33  F=0.;
34  } else if (m02 != 0 && m12 != 0){
35  F=0.5 * (m02 + m12) - (m02 * m12) / (m02 - m12) * log(m02 / m12);
36  } else
37  throw std::runtime_error("Error in THDM::F()");
38  return (F);
39 }
40 
42 
44 : STU(SM_i)
45 {}
46 
48 {
49  double mHl=myTHDM->getMHl();
50  double mHl2=mHl*mHl;
51  double mHh2=myTHDM->getmHh2();
52  double mA2=myTHDM->getmA2();
53  double mHp2=myTHDM->getmHp2();
54  double sin_ba=myTHDM->getsin_ba();
55  double sin2_ba = sin_ba*sin_ba;
56  double cos2_ba = 1. - sin2_ba;
57  double MZ=myTHDM->getMz();
58  double MZ2 = MZ*MZ;
59 
60  gslpp::complex B00prime_MZ2_MZ2_mHh2_mA2;
61  gslpp::complex B00prime_MZ2_MZ2_mHp2_mHp2;
62  gslpp::complex B00prime_MZ2_MZ2_mHl2_mA2;
63  gslpp::complex B00prime_MZ2_MZ2_MZ2_mHh2;
64  gslpp::complex B00prime_MZ2_MZ2_MZ2_mHl2;
65  gslpp::complex B0prime_MZ2_MZ2_MZ2_mHh2;
66  gslpp::complex B0prime_MZ2_MZ2_MZ2_mHl2;
67 
68  B00prime_MZ2_MZ2_mHh2_mA2 = - mycache->B00_MZ2_MZ2_mHh2_mA2(MZ2,mHh2,mA2) + mycache->B00_MZ2_0_mHh2_mA2(MZ2,mHh2,mA2);
69  B00prime_MZ2_MZ2_mHp2_mHp2 = - mycache->B00_MZ2_MZ2_mHp2_mHp2(MZ2,mHp2) + mycache->B00_MZ2_0_mHp2_mHp2(MZ2,mHp2);
70  B00prime_MZ2_MZ2_mHl2_mA2 = - mycache->B00_MZ2_MZ2_mHl2_mA2(MZ2,mHl2,mA2) + mycache->B00_MZ2_0_mHl2_mA2(MZ2,mHl2,mA2);
71  B00prime_MZ2_MZ2_MZ2_mHh2 = - mycache->B00_MZ2_MZ2_MZ2_mHh2(MZ2,mHh2) + mycache->B00_MZ2_0_MZ2_mHh2(MZ2,mHh2);
72  B00prime_MZ2_MZ2_MZ2_mHl2 = - mycache->B00_MZ2_MZ2_MZ2_mHl2(MZ2,mHl2) + mycache->B00_MZ2_0_MZ2_mHl2(MZ2,mHl2);
73  B0prime_MZ2_MZ2_MZ2_mHh2 = mycache->B0_MZ2_MZ2_MZ2_mHh2(MZ2,mHh2) - mycache->B0_MZ2_0_MZ2_mHh2(MZ2,mHh2);
74  B0prime_MZ2_MZ2_MZ2_mHl2 = mycache->B0_MZ2_MZ2_MZ2_mHl2(MZ2,mHl2) - mycache->B0_MZ2_0_MZ2_mHl2(MZ2,mHl2);
75 
76  return 1./MZ2/M_PI*(sin2_ba * B00prime_MZ2_MZ2_mHh2_mA2.real() - B00prime_MZ2_MZ2_mHp2_mHp2.real()
77  + cos2_ba * (B00prime_MZ2_MZ2_mHl2_mA2.real() + B00prime_MZ2_MZ2_MZ2_mHh2.real()
78  - B00prime_MZ2_MZ2_MZ2_mHl2.real() - MZ2 * B0prime_MZ2_MZ2_MZ2_mHh2.real()
79  + MZ2 * B0prime_MZ2_MZ2_MZ2_mHl2.real()));
80 }
81 
83 : STU(SM_i)
84 {}
85 
87 {
88  double mHl=myTHDM->getMHl();
89  double mHl2=mHl*mHl;
90  double mHh2=myTHDM->getmHh2();
91  double mA2=myTHDM->getmA2();
92  double mHp2=myTHDM->getmHp2();
93  double sin_ba=myTHDM->getsin_ba();
94  double sin2_ba = sin_ba*sin_ba;
95  double cos2_ba = 1. - sin2_ba;
96  double MZ=myTHDM->getMz();
97  double MZ2 = MZ*MZ;
98  double MW = myTHDM->Mw();
99  double MW2 = MW*MW;
100  double s_W2 = myTHDM->sW2();
101 
102  gslpp::complex B0_MZ2_0_MZ2_mHh2;
103  gslpp::complex B0_MZ2_0_MZ2_mHl2;
104  gslpp::complex B0_MZ2_0_MW2_mHh2;
105  gslpp::complex B0_MZ2_0_MW2_mHl2;
106 
107  B0_MZ2_0_MZ2_mHh2 = mycache->B0_MZ2_0_MZ2_mHh2(MZ2,mHh2);
108  B0_MZ2_0_MZ2_mHl2 = mycache->B0_MZ2_0_MZ2_mHl2(MZ2,mHl2);
109  B0_MZ2_0_MW2_mHh2 = mycache->B0_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2);
110  B0_MZ2_0_MW2_mHl2 = mycache->B0_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2);
111 
112  return 1. / 16. / M_PI / MW2 / s_W2 * (F(mHp2,mA2)
113  + sin2_ba * (F(mHp2,mHh2) - F(mA2,mHh2)) + cos2_ba * (F(mHp2,mHl2)
114  - F(mA2,mHl2) + F(MW2,mHh2) - F(MW2,mHl2) - F(MZ2,mHh2)
115  + F(MZ2,mHl2) + 4. * MZ2 * (B0_MZ2_0_MZ2_mHh2.real() - B0_MZ2_0_MZ2_mHl2.real())
116  - 4. * MW2 * (B0_MZ2_0_MW2_mHh2.real() - B0_MZ2_0_MW2_mHl2.real())));
117 }
118 
120 : STU(SM_i)
121 {
122  myDeltaS = new DeltaS(SM_i);
123 }
124 
126 {
127  double mHl=myTHDM->getMHl();
128  double mHl2=mHl*mHl;
129  double mHh2=myTHDM->getmHh2();
130  double mA2=myTHDM->getmA2();
131  double mHp2=myTHDM->getmHp2();
132  double sin_ba=myTHDM->getsin_ba();
133  double sin2_ba = sin_ba*sin_ba;
134  double cos2_ba = 1. - sin2_ba;
135  double MZ=myTHDM->getMz();
136  double MZ2 = MZ*MZ;
137  double MW = myTHDM->Mw();
138  double MW2 = MW*MW;
139 
140  gslpp::complex B00prime_MZ2_MW2_mA2_mHp2;
141  gslpp::complex B00prime_MZ2_MW2_mHp2_mHp2;
142  gslpp::complex B00prime_MZ2_MW2_mHh2_mHp2;
143  gslpp::complex B00prime_MZ2_MW2_mHl2_mHp2;
144  gslpp::complex B00prime_MZ2_MW2_MW2_mHh2;
145  gslpp::complex B00prime_MZ2_MW2_MW2_mHl2;
146  gslpp::complex B0prime_MZ2_MW2_MW2_mHh2;
147  gslpp::complex B0prime_MZ2_MW2_MW2_mHl2;
148 
149  B00prime_MZ2_MW2_mA2_mHp2 = - mycache->B00_MZ2_MW2_mA2_mHp2(MZ2,MW2,mA2,mHp2) + mycache->B00_MZ2_0_mA2_mHp2(MZ2,mA2,mHp2);
150  B00prime_MZ2_MW2_mHp2_mHp2 = - mycache->B00_MZ2_MW2_mHp2_mHp2(MZ2,MW2,mHp2) + mycache->B00_MZ2_0_mHp2_mHp2(MZ2,mHp2);
151  B00prime_MZ2_MW2_mHh2_mHp2 = - mycache->B00_MZ2_MW2_mHh2_mHp2(MZ2,MW2,mHh2,mHp2) + mycache->B00_MZ2_0_mHh2_mHp2(MZ2,mHh2,mHp2);
152  B00prime_MZ2_MW2_mHl2_mHp2 = - mycache->B00_MZ2_MW2_mHl2_mHp2(MZ2,MW2,mHl2,mHp2) + mycache->B00_MZ2_0_mHl2_mHp2(MZ2,mHl2,mHp2);
153  B00prime_MZ2_MW2_MW2_mHh2 = - mycache->B00_MZ2_MW2_MW2_mHh2(MZ2,MW2,mHh2) + mycache->B00_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2);
154  B00prime_MZ2_MW2_MW2_mHl2 = - mycache->B00_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2) + mycache->B00_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2);
155  B0prime_MZ2_MW2_MW2_mHh2 = mycache->B0_MZ2_MW2_MW2_mHh2(MZ2,MW2,mHh2) - mycache->B0_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2);
156  B0prime_MZ2_MW2_MW2_mHl2 = mycache->B0_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2) - mycache->B0_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2);
157 
158  return - myDeltaS->computeThValue() + 1. / M_PI / MZ2 * (B00prime_MZ2_MW2_mA2_mHp2.real()
159  - 2. * B00prime_MZ2_MW2_mHp2_mHp2.real() + sin2_ba * B00prime_MZ2_MW2_mHh2_mHp2.real()
160  + cos2_ba * (B00prime_MZ2_MW2_mHl2_mHp2.real() + B00prime_MZ2_MW2_MW2_mHh2.real()
161  - B00prime_MZ2_MW2_MW2_mHl2.real() - MW2 * B0prime_MZ2_MW2_MW2_mHh2.real()
162  + MW2 * B0prime_MZ2_MW2_MW2_mHl2.real()));
163 }
gslpp::complex B0_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:150
gslpp::complex B0_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:94
gslpp::complex B00_MZ2_0_mHh2_mHp2(const double MZ2, const double mHh2, const double mHp2) const
Definition: THDMcache.cpp:236
gslpp::complex B00_MZ2_MZ2_mHp2_mHp2(const double MZ2, const double mHp2) const
Definition: THDMcache.cpp:460
gslpp::complex B00_MZ2_MZ2_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const
Definition: THDMcache.cpp:432
double computeThValue()
THDM contribution to .
Definition: STU.cpp:47
gslpp::complex B00_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:306
virtual double sW2(const double Mw_i) const
The square of the sine of the weak mixing angle in the on-shell scheme, denoted as ...
gslpp::complex B0_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:136
gslpp::complex B00_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:488
double getsin_ba() const
Definition: THDM.h:206
gslpp::complex B00_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:320
gslpp::complex B0_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:108
gslpp::complex B00_MZ2_0_mHl2_mHp2(const double MZ2, const double mHl2, const double mHp2) const
Definition: THDMcache.cpp:264
gslpp::complex B00_MZ2_0_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const
Definition: THDMcache.cpp:222
double F(const double m02, const double m12) const
function F(m02,m12) used for THDM. Remember that this function is defined for THDM while for SUSY we ...
Definition: STU.cpp:25
A class for the caching of some THDM objects.
Definition: THDMcache.h:27
gslpp::complex B00_MZ2_0_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const
Definition: THDMcache.cpp:250
const double & real() const
const THDM * myTHDM
Definition: STU.h:37
double getmHp2() const
Definition: THDM.h:262
A class for a model prediction of an observable.
Definition: ThObservable.h:22
gslpp::complex B00_MZ2_0_mA2_mHp2(const double MZ2, const double mA2, const double mHp2) const
Definition: THDMcache.cpp:208
STU(const StandardModel &SM_i)
Constructor.
Definition: STU.cpp:11
gslpp::complex B00_MZ2_MW2_mHp2_mHp2(const double MZ2, const double MW2, const double mHp2) const
Definition: THDMcache.cpp:390
A model class for the Standard Model.
double computeThValue()
THDM contribution to .
Definition: STU.cpp:86
double getmHh2() const
Definition: THDM.h:230
#define LEPS
gslpp::complex B00_MZ2_0_mHp2_mHp2(const double MZ2, const double mHp2) const
Definition: THDMcache.cpp:278
gslpp::complex B00_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:334
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
double getmA2() const
Definition: THDM.h:246
gslpp::complex B0_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:164
double computeThValue()
Empty constructor.
Definition: STU.cpp:18
gslpp::complex B00_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:404
gslpp::complex B0_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:122
gslpp::complex B00_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
Definition: THDMcache.cpp:292
gslpp::complex B00_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
Definition: THDMcache.cpp:418
double computeThValue()
Definition: STU.cpp:125
A base class symmetric Two-Higgs-Doublet models.
Definition: THDM.h:94
DeltaS * myDeltaS
Definition: STU.h:98
gslpp::complex B00_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:474
An observable class for the electroweak Peskin-Takeuchi pseudo-observables.
Definition: STU.h:24
DeltaT(const StandardModel &SM_i)
Constructor for DeltaT.
Definition: STU.cpp:82
complex log(const complex &z)
THDMcache * mycache
Definition: STU.h:49
gslpp::complex B00_MZ2_MW2_mHh2_mHp2(const double MZ2, const double MW2, const double mHh2, const double mHp2) const
Definition: THDMcache.cpp:362
gslpp::complex B0_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const
Definition: THDMcache.cpp:192
DeltaU(const StandardModel &SM_i)
THDM contribution to .
Definition: STU.cpp:119
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
double getMHl() const
A get method to retrieve the Higgs mass .
gslpp::complex B00_MZ2_MZ2_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const
Definition: THDMcache.cpp:446
gslpp::complex B00_MZ2_MW2_mHl2_mHp2(const double MZ2, const double MW2, const double mHl2, const double mHp2) const
Definition: THDMcache.cpp:376
double getMz() const
A get method to access the mass of the boson .
gslpp::complex B0_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const
Definition: THDMcache.cpp:178
gslpp::complex B00_MZ2_MW2_mA2_mHp2(const double MZ2, const double MW2, const double mA2, const double mHp2) const
Definition: THDMcache.cpp:348
Definition: STU.h:53
DeltaS(const StandardModel &SM_i)
Constructor for DeltaS.
Definition: STU.cpp:43