a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
LRSMquantities.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "LRSMquantities.h"
9#include "gslpp.h"
11
13: myLRSM(LRSM_in), Msqneutral(5, 5, 0.)
14{
15}
16
17//LRSMquantities::LRSMquantities(const StandardModel& SM_i)
18//: myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i)), Msqneutral(5,5,0.)
19//{}
20
22{
23}
24
25bool LRSMquantities::CalcNeutralMasses(gslpp::matrix<gslpp::complex>& U_i, double mH0sq[5])
26{
27 double Ale = myLRSM.getAle();
28 double cW2 = myLRSM.c02();
29 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
30 double g2_2 = g2*g2;
31 double vev = myLRSM.v();
32 double mH2psq = myLRSM.getmH2p_2();
33 double xi = myLRSM.getxi_LRSM();
34 double xi2 = xi*xi;
35 double kappa = sqrt(0.5) * vev * (1.0 - 0.5 * xi * xi);
36 double kappasq = kappa*kappa;
37 double mWR = myLRSM.getmWR();
38 double mWR2 = mWR*mWR;
43 double rho1 = myLRSM.getrho1_LRSM();
44 double alpha1 = myLRSM.getalpha1_LRSM();
45 double alpha2 = myLRSM.getalpha2_LRSM();
46
47 Msqneutral.assign(0, 0, (-((2.0 * mH2psq * mWR2 * xi2) / (g2_2 * kappasq + 2.0 * mWR2)) + 4.0 * kappasq * (xi2 - 1.0)*(lambda1 + xi * (2.0 * lambda4 + 2.0 * lambda2 * xi + lambda3 * xi))) / (xi2 - 1.0));
48 Msqneutral.assign(0, 2, ((2.0 * mH2psq * mWR2 * xi) / (g2_2 * kappasq + 2.0 * mWR2) + 4.0 * kappasq * (xi2 - 1.0)*((lambda1 + 2.0 * lambda2 + lambda3) * xi + lambda4 * (1.0 + xi2))) / (xi2 - 1.0));
49 Msqneutral.assign(0, 4, (2.0 * kappa * mWR * (alpha1 + 2.0 * alpha2 * xi)) / g2);
50 //
51 Msqneutral.assign(1, 1, -((xi2 * ((2.0 * mH2psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2) + 4.0 * kappasq * (2.0 * lambda2 - lambda3)*(xi2 - 1.0))) / (xi2 - 1.0)));
52 Msqneutral.assign(1, 3, -((xi * ((2.0 * mH2psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2) + 4.0 * kappasq * (2.0 * lambda2 - lambda3)*(xi2 - 1.0))) / (xi2 - 1.0)));
53 //
54 Msqneutral.assign(2, 0, ((2.0 * mH2psq * mWR2 * xi) / (g2_2 * kappasq + 2.0 * mWR2) + 4.0 * kappasq * (xi2 - 1.0)*((lambda1 + 2.0 * lambda2 + lambda3) * xi + lambda4 * (1.0 + xi2))) / (xi2 - 1.0));
55 Msqneutral.assign(2, 2, (-((2.0 * mH2psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2)) + 4.0 * kappasq * (xi2 - 1.0)*(2.0 * lambda2 + lambda3 + 2.0 * lambda4 * xi + lambda1 * xi2)) / (xi2 - 1.0));
56 Msqneutral.assign(2, 4, (2.0 * kappa * mWR * (2.0 * alpha2 + ((2.0 * mH2psq) / (kappasq + (2.0 * mWR2) / g2_2) + alpha1) * xi)) / g2);
57 //
58 Msqneutral.assign(3, 1, -((xi * ((2.0 * mH2psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2) + 4.0 * kappasq * (2.0 * lambda2 - lambda3)*(xi2 - 1.0))) / (xi2 - 1.0)));
59 Msqneutral.assign(3, 3, -(((2.0 * mH2psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2) + 4.0 * kappasq * (2.0 * lambda2 - lambda3)*(xi2 - 1.0)) / (xi2 - 1.0)));
60 //
61 Msqneutral.assign(4, 0, (2.0 * kappa * mWR * (alpha1 + 2.0 * alpha2 * xi)) / g2);
62 Msqneutral.assign(4, 2, (2.0 * kappa * mWR * (2.0 * alpha2 + ((2.0 * mH2psq) / (kappasq + (2.0 * mWR2) / g2_2) + alpha1) * xi)) / g2);
63 Msqneutral.assign(4, 4, (4.0 * mWR2 * rho1) / g2_2);
64
65 gslpp::vector<gslpp::complex> mH0sq_i(5, 0.);
66 Msqneutral.eigensystem(U_i, mH0sq_i);
67 for (int i = 0; i < 5; i++) {
68 mH0sq[i] = mH0sq_i(i).real();
69 }
70
71 int newIndex[5];
72 for (int i = 0; i < 5; i++)
73 newIndex[i] = i;
74
75 /* sort sfermion masses in increasing order */
76 for (int i = 0; i < 4; i++) {
77 for (int k = i + 1; k < 5; k++)
78 if (mH0sq[i] > mH0sq[k]) {
79 std::swap(mH0sq[i], mH0sq[k]);
80 std::swap(newIndex[i], newIndex[k]);
81 }
82 }
83
84 return true;
85}
86
88{
89 double Ale = myLRSM.getAle();
90 double cW2 = myLRSM.c02();
91 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
92 double g2_2 = g2*g2;
93 double vev = myLRSM.v();
94 double mH1psq = myLRSM.getmH1p_2();
95 double mH2psq = myLRSM.getmH2p_2();
96 double xi = myLRSM.getxi_LRSM();
97 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
98 double mWR = myLRSM.getmWR();
99 double mWR2 = mWR*mWR;
100 double lambda1 = myLRSM.getlambda1_LRSM();
101 double rho1 = myLRSM.getrho1_LRSM();
102 double alpha1 = myLRSM.getalpha1_LRSM();
103
104 mH0sq_app[0] = kappasq * (4.0 * lambda1 - (alpha1 * alpha1) / rho1)+(2.0 * mH2psq * mWR2 * xi * xi) / (g2_2 * kappasq + 2.0 * mWR2);
105 mH0sq_app[1] = (4.0 * mWR2 * rho1) / g2_2;
106 mH0sq_app[2] = (g2_2 * kappasq * (mH1psq - mH2psq) + 2.0 * mH1psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2);
107 mH0sq_app[3] = (2.0 * mH2psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2);
108
109 int newIndex[4];
110 for (int i = 0; i < 4; i++)
111 newIndex[i] = i;
112
113 /* sort sfermion masses in increasing order */
114 for (int i = 0; i < 3; i++) {
115 for (int k = i + 1; k < 4; k++)
116 if (mH0sq_app[i] > mH0sq_app[k]) {
117 std::swap(mH0sq_app[i], mH0sq_app[k]);
118 std::swap(newIndex[i], newIndex[k]);
119 }
120 }
121
122 return true;
123}
124
126: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
127{
128}
129
131{
132 double Ale = myLRSM->getAle();
133 double cW2 = myLRSM->c02();
134 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
135 double g2_2 = g2*g2;
136 double vev = myLRSM->v();
137 double xi = myLRSM->getxi_LRSM();
138 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
139 double mWR = myLRSM->getmWR();
140 double mWR2 = mWR*mWR;
141 double lambda1 = myLRSM->getlambda1_LRSM();
142 double alpha1 = myLRSM->getalpha1_LRSM();
143 // bool CPviolation=myLRSM->getCPVflag();
144
145 // double mu1_2=0.0;
146 // if(CPviolation)
147 // {
148 // }
149 // else
150 // {
151 // }
152 return (mWR2 * alpha1) / g2_2 + 2.0 * kappasq*lambda1;
153}
154
156: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
157{
158}
159
161{
162 double Ale = myLRSM->getAle();
163 double cW2 = myLRSM->c02();
164 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
165 double g2_2 = g2*g2;
166 double vev = myLRSM->v();
167 double mH2psq = myLRSM->getmH2p_2();
168 double xi = myLRSM->getxi_LRSM();
169 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
170 double mWR = myLRSM->getmWR();
171 double mWR2 = mWR*mWR;
172 double lambda4 = myLRSM->getlambda4_LRSM();
173 double alpha2 = myLRSM->getalpha2_LRSM();
174
175 return (mWR2 * alpha2) / g2_2 + kappasq * lambda4 + (mH2psq * mWR2 * xi) / (g2_2 * kappasq + 2.0 * mWR2);
176}
177
179: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
180{
181}
182
184{
185 double Ale = myLRSM->getAle();
186 double cW2 = myLRSM->c02();
187 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
188 double g2_2 = g2*g2;
189 double vev = myLRSM->v();
190 double xi = myLRSM->getxi_LRSM();
191 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
192 double mWR = myLRSM->getmWR();
193 double mWR2 = mWR*mWR;
194 double rho1 = myLRSM->getrho1_LRSM();
195 double alpha1 = myLRSM->getalpha1_LRSM();
196
197 return (2.0 * mWR2 * rho1) / g2_2 + kappasq*alpha1;
198}
199
201: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
202{
203}
204
206{
207 double Ale = myLRSM->getAle();
208 double cW2 = myLRSM->c02();
209 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
210 double g2_2 = g2*g2;
211 double vev = myLRSM->v();
212 double mH2psq = myLRSM->getmH2p_2();
213 double mdeltappRsq = myLRSM->getmdeltappR_2();
214 double xi = myLRSM->getxi_LRSM();
215 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
216 double mWR = myLRSM->getmWR();
217 double mWR2 = mWR*mWR;
218
219 return g2_2 * (mdeltappRsq - (2.0 * kappasq * mH2psq) / (kappasq + (2.0 * mWR2) / g2_2)) / (4.0 * mWR2);
220}
221
223: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
224{
225}
226
228{
229 double Ale = myLRSM->getAle();
230 double cW2 = myLRSM->c02();
231 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
232 double g2_2 = g2*g2;
233 double vev = myLRSM->v();
234 double mH1psq = myLRSM->getmH1p_2();
235 double mH2psq = myLRSM->getmH2p_2();
236 double xi = myLRSM->getxi_LRSM();
237 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
238 double mWR = myLRSM->getmWR();
239 double mWR2 = mWR*mWR;
240 double rho1 = myLRSM->getrho1_LRSM();
241
242 return 2.0 * rho1 + g2_2 / mWR2 * (mH1psq - (g2_2 * kappasq * mH2psq) / (g2_2 * kappasq + 2.0 * mWR2));
243}
244
246: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
247{
248}
249
251{
252 double Ale = myLRSM->getAle();
253 double cW2 = myLRSM->c02();
254 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
255 double g2_2 = g2*g2;
256 double vev = myLRSM->v();
257 double mH2psq = myLRSM->getmH2p_2();
258 double xi = myLRSM->getxi_LRSM();
259 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
260 double mWR = myLRSM->getmWR();
261 double mWR2 = mWR*mWR;
262
263 return (2.0 * mH2psq) / ((2.0 * mWR2) / g2_2 + kappasq);
264}
265
267: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
268{
269}
270
272{
273 double Ale = myLRSM->getAle();
274 double cW2 = myLRSM->c02();
275 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
276 double g2_2 = g2*g2;
277 double vev = myLRSM->v();
278 double mH1psq = myLRSM->getmH1p_2();
279 double mH2psq = myLRSM->getmH2p_2();
280 double xi = myLRSM->getxi_LRSM();
281 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
282 double mWR = myLRSM->getmWR();
283 double mWR2 = mWR*mWR;
284
285 return sqrt((g2_2 * kappasq * (mH1psq - mH2psq) + 2.0 * mH1psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2));
286}
287
289: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
290{
291}
292
294{
295 double Ale = myLRSM->getAle();
296 double cW2 = myLRSM->c02();
297 double g2 = sqrt(4.0 * M_PI * Ale / (1 - cW2));
298 double g2_2 = g2*g2;
299 double vev = myLRSM->v();
300 double mH1psq = myLRSM->getmH1p_2();
301 double mH2psq = myLRSM->getmH2p_2();
302 double xi = myLRSM->getxi_LRSM();
303 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
304 double mWR = myLRSM->getmWR();
305 double mWR2 = mWR*mWR;
306
307 return sqrt((g2_2 * kappasq * (mH1psq - mH2psq) + 2.0 * mH1psq * mWR2) / (g2_2 * kappasq + 2.0 * mWR2));
308}
309
311: ThObservable(SM_i), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
312{
313}
314
316{
317 double vev = myLRSM->v();
318 double xi = myLRSM->getxi_LRSM();
319 double kappasq = 0.5 * vev * vev * (1.0 - xi * xi);
320 double lambda1 = myLRSM->getlambda1_LRSM();
321 double rho1 = myLRSM->getrho1_LRSM();
322 double alpha1 = myLRSM->getalpha1_LRSM();
323
324 return sqrt(kappasq * (4.0 * lambda1 - (alpha1 * alpha1) / rho1));
325}
326
327MH0_LRSM::MH0_LRSM(const StandardModel& SM_i, const int ind)
328: ThObservable(SM_i), index(ind), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
329{
330}
331
333{
334 switch (index)
335 {
336 case 0:
337 return sqrt(myLRSM->getmH0sq1());
338 case 1:
339 return sqrt(myLRSM->getmH0sq2());
340 case 2:
341 return sqrt(myLRSM->getmH0sq3());
342 case 3:
343 return sqrt(myLRSM->getmH0sq4());
344 case 4:
345 return sqrt(myLRSM->getmH0sq5());
346 default:
347 throw std::runtime_error("MH0_LRSM::computeThValue(): undefined index");
348 }
349}
350
351MH0_app::MH0_app(const StandardModel& SM_i, const int ind)
352: ThObservable(SM_i), index(ind), myLRSM(static_cast<const LeftRightSymmetricModel*> (&SM_i))
353{
354}
355
357{
358 switch (index)
359 {
360 case 0:
361 return sqrt(myLRSM->getmH0sq1_app());
362 case 1:
363 return sqrt(myLRSM->getmH0sq2_app());
364 case 2:
365 return sqrt(myLRSM->getmH0sq3_app());
366 case 3:
367 return sqrt(myLRSM->getmH0sq4_app());
368 default:
369 throw std::runtime_error("MH0_app::computeThValue(): undefined index");
370 }
371}
~LRSMquantities()
LRSMquantities constructor.
bool CalcNeutralMasses(gslpp::matrix< gslpp::complex > &U_i, double mH0sq[5])
Computes the exact neutral spectrum at tree level.
bool CalcNeutralMasses_app(double mH0sq_app[4])
Computes the approximate neutral spectrum at tree level.
LRSMquantities(const LeftRightSymmetricModel &LRSM_in)
const LeftRightSymmetricModel & myLRSM
gslpp::matrix< double > Msqneutral
Stores the tree-level neutral mass square matrix.
A base class for generic Left Right Symmetric Models.
double getmH0sq1() const
Gets the first scalar mass square.
double getmH0sq3() const
Gets the third scalar mass square.
double getmH0sq4() const
Gets the fourth scalar mass square.
double getmH0sq5() const
Gets the fifth scalar mass square.
double getmH0sq2() const
Gets the second scalar mass square.
double getmH0sq3_app() const
Gets the approximate third scalar mass square.
double getmH0sq1_app() const
Gets the approximate first scalar mass square.
double getmH0sq2_app() const
Gets the approximate second scalar mass square.
double getmH0sq4_app() const
Gets the approximate fourth scalar mass square.
MH01_app1(const StandardModel &SM_i)
MH01_app1 constructor.
double computeThValue()
const LeftRightSymmetricModel * myLRSM
MH05_LRSM(const StandardModel &SM_i)
MH05_LRSM constructor.
const LeftRightSymmetricModel * myLRSM
double computeThValue()
const LeftRightSymmetricModel * myLRSM
MH06_LRSM(const StandardModel &SM_i)
MH06_LRSM constructor.
double computeThValue()
double computeThValue()
const LeftRightSymmetricModel * myLRSM
MH0_LRSM(const StandardModel &SM_i, const int ind)
const int index
double computeThValue()
const int index
MH0_app(const StandardModel &SM_i, const int ind)
const LeftRightSymmetricModel * myLRSM
A model class for the Standard Model.
const double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections.
const double v() const
The Higgs vacuum expectation value.
const double getAle() const
A get method to retrieve the fine-structure constant .
A class for a model prediction of an observable.
Definition: ThObservable.h:25
const LeftRightSymmetricModel * myLRSM
double computeThValue()
alpha3_LRSM(const StandardModel &SM_i)
alpha3_LRSM constructor.
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 .
mu1_2_LRSM(const StandardModel &SM_i)
mu1_2_LRSM constructor.
const LeftRightSymmetricModel * myLRSM
double computeThValue()
double computeThValue()
const LeftRightSymmetricModel * myLRSM
mu2_2_LRSM(const StandardModel &SM_i)
mu2_2_LRSM constructor.
double computeThValue()
mu3_2_LRSM(const StandardModel &SM_i)
mu3_2_LRSM constructor.
const LeftRightSymmetricModel * myLRSM
double computeThValue()
rho2_LRSM(const StandardModel &SM_i)
rho2_LRSM constructor.
const LeftRightSymmetricModel * myLRSM
rho3_LRSM(const StandardModel &SM_i)
rho3_LRSM constructor.
const LeftRightSymmetricModel * myLRSM
double computeThValue()
A class for , relevant for mesons mixing in the Standard Model.
Definition: xi.h:23