a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
THDMWSTU.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8
9#include "THDMWSTU.h"
10#include "THDMW.h"
11#include "THDMWcache.h"
12
13//Theoretical formulae taken from https://arxiv.org/pdf/0907.2696.pdf
14
16: ThObservable(SM_i), myTHDMW(static_cast<const THDMW&> (SM_i))
17
18{
19 mycache = new THDMWcache(SM_i);
20};
21
23{
24 return 0.0;
25}
26
27double THDMWSTU::F(const double m02, const double m12) const {
28 double F;
29
30 if(m02 == 0. && m12 != 0.) {
31 F= m12;
32 } else if(m02 != 0. && m12 == 0.){
33 F=m02;
34 } else if((m02 == 0. && m12 == 0.) || (fabs(m02-m12) < LEPS)){
35 F=0.;
36 } else if (m02 != 0 && m12 != 0){
37 F=(m02 + m12) - 2*((m02 * m12) / (m02 - m12)) * log(m02/m12);
38 } else
39 throw std::runtime_error("Error in THDM::F()");
40 return (F);
41}
42
43
44
45
46
47
48
50: THDMWSTU(SM_i)
51{}
52
54{
55 double mSp2=myTHDMW.getMyTHDMWCache()->mSpsq;
56 double mSR2=myTHDMW.getMyTHDMWCache()->mSRsq;
57 double mSI2=myTHDMW.getMyTHDMWCache()->mSIsq;
58 double s_W2 = myTHDMW.sW2();
59 //std::cout<< "SinW_2=" << s_W2 << std::endl;//Why this value?
60 double c_W2 = 1-myTHDMW.sW2();
61 double MZ2=pow(myTHDMW.getMz(),2);
62 //double MW2=pow(myTHDMW->Mw(),2);
63 //We define the self energies removing the coupling because it will cancel
64
65
66
67 //gslpp::complex delPiWW_MZ;
68 gslpp::complex delPiZZ_MZ;
69 //gslpp::complex delPiWW_0;
70 gslpp::complex delPiZZ_0;
71 gslpp::complex delPiAAprime_0;
72 gslpp::complex delPiZAprime_0;
73 //gslpp::complex delPiAA_MZ;
74 //gslpp::complex delPiZA_MZ;
75
76 //g1 on arxiv:0907.2696 is e/s_W
77 //delPiWW_MZ=(1./(2.*pow(M_PI,2)*s_W2))*(mycache->B00_MZ2_MZ2_mSi2_mSp2(MZ2,mSI2,mSp2)+mycache->B00_MZ2_MZ2_mSr2_mSp2(MZ2,mSR2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2)-0.25*mycache->A0_MZ2_mSp2(MZ2,mSR2)-0.25*mycache->A0_MZ2_mSp2(MZ2,mSI2));
78
79
80 //delPiWW_0=(1./(8.*pow(M_PI,2)*s_W2))*(0.5*F(mSp2,mSR2)+0.5*F(mSp2,mSI2));
81
82
83 //delPiAA_MZ=(2./pow(M_PI,2))*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MZ2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2));
84 //delPiZA_MZ=((1.-2.*s_W2)/(pow(M_PI,2)*sqrt(c_W2)*sqrt(s_W2)))*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MZ2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2));
85
86
87 //double nu2=myTHDMW->getTHDMW_nu2();
88 //double nu3=myTHDMW->getTHDMW_nu3();
89 //double v=246.2;
90
91 //std::cout<< "prove10=" << delPiAAprime_0 << std::endl;
92 //std::cout<< "prove11=" << delPiAA_MZ/MZ2 << std::endl;
93 //std::cout<< "prove20=" << delPiZAprime_0 << std::endl;
94 //std::cout<< "prove21=" << delPiZA_MZ/MZ2 << std::endl;
95 //std::cout<< "DeltaS approx.=" << pow(v,2)*nu2/(6.*M_PI*mSp2) << std::endl;
96 //std::cout<< "DeltaS old=" << (16.*M_PI*s_W2*c_W2)*(((delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2)-(c_W2-s_W2)*delPiZAprime_0.real()/(sqrt(s_W2)*sqrt(c_W2))-delPiAAprime_0.real()) << std::endl;
97
98 //std::cout<< "DeltaS fraction old=" << (16.*M_PI*s_W2*c_W2)*(((delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2)-(c_W2-s_W2)*delPiZAprime_0.real()/(sqrt(s_W2)*sqrt(c_W2))-delPiAAprime_0.real())/(pow(v,2)*nu2/(6.*M_PI*mSp2)) << std::endl;
99 //std::cout<< "DeltaS fraction new=" << ((16.*M_PI*s_W2*c_W2)*(((delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2)-(c_W2-s_W2)*delPiZA_MZ.real()/(sqrt(s_W2)*sqrt(c_W2)*MZ2)-delPiAA_MZ.real()/MZ2))/(pow(v,2)*nu2/(6.*M_PI*mSp2)) << std::endl;
100
101
102 //std::cout<< "B00_MZ2_MZ2_mSr2_mSi2(MZ2,mSR2,mSI2)=" << mycache->B00_MZ2_MZ2_mSr2_mSi2(MZ2,mSR2,mSI2) << std::endl;
103 //std::cout<< "A0_MZ2_mSp2=" << mycache->A0_MZ2_mSp2(MZ2,mSp2) << std::endl;
104 //std::cout<< "mSp2=" << mSp2 << std::endl;
105 //std::cout<< "mSr2=" << mSR2 << std::endl;
106 //std::cout<< "MZ2=" << MZ2 << std::endl;
107 //std::cout<< "THDMWpositiveMassSquares=" << myTHDMW->getMyTHDMWCache()->setOtherParameters() << std::endl;
108 //std::cout<< "THDMWpositiveMassSquares=" << THDMWpositiveMassSquares << std::endl;
109 if(fabs(myTHDMW.getMyTHDMWCache()->setOtherParameters()-1.)<1.e-10)
110 {
111 delPiZZ_MZ=(1./(2.*pow(M_PI,2)*c_W2*s_W2))*(pow(1.-2.*s_W2,2)*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MZ2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2))+mycache->B00_MZ2_MZ2_mSr2_mSi2(MZ2,mSR2,mSI2)-0.25*mycache->A0_MZ2_mSp2(MZ2,mSR2)-0.25*mycache->A0_MZ2_mSp2(MZ2,mSI2));
112 delPiZZ_0=(1./(8.*pow(M_PI,2)*s_W2*c_W2))*(0.5*F(mSI2,mSR2));
113 delPiAAprime_0=-(1/(6.*pow(M_PI,2)))*mycache->B0_MZ2_0_mSp2_mSp2(MZ2,mSp2);
114 delPiZAprime_0=-((1-2*s_W2)/(12.*pow(M_PI,2)*sqrt(c_W2)*sqrt(s_W2)))*mycache->B0_MZ2_0_mSp2_mSp2(MZ2,mSp2);
115
116 return (16.*M_PI*s_W2*c_W2)*(((delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2)-(c_W2-s_W2)*delPiZAprime_0.real()/(sqrt(s_W2)*sqrt(c_W2))-delPiAAprime_0.real());
117
118 }
119 else
120 {
121 return std::numeric_limits<double>::quiet_NaN();
122 }
123 }
124
126: THDMWSTU(SM_i)
127{}
128
130{
131 double mSp2=myTHDMW.getMyTHDMWCache()->mSpsq;
132 double mSR2=myTHDMW.getMyTHDMWCache()->mSRsq;
133 double mSI2=myTHDMW.getMyTHDMWCache()->mSIsq;
134 double s_W2 = myTHDMW.sW2();
135 //std::cout<< "SinW_2=" << s_W2 << std::endl;//Why this value?
136 double c_W2 = 1-myTHDMW.sW2();
137 double MZ2=pow(myTHDMW.getMz(),2);
138 double MW2=pow(myTHDMW.Mw(),2);
139 //We define the self energies removing the coupling because it will cancel
140
141
142 gslpp::complex delPiWW_0;
143 gslpp::complex delPiZZ_0;
144
145
146 //g1 on arxiv:0907.2696 is e/s_W
147
148
149 //double nu2=myTHDMW->getTHDMW_nu2();
150 //double nu3=myTHDMW->getTHDMW_nu3();
151 //double v=246.2;
152 //std::cout<< "DeltaT approx.=" << pow(v,4)*(pow(nu2,2)-pow(2.*nu3,2))/(96.*pow(M_PI,1)*mSp2*MW2*s_W2) << std::endl;//typo in arxiv:0907.269, look at arxiv:0606172
153 //std::cout<< "DeltaT fraction=" << pow(v,4)*(pow(nu2,2)-pow(2.*nu3,2))/(96.*pow(M_PI,1)*mSp2*MW2*s_W2)/((4.*M_PI)*(delPiWW_0.real()/MW2-delPiZZ_0.real()/MZ2)) << std::endl;
154 if(fabs(myTHDMW.getMyTHDMWCache()->setOtherParameters()-1.)<1.e-10)
155 {
156 delPiWW_0=(1./(8.*pow(M_PI,2)*s_W2))*(0.5*F(mSp2,mSR2)+0.5*F(mSp2,mSI2));
157 delPiZZ_0=(1./(8.*pow(M_PI,2)*s_W2*c_W2))*(0.5*F(mSI2,mSR2));
158 return (4.*M_PI)*(delPiWW_0.real()/MW2-delPiZZ_0.real()/MZ2);
159 }
160 else
161 {
162 return std::numeric_limits<double>::quiet_NaN();
163 }
164
165
166
167
168
169}
170
171
173: THDMWSTU(SM_i)
174{}
175
177{
178 double mSp2=myTHDMW.getMyTHDMWCache()->mSpsq;
179 double mSR2=myTHDMW.getMyTHDMWCache()->mSRsq;
180 double mSI2=myTHDMW.getMyTHDMWCache()->mSIsq;
181 double s_W2 = myTHDMW.sW2();
182 //std::cout<< "SinW_2=" << s_W2 << std::endl;//Why this value?
183 double c_W2 = 1-myTHDMW.sW2();
184 double MZ2=pow(myTHDMW.getMz(),2);
185 double MW2=pow(myTHDMW.Mw(),2);
186 //We define the self energies removing the coupling because it will cancel
187
188 gslpp::complex delPiWW_MW;
189 gslpp::complex delPiZZ_MZ;
190 gslpp::complex delPiWW_0;
191 gslpp::complex delPiZZ_0;
192 gslpp::complex delPiAAprime_0;
193 gslpp::complex delPiZAprime_0;
194 //gslpp::complex delPiAA_MZ;
195 //gslpp::complex delPiZA_MZ;
196 //gslpp::complex delPiAA_MW;
197 //gslpp::complex delPiZA_MW;
198
199
200
201 //gslpp::complex S;
202
203 //g1 on arxiv:0907.2696 is e/s_W
204
205
206 //delPiAA_MZ=(2./pow(M_PI,2))*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MZ2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2));
207 //delPiZA_MZ=((1.-2.*s_W2)/(pow(M_PI,2)*sqrt(c_W2)*sqrt(s_W2)))*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MZ2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2));
208 //delPiAA_MW=(2./pow(M_PI,2))*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MW2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MW2,mSp2));
209 //delPiZA_MW=((1.-2.*s_W2)/(pow(M_PI,2)*sqrt(c_W2)*sqrt(s_W2)))*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MW2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MW2,mSp2));
210
211
212 //S=(16.*M_PI*s_W2*c_W2)*(((delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2)-(c_W2-s_W2)*delPiZA_MZ.real()/(sqrt(s_W2)*sqrt(c_W2)*MZ2)-delPiAA_MZ.real()/MZ2);
213
214 //std::cout<< "U new=" << (16.*M_PI*s_W2)*((delPiWW_MW.real()-delPiWW_0.real())/MW2-(sqrt(c_W2)/sqrt(s_W2))*(delPiZA_MZ/MZ2)-delPiAA_MZ/MZ2)-c_W2*S << std::endl;
215 //std::cout<< "U new MW=" << (16.*M_PI*s_W2)*((delPiWW_MW.real()-delPiWW_0.real())/MW2-(sqrt(c_W2)/sqrt(s_W2))*(delPiZA_MW/MW2)-delPiAA_MW/MW2)-c_W2*S << std::endl;
216 //std::cout<< "U new mix=" << (16.*M_PI*s_W2)*((delPiWW_MW.real()-delPiWW_0.real())/MW2-(sqrt(c_W2)/sqrt(s_W2))*(delPiZA_MW/MZ2)-delPiAA_MW/MZ2)-c_W2*S << std::endl;
217 //std::cout<< "Delta MW=" << (delPiWW_MW.real()-delPiWW_0.real())/MW2 << std::endl;
218 //std::cout<< "Term with delMZ=" << c_W2*(delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2 << std::endl;
219 //std::cout<< "delPiAA=" << s_W2*delPiAA_MZ.real()/MZ2 << std::endl;
220 //std::cout<< "delPiAZ=" << 2*sqrt(s_W2)*sqrt(c_W2)*delPiZA_MZ.real()/MZ2 << std::endl;
221
222 if(fabs(myTHDMW.getMyTHDMWCache()->setOtherParameters()-1.)<1.e-10)
223 {
224 delPiWW_MW=(1./(2.*pow(M_PI,2)*s_W2))*(mycache->B00_MZ2_MZ2_mSi2_mSp2(MW2,mSI2,mSp2)+mycache->B00_MZ2_MZ2_mSr2_mSp2(MW2,mSR2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MW2,mSp2)-0.25*mycache->A0_MZ2_mSp2(MW2,mSR2)-0.25*mycache->A0_MZ2_mSp2(MW2,mSI2));
225 delPiZZ_MZ=(1./(2.*pow(M_PI,2)*c_W2*s_W2))*(pow(1.-2.*s_W2,2)*(mycache->B00_MZ2_MZ2_mSp2_mSp2(MZ2,mSp2)-0.5*mycache->A0_MZ2_mSp2(MZ2,mSp2))+mycache->B00_MZ2_MZ2_mSr2_mSi2(MZ2,mSR2,mSI2)-0.25*mycache->A0_MZ2_mSp2(MZ2,mSR2)-0.25*mycache->A0_MZ2_mSp2(MZ2,mSI2));
226
227 delPiWW_0=(1./(8.*pow(M_PI,2)*s_W2))*(0.5*F(mSp2,mSR2)+0.5*F(mSp2,mSI2));
228 delPiZZ_0=(1./(8.*pow(M_PI,2)*s_W2*c_W2))*(0.5*F(mSI2,mSR2));
229 delPiAAprime_0=-(1/(6.*pow(M_PI,2)))*mycache->B0_MZ2_0_mSp2_mSp2(MZ2,mSp2);
230 delPiZAprime_0=-((1-2*s_W2)/(12.*pow(M_PI,2)*sqrt(c_W2)*sqrt(s_W2)))*mycache->B0_MZ2_0_mSp2_mSp2(MZ2,mSp2);
231 return (16.*M_PI*s_W2)*((delPiWW_MW.real()-delPiWW_0.real())/MW2-c_W2*((delPiZZ_MZ.real()-delPiZZ_0.real())/MZ2)-(s_W2*delPiAAprime_0.real())-(2.*sqrt(s_W2)*sqrt(c_W2)*delPiZAprime_0.real()));
232
233 }
234 else
235 {
236
237 return std::numeric_limits<double>::quiet_NaN();
238 }
239
240
241
242 }
A model class for the Standard Model.
const double getMz() const
A get method to access the mass of the boson .
virtual const double sW2(const double Mw_i) const
The square of the sine of the weak mixing angle in the on-shell scheme, denoted as .
THDMWDeltaS(const StandardModel &SM_i)
Constructor for DeltaS.
Definition: THDMWSTU.cpp:49
double computeThValue()
THDMW contribution to .
Definition: THDMWSTU.cpp:53
double computeThValue()
THDMW contribution to .
Definition: THDMWSTU.cpp:129
THDMWDeltaT(const StandardModel &SM_i)
Constructor for DeltaT.
Definition: THDMWSTU.cpp:125
THDMWDeltaU(const StandardModel &SM_i)
Constructor for DeltaU.
Definition: THDMWSTU.cpp:172
double computeThValue()
THDMW contribution to .
Definition: THDMWSTU.cpp:176
A base class for symmetric Two-Higgs-Doublet-Manohar-Wise models.
Definition: THDMW.h:233
THDMWcache * getMyTHDMWCache() const
A method get the THDMWCache.
Definition: THDMW.h:318
virtual const double Mw() const
Definition: THDMW.cpp:493
An observable class for the electroweak Peskin-Takeuchi pseudo-observables.
Definition: THDMWSTU.h:25
double computeThValue()
Empty constructor.
Definition: THDMWSTU.cpp:22
double F(const double m02, const double m12) const
Function used for THDMW. Remember that this function is defined for THDMW and SUSY while for THDM we...
Definition: THDMWSTU.cpp:27
const THDMW & myTHDMW
Definition: THDMWSTU.h:38
THDMWSTU(const StandardModel &SM_i)
Constructor.
Definition: THDMWSTU.cpp:15
THDMWcache * mycache
Definition: THDMWSTU.h:51
A class for the caching of some THDMW objects.
Definition: THDMWcache.h:27
double setOtherParameters()
gslpp::complex B00_MZ2_MZ2_mSr2_mSp2(const double MZ2, const double mSr2, const double mSp2) const
.
Definition: THDMWcache.cpp:238
gslpp::complex B00_MZ2_MZ2_mSr2_mSi2(const double MZ2, const double mSr2, const double mSi2) const
.
Definition: THDMWcache.cpp:266
gslpp::complex B0_MZ2_0_mSp2_mSp2(const double MZ2, const double mSp2) const
.
Definition: THDMWcache.cpp:183
gslpp::complex A0_MZ2_mSp2(const double MZ2, const double mSp2) const
.
Definition: THDMWcache.cpp:141
double mSRsq
Definition: THDMWcache.h:80
double mSIsq
Definition: THDMWcache.h:81
gslpp::complex B00_MZ2_MZ2_mSi2_mSp2(const double MZ2, const double mSi2, const double mSp2) const
.
Definition: THDMWcache.cpp:252
double mSpsq
Definition: THDMWcache.h:83
gslpp::complex B00_MZ2_MZ2_mSp2_mSp2(const double MZ2, const double mSp2) const
.
Definition: THDMWcache.cpp:282
A class for a model prediction of an observable.
Definition: ThObservable.h:25