lightHiggs.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 "lightHiggs.h"
9 #include "StandardModel.h"
10 
11 
13 
14  ThObservable(SM_i),
15  myTHDM(static_cast<const THDM*> (&SM_i)),
16  mySM (SM_i)
17 {}
18 
20 {}
21 
23 {
24 
25  THDMfunctions myfunctions(mySM);
26 
27  double Mu=myTHDM->getQuarks(QCD::UP).getMass();
28  double Md=myTHDM->getQuarks(QCD::DOWN).getMass();
29  double Mc=myTHDM->getQuarks(QCD::CHARM).getMass();
30  double Ms=myTHDM->getQuarks(QCD::STRANGE).getMass();
31  double Mt=myTHDM->getQuarks(QCD::TOP).getMass();
32  double Mb=myTHDM->getQuarks(QCD::BOTTOM).getMass();
36  double MZ=myTHDM->getMz();
37  double MW=myTHDM->Mw();
38  double vev=myTHDM->v();
39  double sW2=myTHDM->sW2();
40  double cW2=myTHDM->cW2();
41  double mHl=myTHDM->getMHl();
42  double mHp=myTHDM->getmHp();
43  double m12_2=myTHDM->getm12_2();
44  double sin_ba=myTHDM->getsin_ba();
45  double sina=myTHDM->getsina();
46  double cosa=myTHDM->getcosa();
47  double sinb=myTHDM->getsinb();
48  double cosb=myTHDM->getcosb();
49  double cos_bpa=cosb*cosa-sinb*sina;
50 
51  //The Standard Model h branching ratios
52 
56  double BrSM_htoWW = myTHDM->computeBrHtoWW();
57  double BrSM_htoZZ = myTHDM->computeBrHtoZZ();
58  double BrSM_htogg = myTHDM->computeBrHtogg();
59  double BrSM_htoZga = myTHDM->computeBrHtoZga();
60  double BrSM_htocc = myTHDM->computeBrHtocc();
61 
62  //The ggH cross section in the SM.
63  double SigmaggF = myTHDM->computeSigmaggH(8.0);
64  //The square of the top-quark contribution to the ggH cross section in the SM
65  double Sigmaggh_tt = myTHDM->computeSigmaggH_tt(8.0);
66  //The square of the bottom-quark contribution to the ggH cross section in the SM
67  double Sigmaggh_bb = myTHDM->computeSigmaggH_bb(8.0);
68  //The ttH production cross section in the SM
69  double Sigmatth = myTHDM->computeSigmattH(8.0);
70  //The VBF cross section in the SM
71  //double SigmaVBF = myTHDM->computeSigmaVBF(8.0);
72  //The WH production cross section in the SM
73  //double SigmaWh = myTHDM->computeSigmaWH(8.0);
74  //The ZH production cross section in the SM
75  //double SigmaZh = myTHDM->computeSigmaZH(8.0);
76  //double SigmaVh = SigmaWh + SigmaZh;
77 
78  /* r_ii is the ratio of the squared 2HDM vertex coupling of h to
79  * the particle i and the respective squared SM coupling.*/
80  rh_QuQu=cosa*cosa/(sinb*sinb);
81  rh_VV=sin_ba*sin_ba;
82  rh_QdQd=0.0;//It depends on the modelType
83  rh_ll=0.0;//It depends on the modelType
84  rh_gg=0.0;//It depends on the modelType
85 
86  //Calulation of rh_gg, rh_QdQd, rh_ll, rh_gaga, rh_Zga (depending on the model type): START
87 
88  //rh_gaga formula = abs(I_h_F+I_h_W+I_h_Hp)^2 / abs(I_hSM_F+I_hSM_W)^2
89 
90  double TAUu=4.0*Mu*Mu/(mHl*mHl);
91  double TAUc=4.0*Mc*Mc/(mHl*mHl);
92  double TAUt=4.0*Mt*Mt/(mHl*mHl);
93  double TAUd=4.0*Md*Md/(mHl*mHl);
94  double TAUs=4.0*Ms*Ms/(mHl*mHl);
95  double TAUb=4.0*Mb*Mb/(mHl*mHl);
96  double TAUe=4.0*Me*Me/(mHl*mHl);
97  double TAUmu=4.0*Mmu*Mmu/(mHl*mHl);
98  double TAUtau=4.0*Mtau*Mtau/(mHl*mHl);
99  double TAUw=4.0*MW*MW/(mHl*mHl);
100  double TAUhp=4.0*mHp*mHp/(mHl*mHl);
101 //
102  gslpp::complex I_h_F=0.0;//It depends on the modelType
103  gslpp::complex fermU=-(8./3.)*(TAUu*(1+(1-TAUu)*myfunctions.f_func(TAUu))
104  +TAUc*(1+(1-TAUc)*myfunctions.f_func(TAUc))+TAUt*(1+(1-TAUt)*myfunctions.f_func(TAUt)));
105  gslpp::complex fermD=-(2./3.)*(TAUd*(1+(1-TAUd)*myfunctions.f_func(TAUd))
106  +TAUs*(1+(1-TAUs)*myfunctions.f_func(TAUs))+TAUb*(1+(1-TAUb)*myfunctions.f_func(TAUb)));
107  gslpp::complex fermL=-2.*(TAUe*(1+(1-TAUe)*myfunctions.f_func(TAUe))
108  +TAUmu*(1+(1-TAUmu)*myfunctions.f_func(TAUmu))
109  +TAUtau*(1+(1-TAUtau)*myfunctions.f_func(TAUtau)));
110  gslpp::complex I_hSM_W=2.0 + 3.0*TAUw + 3.0*TAUw*(2.0-TAUw)*myfunctions.f_func(TAUw);
111  gslpp::complex I_h_W=sin_ba*I_hSM_W;
112  double ghHpHm = ((mHl*mHl -2.0*mHp*mHp)*sin_ba
113  -(mHl*mHl -m12_2/(cosb*sinb))/(cosb*sinb)*cos_bpa)/vev;
114  gslpp::complex I_h_Hp=-TAUhp*(1.0-TAUhp*myfunctions.f_func(TAUhp))*vev/(2.*mHp*mHp)*ghHpHm;
115 
116  double ABSgagaTHDM=0.0;
117  double ABSgagaSM=0.0;
118 
119  //rh_Zga formula = abs(A_h_F+A_h_W+A_h_Hp)^2 / abs(A_hSM_F+A_hSM_W)^2
120 
121  double LAMu=4.0*Mu*Mu/(MZ*MZ);
122  double LAMc=4.0*Mc*Mc/(MZ*MZ);
123  double LAMt=4.0*Mt*Mt/(MZ*MZ);
124  double LAMd=4.0*Md*Md/(MZ*MZ);
125  double LAMs=4.0*Ms*Ms/(MZ*MZ);
126  double LAMb=4.0*Mb*Mb/(MZ*MZ);
127  double LAMe=4.0*Me*Me/(MZ*MZ);
128  double LAMmu=4.0*Mmu*Mmu/(MZ*MZ);
129  double LAMtau=4.0*Mtau*Mtau/(MZ*MZ);
130  double LAMw=4.0*MW*MW/(MZ*MZ);
131  double LAMhp=4.0*mHp*mHp/(MZ*MZ);
132 
133  gslpp::complex A_h_F = 0.0;//It depends on the modelType
134  gslpp::complex A_h_U = -4.0*(1.0/2.0-4.0/3.0*sW2)*(myfunctions.Int1(TAUu,LAMu)+myfunctions.Int1(TAUc,LAMc)
135  +myfunctions.Int1(TAUt,LAMt)-myfunctions.Int2(TAUu,LAMu)-myfunctions.Int2(TAUc,LAMc)-myfunctions.Int2(TAUt,LAMt));
136  gslpp::complex A_h_D = +2.0*(-1.0/2.0+2.0/3.0*sW2)*(myfunctions.Int1(TAUd,LAMd)+myfunctions.Int1(TAUs,LAMs)
137  +myfunctions.Int1(TAUb,LAMb)-myfunctions.Int2(TAUd,LAMd)-myfunctions.Int2(TAUs,LAMs)-myfunctions.Int2(TAUb,LAMb));
138  gslpp::complex A_h_L = +2.0*(-1.0/2.0+2.0*sW2)*(myfunctions.Int1(TAUe,LAMe)+myfunctions.Int1(TAUmu,LAMmu)
139  +myfunctions.Int1(TAUtau,LAMtau)-myfunctions.Int2(TAUe,LAMe)-myfunctions.Int2(TAUmu,LAMmu)
140  -myfunctions.Int2(TAUtau,LAMtau));
141  gslpp::complex A_hSM_W = -sqrt(cW2/sW2)*(4*(3-sW2/cW2)*myfunctions.Int2(TAUw,LAMw)
142  +((1.0+2.0/TAUw)*sW2/cW2-(5.0+2.0/TAUw))*myfunctions.Int1(TAUw,LAMw));
143  gslpp::complex A_h_W = sin_ba*A_hSM_W;
144  gslpp::complex A_h_Hp = ghHpHm*(1-2.0*sW2)/sqrt(cW2*sW2)*myfunctions.Int1(TAUhp,LAMhp)
145  *vev/(2.*mHp*mHp);
146 
147  double ABSZgaTHDM=0.0;
148  double ABSZgaSM=0.0;
149 
150  std::string modelflag=myTHDM->getModelTypeflag();
151 
152  if( modelflag == "type1" ) {
153  rh_gg=cosa/sinb*cosa/sinb;
154  rh_QdQd=cosa/sinb*cosa/sinb;
155  rh_ll=cosa/sinb*cosa/sinb;
156  I_h_F=cosa/sinb*(fermU+fermD+fermL);
157  A_h_F = cosa/sinb*(A_h_U+A_h_D+A_h_L)/sqrt(sW2*cW2);
158  }
159  else if( modelflag == "type2" ) {
160  rh_gg=-cosa/sinb*sina/cosb+(cosa/sinb+sina/cosb)
161  *(Sigmaggh_tt*cosa/sinb+Sigmaggh_bb*sina/cosb)/SigmaggF;
162  rh_QdQd=sina/cosb*sina/cosb;
163  rh_ll=sina/cosb*sina/cosb;
164  I_h_F=cosa/sinb*fermU -sina/cosb*(fermD+fermL);
165  A_h_F = (cosa/sinb*A_h_U-sina/cosb*(A_h_D+A_h_L))/sqrt(sW2*cW2);
166  }
167  else if( modelflag == "typeX" ) {
168  rh_gg=cosa/sinb*cosa/sinb;
169  rh_QdQd=cosa/sinb*cosa/sinb;
170  rh_ll=sina/cosb*sina/cosb;
171  I_h_F = cosa/sinb*(fermU+fermD) -sina/cosb*fermL;
172  A_h_F = (cosa/sinb*(A_h_U+A_h_D)-sina/cosb*A_h_L)/sqrt(sW2*cW2);
173  }
174  else if( modelflag == "typeY" ) {
175  rh_gg=-cosa/sinb*sina/cosb+(cosa/sinb+sina/cosb)
176  *(Sigmaggh_tt*cosa/sinb+Sigmaggh_bb*sina/cosb)/SigmaggF;
177  rh_QdQd=sina/cosb*sina/cosb;
178  rh_ll=cosa/sinb*cosa/sinb;
179  I_h_F = cosa/sinb*(fermU+fermL) -sina/cosb*fermD;
180  A_h_F = (cosa/sinb*(A_h_U+A_h_L)-sina/cosb*A_h_D)/sqrt(sW2*cW2);
181  }
182  else {
183  throw std::runtime_error("modelflag can be only any of \"type1\", \"type2\", \"typeX\" or \"typeY\"");
184  }
185 
186  ABSgagaTHDM=(I_h_F+I_h_W+I_h_Hp).abs2();
187  ABSgagaSM=(fermU+fermL+fermD+I_h_W).abs2();
188  rh_gaga=ABSgagaTHDM/ABSgagaSM;
189 
190  ABSZgaTHDM=(A_h_F+A_h_W+A_h_Hp).abs2();
191  ABSZgaSM=(A_h_U+A_h_L+A_h_D+A_hSM_W).abs2();
192  rh_Zga=ABSZgaTHDM/ABSZgaSM;
193 
194  //Calulation of rh_gg, rh_QdQd, rh_ll, rh_gaga, rh_Zga (they depend on the model type): END
195 
196  /* ggF_tth is the ratio of the THDM and SM cross sections for ggF or tth production */
197  ggF_tth = (SigmaggF*rh_gg + Sigmatth*rh_QuQu)/(SigmaggF + Sigmatth);
198  /* VBF_Vh is the ratio of the THDM and SM cross sections for VBF or Vh production */
199  VBF_Vh = rh_VV;
200 
201  sumModBRs = rh_QdQd*BrSM_htobb + rh_VV*(BrSM_htoWW+BrSM_htoZZ) + rh_ll*BrSM_htotautau +
202  rh_gaga*BrSM_htogaga + rh_gg*BrSM_htogg + rh_Zga*BrSM_htoZga + rh_QuQu*BrSM_htocc;
203 }
204 
206 {
207  return 0;
208 }
209 
211 {
214 }
215 
217 {
220 }
221 
223 {
226 }
227 
228 
229 /*******************************************************************************
230  * Observables *
231  * ****************************************************************************/
232 
233 
234 
236 : lightHiggs(SM_i)
237 {}
238 
240 {
242 
243  return ggF_tth*rh_QdQd/sumModBRs;
244 }
245 
246 
247 
249 : lightHiggs(SM_i)
250 {}
251 
253 {
255 
256  return ggF_tth*rh_VV/sumModBRs;
257 }
258 
259 
260 
262 : lightHiggs(SM_i)
263 {}
264 
266 {
268 
269  return ggF_tth*rh_ll/sumModBRs;
270 }
271 
272 
273 
275 : lightHiggs(SM_i)
276 {}
277 
279 {
281 
282  return ggF_tth*rh_VV/sumModBRs;
283 }
284 
285 
286 
288 : lightHiggs(SM_i)
289 {}
290 
292 {
294 
295  return ggF_tth*rh_gaga/sumModBRs;
296 }
297 
298 
299 
301 : lightHiggs(SM_i)
302 {}
303 
305 {
307 
308  return VBF_Vh*rh_QdQd/sumModBRs;
309 }
310 
311 
312 
314 : lightHiggs(SM_i)
315 {}
316 
318 {
320 
321  return VBF_Vh*rh_VV/sumModBRs;
322 }
323 
324 
325 
327 : lightHiggs(SM_i)
328 {}
329 
331 {
333 
334  return VBF_Vh*rh_ll/sumModBRs;
335 }
336 
337 
338 
340 : lightHiggs(SM_i)
341 {}
342 
344 {
346 
347  return VBF_Vh*rh_VV/sumModBRs;
348 }
349 
351 : lightHiggs(SM_i)
352 {}
353 
355 {
357 
358  return VBF_Vh*rh_gaga/sumModBRs;
359 }
VBF_Vh_htogaga(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:350
double rh_ll
Squared relative coupling of to two charged leptons.
Definition: lightHiggs.h:95
double computeThValue()
Empty function.
Definition: lightHiggs.cpp:205
double sumModBRs
Sum of the modified branching ratios.
Definition: lightHiggs.h:120
double getm12_2() const
Definition: THDM.h:278
double VBF_Vh
Ratio of THDM and SM cross sections for VBF and Vh production of h.
Definition: lightHiggs.h:114
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 ...
double getsina() const
Definition: THDM.h:222
double getsinb() const
Definition: THDM.h:182
Particle getLeptons(const StandardModel::lepton p) const
A get method to retrieve the member object of a lepton.
double getsin_ba() const
Definition: THDM.h:206
double computeSigmaggH_tt(const double sqrt_s) const
The square of the top-quark contribution to the ggH cross section in the Standard Model...
double BrSM_htogaga
SM branching ratio of .
Definition: lightHiggs.h:69
ggF_tth_htobb(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:235
ggF_tth_htoWW(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:248
virtual ~lightHiggs()
Definition: lightHiggs.cpp:19
double BrSM_htotautau
SM branching ratio of .
Definition: lightHiggs.h:75
double getcosb() const
Definition: THDM.h:190
double computeBrHtoWW() const
The Br in the Standard Model.
A class for a model prediction of an observable.
Definition: ThObservable.h:22
double computeThValue()
Definition: lightHiggs.cpp:291
Definition: QCD.h:731
double computeBrHtoZZ() const
The Br in the Standard Model.
gslpp::complex Int2(const double tau, const double lambda) const
function for Z gamma coupling to h, H and A
double computeSigmattH(const double sqrt_s) const
The ttH production cross section in the Standard Model.
double computeBrHtobb() const
The Br in the Standard Model.
double computeThValue()
Definition: lightHiggs.cpp:330
A model class for the Standard Model.
VBF_Vh_htobb(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:300
VBF_Vh_htotautau(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:326
VBF_Vh_htoWW(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:313
double computeThValue()
Definition: lightHiggs.cpp:317
Definition: QCD.h:735
double computeThValue()
Definition: lightHiggs.cpp:354
double computeSigmaggH_bb(const double sqrt_s) const
The square of the bottom-quark contribution to the ggH cross section in the Standard Model...
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
ggF_tth_htogaga(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:287
ggF_tth_htoZZ(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:274
double THDM_BR_h_bb()
THDM branching ratio of .
Definition: lightHiggs.cpp:210
double computeBrHtogg() const
The Br in the Standard Model.
virtual double v() const
The Higgs vacuum expectation value. where is the Fermi constant, measured through muon decays...
double computeBrHtotautau() const
The Br in the Standard Model.
double ggF_tth
Ratio of THDM and SM cross sections for ggF and tth production of h.
Definition: lightHiggs.h:108
const StandardModel & mySM
Definition: lightHiggs.h:124
VBF_Vh_htoZZ(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:339
lightHiggs(const StandardModel &SM_i)
Definition: lightHiggs.cpp:12
double rh_QdQd
Squared relative coupling of to two down type quarks.
Definition: lightHiggs.h:82
double computeThValue()
Definition: lightHiggs.cpp:343
Definition: QCD.h:732
double rh_Zga
Squared relative coupling of to a boson and a photon.
Definition: lightHiggs.h:138
gslpp::complex f_func(const double x) const
f function for the gamma gamma coupling to h, H and A
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
Definition: QCD.h:869
double computeBrHtoZga() const
The Br in the Standard Model.
double rh_gg
Squared relative coupling of to two gluons.
Definition: lightHiggs.h:131
double rh_QuQu
Squared relative coupling of to two up type quarks.
Definition: lightHiggs.h:144
A base class symmetric Two-Higgs-Doublet models.
Definition: THDM.h:94
const double & getMass() const
A get method to access the particle mass.
Definition: Particle.h:61
ggF_tth_htotautau(const StandardModel &SM_i)
Constructor.
Definition: lightHiggs.cpp:261
double THDM_BR_h_tautau()
THDM branching ratio of .
Definition: lightHiggs.cpp:222
double computeThValue()
Definition: lightHiggs.cpp:278
double computeThValue()
Definition: lightHiggs.cpp:304
double computeSigmaggH(const double sqrt_s) const
The ggH cross section in the Standard Model.
double computeBrHtocc() const
The Br in the Standard Model.
void computeSignalStrengthQuantities()
Definition: lightHiggs.cpp:22
virtual double cW2(const double Mw_i) const
The square of the cosine of the weak mixing angle in the on-shell scheme, denoted as ...
double THDM_BR_h_gaga()
THDM branching ratio of .
Definition: lightHiggs.cpp:216
double computeThValue()
Definition: lightHiggs.cpp:239
double BrSM_htobb
SM branching ratio of .
Definition: lightHiggs.h:63
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 Int1(const double tau, const double lambda) const
function for Z gamma coupling to h, H and A
double rh_VV
Squared relative coupling of to two massive vector bosons.
Definition: lightHiggs.h:88
double computeThValue()
Definition: lightHiggs.cpp:265
double rh_gaga
Squared relative coupling of to two photons.
Definition: lightHiggs.h:102
double computeBrHtogaga() const
The Br in the Standard Model.
double getcosa() const
Definition: THDM.h:214
const THDM * myTHDM
Definition: lightHiggs.h:123
double getmHp() const
Definition: THDM.h:270
double getMz() const
A get method to access the mass of the boson .
std::string getModelTypeflag() const
Definition: THDM.h:158
double computeThValue()
Definition: lightHiggs.cpp:252
complex sqrt(const complex &z)