a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
STU.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 "STU.h"
9 #include "THDM.h"
10 #include "THDMcache.h"
11 
12 STU::STU(const StandardModel& SM_i)
13 : ThObservable(SM_i), myTHDM(static_cast<const THDM*> (&SM_i))
14 
15 {
16  mycache = new THDMcache(SM_i);
17 };
18 
20 {
21  return 0.0;
22 }
23 
25 
26 double STU::F(const double m02, const double m12) const {
27  double F;
28 
29  if(m02 == 0. && m12 != 0.) {
30  F=0.5 * m12;
31  } else if(m02 != 0. && m12 == 0.){
32  F=0.5 * m02;
33  } else if((m02 == 0. && m12 == 0.) || (fabs(m02-m12) < LEPS)){
34  F=0.;
35  } else if (m02 != 0 && m12 != 0){
36  F=0.5 * (m02 + m12) - (m02 * m12) / (m02 - m12) * log(m02 / m12);
37  } else
38  throw std::runtime_error("Error in THDM::F()");
39  return (F);
40 }
41 
43 
45 : STU(SM_i)
46 {}
47 
49 {
50  double mHl2=myTHDM->getmHl2();
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 mHl2=myTHDM->getmHl2();
89  double mHh2=myTHDM->getmHh2();
90  double mA2=myTHDM->getmA2();
91  double mHp2=myTHDM->getmHp2();
92  double sin_ba=myTHDM->getsin_ba();
93  double sin2_ba = sin_ba*sin_ba;
94  double cos2_ba = 1. - sin2_ba;
95  double MZ=myTHDM->getMz();
96  double MZ2 = MZ*MZ;
97  double MW=mycache->MWTHDM(myTHDM->Mw_tree());
98  double MW2 = MW*MW;
99  double s_W2 = 1.0-mycache->cW2THDM(myTHDM->c02());
100 
101  gslpp::complex B0_MZ2_0_MZ2_mHh2;
102  gslpp::complex B0_MZ2_0_MZ2_mHl2;
103  gslpp::complex B0_MZ2_0_MW2_mHh2;
104  gslpp::complex B0_MZ2_0_MW2_mHl2;
105 
106  B0_MZ2_0_MZ2_mHh2 = mycache->B0_MZ2_0_MZ2_mHh2(MZ2,mHh2);
107  B0_MZ2_0_MZ2_mHl2 = mycache->B0_MZ2_0_MZ2_mHl2(MZ2,mHl2);
108  B0_MZ2_0_MW2_mHh2 = mycache->B0_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2);
109  B0_MZ2_0_MW2_mHl2 = mycache->B0_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2);
110 
111  return 1. / 16. / M_PI / MW2 / s_W2 * (F(mHp2,mA2)
112  + sin2_ba * (F(mHp2,mHh2) - F(mA2,mHh2)) + cos2_ba * (F(mHp2,mHl2)
113  - F(mA2,mHl2) + F(MW2,mHh2) - F(MW2,mHl2) - F(MZ2,mHh2)
114  + F(MZ2,mHl2) + 4. * MZ2 * (B0_MZ2_0_MZ2_mHh2.real() - B0_MZ2_0_MZ2_mHl2.real())
115  - 4. * MW2 * (B0_MZ2_0_MW2_mHh2.real() - B0_MZ2_0_MW2_mHl2.real())));
116 }
117 
119 : STU(SM_i)
120 {
121  myDeltaS = new DeltaS(SM_i);
122 }
123 
125 {
126  double mHl2=myTHDM->getmHl2();
127  double mHh2=myTHDM->getmHh2();
128  double mA2=myTHDM->getmA2();
129  double mHp2=myTHDM->getmHp2();
130  double sin_ba=myTHDM->getsin_ba();
131  double sin2_ba = sin_ba*sin_ba;
132  double cos2_ba = 1. - sin2_ba;
133  double MZ=myTHDM->getMz();
134  double MZ2 = MZ*MZ;
135  double MW =mycache->MWTHDM(myTHDM->Mw_tree());
136  double MW2 = MW*MW;
137 
138  gslpp::complex B00prime_MZ2_MW2_mA2_mHp2;
139  gslpp::complex B00prime_MZ2_MW2_mHp2_mHp2;
140  gslpp::complex B00prime_MZ2_MW2_mHh2_mHp2;
141  gslpp::complex B00prime_MZ2_MW2_mHl2_mHp2;
142  gslpp::complex B00prime_MZ2_MW2_MW2_mHh2;
143  gslpp::complex B00prime_MZ2_MW2_MW2_mHl2;
144  gslpp::complex B0prime_MZ2_MW2_MW2_mHh2;
145  gslpp::complex B0prime_MZ2_MW2_MW2_mHl2;
146 
147  B00prime_MZ2_MW2_mA2_mHp2 = mycache->B00_MZ2_MW2_mA2_mHp2(MZ2,MW2,mA2,mHp2) - mycache->B00_MZ2_0_mA2_mHp2(MZ2,mA2,mHp2);
148  B00prime_MZ2_MW2_mHp2_mHp2 = mycache->B00_MZ2_MW2_mHp2_mHp2(MZ2,MW2,mHp2) - mycache->B00_MZ2_0_mHp2_mHp2(MZ2,mHp2);
149  B00prime_MZ2_MW2_mHh2_mHp2 = mycache->B00_MZ2_MW2_mHh2_mHp2(MZ2,MW2,mHh2,mHp2) - mycache->B00_MZ2_0_mHh2_mHp2(MZ2,mHh2,mHp2);
150  B00prime_MZ2_MW2_mHl2_mHp2 = mycache->B00_MZ2_MW2_mHl2_mHp2(MZ2,MW2,mHl2,mHp2) - mycache->B00_MZ2_0_mHl2_mHp2(MZ2,mHl2,mHp2);
151  B00prime_MZ2_MW2_MW2_mHh2 = mycache->B00_MZ2_MW2_MW2_mHh2(MZ2,MW2,mHh2) - mycache->B00_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2);
152  B00prime_MZ2_MW2_MW2_mHl2 = mycache->B00_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2) - mycache->B00_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2);
153  B0prime_MZ2_MW2_MW2_mHh2 = mycache->B0_MZ2_MW2_MW2_mHh2(MZ2,MW2,mHh2) - mycache->B0_MZ2_0_MW2_mHh2(MZ2,MW2,mHh2);
154  B0prime_MZ2_MW2_MW2_mHl2 = mycache->B0_MZ2_MW2_MW2_mHl2(MZ2,MW2,mHl2) - mycache->B0_MZ2_0_MW2_mHl2(MZ2,MW2,mHl2);
155 
156  return - myDeltaS->computeThValue() + 1. / M_PI / MZ2 * (B00prime_MZ2_MW2_mA2_mHp2.real()
157  - 2. * B00prime_MZ2_MW2_mHp2_mHp2.real() + sin2_ba * B00prime_MZ2_MW2_mHh2_mHp2.real()
158  + cos2_ba * (B00prime_MZ2_MW2_mHl2_mHp2.real() + B00prime_MZ2_MW2_MW2_mHh2.real()
159  - B00prime_MZ2_MW2_MW2_mHl2.real() - MW2 * B0prime_MZ2_MW2_MW2_mHh2.real()
160  + MW2 * B0prime_MZ2_MW2_MW2_mHl2.real()));
161 }
THDMcache::B00_MZ2_0_MZ2_mHh2
gslpp::complex B00_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const
THDMcache::B00_MZ2_MZ2_MZ2_mHh2
gslpp::complex B00_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const
THDMcache::MWTHDM
double MWTHDM(const double MW) const
THDMcache::cW2THDM
double cW2THDM(const double c02) const
THDMcache.h
DeltaU::myDeltaS
DeltaS * myDeltaS
Definition: STU.h:113
THDMcache::B0_MZ2_0_MW2_mHl2
gslpp::complex B0_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
THDM
A base class for symmetric Two-Higgs-Doublet models.
Definition: THDM.h:120
THDMcache::B00_MZ2_0_mHh2_mHp2
gslpp::complex B00_MZ2_0_mHh2_mHp2(const double MZ2, const double mHh2, const double mHp2) const
THDM::getmA2
double getmA2() const
A method get the squared mass of the pseudoscalar Higgs A.
Definition: THDM.h:423
THDMcache::B00_MZ2_MW2_mHl2_mHp2
gslpp::complex B00_MZ2_MW2_mHl2_mHp2(const double MZ2, const double MW2, const double mHl2, const double mHp2) const
THDMcache::B00_MZ2_MW2_mA2_mHp2
gslpp::complex B00_MZ2_MW2_mA2_mHp2(const double MZ2, const double MW2, const double mA2, const double mHp2) const
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
DeltaU::DeltaU
DeltaU(const StandardModel &SM_i)
THDM contribution to .
Definition: STU.cpp:118
gslpp::log
complex log(const complex &z)
Definition: gslpp_complex.cpp:342
THDM::getmHp2
double getmHp2() const
A method get the squared charged Higgs mass.
Definition: THDM.h:457
THDMcache::B00_MZ2_0_MZ2_mHl2
gslpp::complex B00_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const
DeltaS::DeltaS
DeltaS(const StandardModel &SM_i)
Constructor for DeltaS.
Definition: STU.cpp:44
THDMcache
A class for the caching of some THDM objects.
Definition: THDMcache.h:29
THDMcache::B00_MZ2_0_mHl2_mA2
gslpp::complex B00_MZ2_0_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const
STU::F
double F(const double m02, const double m12) const
Function used for THDM. Remember that this function is defined for THDM while for SUSY we have a mul...
Definition: STU.cpp:26
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:474
THDM::getmHh2
double getmHh2() const
A method get the squared mass of the "non-125 GeV" neutral scalar Higgs.
Definition: THDM.h:365
THDMcache::B00_MZ2_MW2_MW2_mHh2
gslpp::complex B00_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
THDMcache::B00_MZ2_0_mHh2_mA2
gslpp::complex B00_MZ2_0_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const
THDMcache::B0_MZ2_MZ2_MZ2_mHl2
gslpp::complex B0_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const
THDMcache::B00_MZ2_MW2_mHp2_mHp2
gslpp::complex B00_MZ2_MW2_mHp2_mHp2(const double MZ2, const double MW2, const double mHp2) const
DeltaS
An observable class for the THDM contribution to the electroweak Peskin-Takeuchi pseudo-observable .
Definition: STU.h:58
StandardModel::c02
double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections.
Definition: StandardModel.cpp:939
STU::myTHDM
const THDM * myTHDM
Definition: STU.h:37
DeltaU::computeThValue
double computeThValue()
Definition: STU.cpp:124
DeltaT::DeltaT
DeltaT(const StandardModel &SM_i)
Constructor for DeltaT.
Definition: STU.cpp:82
STU::STU
STU(const StandardModel &SM_i)
Constructor.
Definition: STU.cpp:12
DeltaT::computeThValue
double computeThValue()
THDM contribution to .
Definition: STU.cpp:86
THDMcache::B00_MZ2_MZ2_mHh2_mA2
gslpp::complex B00_MZ2_MZ2_mHh2_mA2(const double MZ2, const double mHh2, const double mA2) const
THDMcache::B00_MZ2_MZ2_MZ2_mHl2
gslpp::complex B00_MZ2_MZ2_MZ2_mHl2(const double MZ2, const double mHl2) const
DeltaS::computeThValue
double computeThValue()
THDM contribution to .
Definition: STU.cpp:48
THDMcache::B00_MZ2_MZ2_mHp2_mHp2
gslpp::complex B00_MZ2_MZ2_mHp2_mHp2(const double MZ2, const double mHp2) const
THDM::getsin_ba
double getsin_ba() const
A method get .
Definition: THDM.h:315
THDMcache::B00_MZ2_MW2_MW2_mHl2
gslpp::complex B00_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
THDMcache::B0_MZ2_0_MZ2_mHl2
gslpp::complex B0_MZ2_0_MZ2_mHl2(const double MZ2, const double mHl2) const
THDMcache::B00_MZ2_0_mA2_mHp2
gslpp::complex B00_MZ2_0_mA2_mHp2(const double MZ2, const double mA2, const double mHp2) const
STU::mycache
THDMcache * mycache
Definition: STU.h:49
THDMcache::B00_MZ2_MZ2_mHl2_mA2
gslpp::complex B00_MZ2_MZ2_mHl2_mA2(const double MZ2, const double mHl2, const double mA2) const
STU::computeThValue
double computeThValue()
Empty constructor.
Definition: STU.cpp:19
StandardModel::getMz
double getMz() const
A get method to access the mass of the boson .
Definition: StandardModel.h:718
THDMcache::B00_MZ2_0_mHl2_mHp2
gslpp::complex B00_MZ2_0_mHl2_mHp2(const double MZ2, const double mHl2, const double mHp2) const
THDMcache::B00_MZ2_0_mHp2_mHp2
gslpp::complex B00_MZ2_0_mHp2_mHp2(const double MZ2, const double mHp2) const
StandardModel::Mw_tree
virtual double Mw_tree() const
The tree-level mass of the boson, .
Definition: StandardModel.cpp:925
ThObservable
A class for a model prediction of an observable.
Definition: ThObservable.h:25
STU.h
STU
An observable class for the electroweak Peskin-Takeuchi pseudo-observables.
Definition: STU.h:24
THDM::getmHl2
double getmHl2() const
A method get the squared mass of the lighter neutral scalar Higgs.
Definition: THDM.h:339
THDMcache::B00_MZ2_MW2_mHh2_mHp2
gslpp::complex B00_MZ2_MW2_mHh2_mHp2(const double MZ2, const double MW2, const double mHh2, const double mHp2) const
THDMcache::B0_MZ2_MW2_MW2_mHl2
gslpp::complex B0_MZ2_MW2_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
gslpp::complex::real
const double & real() const
Definition: gslpp_complex.cpp:53
THDMcache::B0_MZ2_0_MZ2_mHh2
gslpp::complex B0_MZ2_0_MZ2_mHh2(const double MZ2, const double mHh2) const
THDMcache::B00_MZ2_0_MW2_mHl2
gslpp::complex B00_MZ2_0_MW2_mHl2(const double MZ2, const double MW2, const double mHl2) const
THDM.h
THDMcache::B0_MZ2_MW2_MW2_mHh2
gslpp::complex B0_MZ2_MW2_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
THDMcache::B00_MZ2_0_MW2_mHh2
gslpp::complex B00_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const
THDMcache::B0_MZ2_MZ2_MZ2_mHh2
gslpp::complex B0_MZ2_MZ2_MZ2_mHh2(const double MZ2, const double mHh2) const
THDMcache::B0_MZ2_0_MW2_mHh2
gslpp::complex B0_MZ2_0_MW2_mHh2(const double MZ2, const double MW2, const double mHh2) const