a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
GeneralTHDMunitarity.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016 HEPfit Collaboration
3 * All rights reserved.
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
9#include "GeneralTHDM.h"
10#include "GeneralTHDMcache.h"
11
13: myGTHDM(static_cast<const GeneralTHDM&> (SM_i)), Smat21(3,3,0.), Smat01(4,4,0.), Smat00(4,4,0.),
14 Seigvec21(3,3,0.), Seigvec01(4,4,0.), Seigvec00(4,4,0.), Seigval21(3,0.), Seigval01(4,0.), Seigval00(4,0.)
15{}
16
18{}
19
20bool unitarity_GTHDM::CalcSeigen21(gslpp::matrix<gslpp::complex>& Seigvec_i, gslpp::vector<double>& Seigval_i)
21{
22 double lambda1 = myGTHDM.getlambda1();
23 double lambda2 = myGTHDM.getlambda2();
24 double lambda3 = myGTHDM.getlambda3();
25 double lambda4 = myGTHDM.getlambda4();
26 double Relambda5 = myGTHDM.getRelambda5();
27 double Imlambda5 = myGTHDM.getImlambda5();
28 double Relambda6 = myGTHDM.getRelambda6();
29 double Relambda7 = myGTHDM.getRelambda7();
30 double Imlambda6 = myGTHDM.getImlambda6();
31 double Imlambda7 = myGTHDM.getImlambda7();
32
33 gslpp::complex i = gslpp::complex::i();
34
35 Smat21.assign(0,0, lambda1);
36 Smat21.assign(0,1, Relambda5 + i*Imlambda5);
37 Smat21.assign(0,2, sqrt(2)*(Relambda6 + i*Imlambda6));
38 Smat21.assign(1,0, Relambda5 - i*Imlambda5);
39 Smat21.assign(1,1, lambda2);
40 Smat21.assign(1,2, sqrt(2)*(Relambda7 - i*Imlambda7));
41 Smat21.assign(2,0, sqrt(2)*(Relambda6 - i*Imlambda6));
42 Smat21.assign(2,1, sqrt(2)*(Relambda7 + i*Imlambda7));
43 Smat21.assign(2,2, lambda3 + lambda4);
44
45 Smat21.eigensystem(Seigvec_i, Seigval_i);
46
47 return true;
48}
49
50bool unitarity_GTHDM::CalcSeigen01(gslpp::matrix<gslpp::complex>& Seigvec_i, gslpp::vector<double>& Seigval_i)
51{
52 double lambda1 = myGTHDM.getlambda1();
53 double lambda2 = myGTHDM.getlambda2();
54 double lambda3 = myGTHDM.getlambda3();
55 double lambda4 = myGTHDM.getlambda4();
56 double Relambda5 = myGTHDM.getRelambda5();
57 double Imlambda5 = myGTHDM.getImlambda5();
58 double Relambda6 = myGTHDM.getRelambda6();
59 double Relambda7 = myGTHDM.getRelambda7();
60 double Imlambda6 = myGTHDM.getImlambda6();
61 double Imlambda7 = myGTHDM.getImlambda7();
62
63 gslpp::complex i = gslpp::complex::i();
64
65 Smat01.assign(0,0, lambda1);
66 Smat01.assign(0,1, lambda4);
67 Smat01.assign(0,2, Relambda6 + i*Imlambda6);
68 Smat01.assign(0,3, Relambda6 - i*Imlambda6);
69 Smat01.assign(1,0, lambda4);
70 Smat01.assign(1,1, lambda2);
71 Smat01.assign(1,2, Relambda7 + i*Imlambda7);
72 Smat01.assign(1,3, Relambda7 - i*Imlambda7);
73 Smat01.assign(2,0, Relambda6 - i*Imlambda6);
74 Smat01.assign(2,1, Relambda7 - i*Imlambda7);
75 Smat01.assign(2,2, lambda3);
76 Smat01.assign(2,3, Relambda5 - i*Imlambda5);
77 Smat01.assign(3,0, Relambda6 + i*Imlambda6);
78 Smat01.assign(3,1, Relambda7 + i*Imlambda7);
79 Smat01.assign(3,2, Relambda5 + i*Imlambda5);
80 Smat01.assign(3,3, lambda3);
81
82 Smat01.eigensystem(Seigvec_i, Seigval_i);
83
84 return true;
85}
86
87bool unitarity_GTHDM::CalcSeigen00(gslpp::matrix<gslpp::complex>& Seigvec_i, gslpp::vector<double>& Seigval_i)
88{
89 double lambda1 = myGTHDM.getlambda1();
90 double lambda2 = myGTHDM.getlambda2();
91 double lambda3 = myGTHDM.getlambda3();
92 double lambda4 = myGTHDM.getlambda4();
93 double Relambda5 = myGTHDM.getRelambda5();
94 double Imlambda5 = myGTHDM.getImlambda5();
95 double Relambda6 = myGTHDM.getRelambda6();
96 double Relambda7 = myGTHDM.getRelambda7();
97 double Imlambda6 = myGTHDM.getImlambda6();
98 double Imlambda7 = myGTHDM.getImlambda7();
99
100 gslpp::complex i = gslpp::complex::i();
101
102 Smat00.assign(0,0, 3.*lambda1);
103 Smat00.assign(0,1, 2.*lambda3 + lambda4);
104 Smat00.assign(0,2, 3.*(Relambda6 + i*Imlambda6));
105 Smat00.assign(0,3, 3.*(Relambda6 - i*Imlambda6));
106 Smat00.assign(1,0, 2.*lambda3 + lambda4);
107 Smat00.assign(1,1, 3.*lambda2);
108 Smat00.assign(1,2, 3.*(Relambda7 + i*Imlambda7));
109 Smat00.assign(1,3, 3.*(Relambda7 - i*Imlambda7));
110 Smat00.assign(2,0, 3.*(Relambda6 - i*Imlambda6));
111 Smat00.assign(2,1, 3.*(Relambda7 - i*Imlambda7));
112 Smat00.assign(2,2, lambda3 + 2.*lambda4);
113 Smat00.assign(2,3, 3.*(Relambda5 - i*Imlambda5));
114 Smat00.assign(3,0, 3.*(Relambda6 + i*Imlambda6));
115 Smat00.assign(3,1, 3.*(Relambda7 + i*Imlambda7));
116 Smat00.assign(3,2, 3.*(Relambda5 + i*Imlambda5));
117 Smat00.assign(3,3, lambda3 + 2.*lambda4);
118
119 Smat00.eigensystem(Seigvec_i, Seigval_i);
120
121 return true;
122}
123
124gslpp::vector<double> unitarity_GTHDM::getSeigen21()
125{
127
128 return Seigval21;
129}
130
131gslpp::vector<double> unitarity_GTHDM::getSeigen01()
132{
134
135 return Seigval01;
136}
137
138gslpp::vector<double> unitarity_GTHDM::getSeigen00()
139{
141
142 return Seigval00;
143}
144
145
146
148{
149 //ONLY VALID IN THE CP-conserving LIMIT!!!
150
151 double mH1sq = myGTHDM.getmH1sq();
152 //double mH2sq = myGTHDM.getmH2sq();
153 double mHpsq = myGTHDM.getmHp2();
154 double vev = myGTHDM.v();
155
156 double rsqH1_Hp=mH1sq/mHpsq;
157
158 double Zrat = myGTHDM.getMyGTHDMCache()->ip_integral_perturb_ATHDM(rsqH1_Hp);
159
160 double lambda3 = myGTHDM.getlambda3();
161 double Relambda7 = myGTHDM.getRelambda7();
162 double cosalpha = myGTHDM.getcosalpha1();
163 double sinalpha = myGTHDM.getsinalpha1();
164
165 double lambdahHpHm = lambda3*cosalpha+Relambda7*sinalpha;
166
167
168
169
170 return (Zrat*vev*vev*lambdahHpHm*lambdahHpHm)/(16*M_PI*mHpsq);
171}
172
173
174
176{
177 //ONLY VALID IN THE CP-conserving LIMIT!!!
178
179 double mH2sq = myGTHDM.getmH2sq();
180 //double mH2sq = myGTHDM.getmH2sq();
181 double mHpsq = myGTHDM.getmHp2();
182 double vev = myGTHDM.v();
183
184 double rsqH2_Hp=mH2sq/mHpsq;
185
186 double Zrat = myGTHDM.getMyGTHDMCache()->ip_integral_perturb_ATHDM(rsqH2_Hp);
187
188 double lambda3 = myGTHDM.getlambda3();
189 double Relambda7 = myGTHDM.getRelambda7();
190 double cosalpha = myGTHDM.getcosalpha1();
191 double sinalpha = myGTHDM.getsinalpha1();
192
193 double lambdaHHpHm = -lambda3*sinalpha+Relambda7*cosalpha;
194
195
196
197
198 return (Zrat*vev*vev*lambdaHHpHm*lambdaHHpHm)/(16*M_PI*mHpsq);
199}
200
201
202
203
204
205
207: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
208{}
209
211{
212 return (myunitarity_GTHDM.getSeigen21())(0);
213}
214
215
217: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
218{}
219
221{
222 return (myunitarity_GTHDM.getSeigen21())(1);
223}
224
225
227: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
228{}
229
231{
232 return (myunitarity_GTHDM.getSeigen21())(2);
233}
234
235
237: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
238{}
239
241{
242 return (myunitarity_GTHDM.getSeigen01())(0);
243}
244
245
247: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
248{}
249
251{
252 return (myunitarity_GTHDM.getSeigen01())(1);
253}
254
255
257: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
258{}
259
261{
262 return (myunitarity_GTHDM.getSeigen01())(2);
263}
264
265
267: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
268{}
269
271{
272 return (myunitarity_GTHDM.getSeigen01())(3);
273}
274
275
277: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
278{}
279
281{
282 return (myunitarity_GTHDM.getSeigen00())(0);
283}
284
285
287: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
288{}
289
291{
292 return (myunitarity_GTHDM.getSeigen00())(1);
293}
294
295
297: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
298{}
299
301{
302 return (myunitarity_GTHDM.getSeigen00())(2);
303}
304
305
307: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
308{}
309
311{
312 return (myunitarity_GTHDM.getSeigen00())(3);
313}
314
315
317: ThObservable(SM_i), myGTHDM(static_cast<const GeneralTHDM&> (SM_i))
318{}
319
321{
322 double lambda3 = myGTHDM.getMyGTHDMCache()->lambda3;
323 double lambda4 = myGTHDM.getMyGTHDMCache()->lambda4;
324 return (lambda3-lambda4);
325}
326
327
328
330: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
331{}
332
334{
336}
337
338
340: ThObservable(SM_i), myunitarity_GTHDM(SM_i)
341{}
342
344{
346}
347
348
349
350
351
const GeneralTHDM & myGTHDM
A model class for the Standard Model.
A class for a model prediction of an observable.
Definition: ThObservable.h:25
parameter of the Higgs potential
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling .
An observable class for the quartic Higgs potential coupling .
unitarity_GTHDM myunitarity_GTHDM
perturbativity1_GTHDM(const StandardModel &SM_i)
perturbativity1_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
perturbativity2_GTHDM(const StandardModel &SM_i)
perturbativity2_GTHDM constructor.
unitarity10_GTHDM(const StandardModel &SM_i)
unitarity10_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
unitarity_GTHDM myunitarity_GTHDM
unitarity11_GTHDM(const StandardModel &SM_i)
unitarity11_GTHDM constructor.
unitarity12_GTHDM(const StandardModel &SM_i)
unitarity12_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
unitarity_GTHDM myunitarity_GTHDM
unitarity1_GTHDM(const StandardModel &SM_i)
unitarity1_GTHDM constructor.
unitarity2_GTHDM(const StandardModel &SM_i)
unitarity2_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
unitarity_GTHDM myunitarity_GTHDM
unitarity3_GTHDM(const StandardModel &SM_i)
unitarity3_GTHDM constructor.
unitarity4_GTHDM(const StandardModel &SM_i)
unitarity4_GTHDM constructor.
const GeneralTHDM & myGTHDM
unitarity_GTHDM myunitarity_GTHDM
unitarity5_GTHDM(const StandardModel &SM_i)
unitarity5_GTHDM constructor.
unitarity6_GTHDM(const StandardModel &SM_i)
unitarity6_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
unitarity_GTHDM myunitarity_GTHDM
unitarity7_GTHDM(const StandardModel &SM_i)
unitarity7_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
unitarity8_GTHDM(const StandardModel &SM_i)
unitarity8_GTHDM constructor.
unitarity9_GTHDM(const StandardModel &SM_i)
unitarity9_GTHDM constructor.
unitarity_GTHDM myunitarity_GTHDM
bool CalcSeigen01(gslpp::matrix< gslpp::complex > &Seigvec_i, gslpp::vector< double > &Seigval_i)
Computes the eigenvalues of the S matrix with .
gslpp::vector< double > getSeigen00()
Assigns to a vector the eigenvalues of the S matrix with .
double RelCorrHHpHm()
Computes the relative correction of the vertex HHpHm (so NLO/LO contribution to that vertex)
gslpp::matrix< gslpp::complex > Smat21
gslpp::matrix< gslpp::complex > Seigvec01
gslpp::vector< double > Seigval00
const GeneralTHDM & myGTHDM
gslpp::vector< double > getSeigen21()
Assigns to a vector the eigenvalues of the S matrix with .
bool CalcSeigen00(gslpp::matrix< gslpp::complex > &Seigvec_i, gslpp::vector< double > &Seigval_i)
Computes the eigenvalues of the S matrix with .
double RelCorrhHpHm()
Computes the relative correction of the vertex hHpHm (so NLO/LO contribution to that vertex)
unitarity_GTHDM(const StandardModel &SM_i)
Constructor.
gslpp::vector< double > getSeigen01()
Assigns to a vector the eigenvalues of the S matrix with .
gslpp::matrix< gslpp::complex > Smat00
gslpp::matrix< gslpp::complex > Smat01
gslpp::vector< double > Seigval21
gslpp::vector< double > Seigval01
bool CalcSeigen21(gslpp::matrix< gslpp::complex > &Seigvec_i, gslpp::vector< double > &Seigval_i)
Computes the eigenvalues of the S matrix with .
gslpp::matrix< gslpp::complex > Seigvec21
gslpp::matrix< gslpp::complex > Seigvec00
virtual ~unitarity_GTHDM()
Destructor.