a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
GeneralTHDMstability.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)), vecMinus1(2,-1.), vecStability(2,0.),
14 LambmatE(4,4,0.), Lambeigvec(4,4,0.), Lambeigval(4,0.)
15{}
16
18{}
19
20
21
22
23
24bool stability_GTHDM::CalcStabeigen(gslpp::matrix<gslpp::complex>& Stabeigvec_i, gslpp::vector<gslpp::complex>& Stabeigval_i)
25{
26 double lambda1 = myGTHDM.getlambda1();
27 double lambda2 = myGTHDM.getlambda2();
28 double lambda3 = myGTHDM.getlambda3();
29 double lambda4 = myGTHDM.getlambda4();
30 double Relambda5 = myGTHDM.getRelambda5();
31 double Imlambda5 = myGTHDM.getImlambda5();
32 double Relambda6 = myGTHDM.getRelambda6();
33 double Relambda7 = myGTHDM.getRelambda7();
34 double Imlambda6 = myGTHDM.getImlambda6();
35 double Imlambda7 = myGTHDM.getImlambda7();
36
37 LambmatE.assign(0,0, ((lambda1+lambda2)/2.0 + lambda3)/2.0);
38 LambmatE.assign(0,1, (Relambda6 + Relambda7)/2.0);
39 LambmatE.assign(0,2, -(Imlambda6 + Imlambda7)/2.0);
40 LambmatE.assign(0,3, (lambda1 - lambda2)/4.0);
41 LambmatE.assign(1,0, -(Relambda6 + Relambda7)/2.0);
42 LambmatE.assign(1,1, -(lambda4 + Relambda5)/2.0);
43 LambmatE.assign(1,2, Imlambda5/2.0);
44 LambmatE.assign(1,3, -(Relambda6 - Relambda7)/2.0);
45 LambmatE.assign(2,0, (Imlambda6 + Imlambda7)/2.0);
46 LambmatE.assign(2,1, Imlambda5/2.0);
47 LambmatE.assign(2,2, -(lambda4 - Relambda5)/2.0);
48 LambmatE.assign(2,3, (Imlambda6 - Imlambda7)/2.0);
49 LambmatE.assign(3,0, -(lambda1 - lambda2)/4.0);
50 LambmatE.assign(3,1, -(Relambda6 - Relambda7)/2.0);
51 LambmatE.assign(3,2, (Imlambda6 - Imlambda7)/2.0);
52 LambmatE.assign(3,3, (-(lambda1+lambda2)/2.0 + lambda3)/2.0);
53
54 LambmatE.eigensystem(Stabeigvec_i, Stabeigval_i);
55
56 return true;
57}
58
59
60
61
62
63gslpp::vector<double> stability_GTHDM::getStability()
64{
65
66 //We will include the conditions from Ivanov (hep-ph/0609018) for the boundness from below
67 //The vacuum stability constraints are obtained similarly as showned by Ivanov and Silva (1507.05100)
68 //Look at 2210.00024 for a recent review.
69
70 CalcStabeigen(Lambeigvec,Lambeigval);
71
72 //The eigenvectors must be real
73 if((Lambeigval(0)).imag()<10.e-15 && (Lambeigval(1)).imag()<10.e-15 && (Lambeigval(2)).imag()<10.e-15 && (Lambeigval(3)).imag()<10.e-15){
74
75 //Now we need to find the position of the timelike eigenvector.
76 //First we need to compute the modulus.
77 double mink_mod_sq_0=(Lambeigvec(0,0).real())*(Lambeigvec(0,0).real())-((Lambeigvec(1,0).real())*(Lambeigvec(1,0).real())+(Lambeigvec(2,0).real())*(Lambeigvec(2,0).real())+(Lambeigvec(3,0).real())*(Lambeigvec(3,0).real()));
78 double mink_mod_sq_1=(Lambeigvec(0,1).real())*(Lambeigvec(0,1).real())-((Lambeigvec(1,1).real())*(Lambeigvec(1,1).real())+(Lambeigvec(2,1).real())*(Lambeigvec(2,1).real())+(Lambeigvec(3,1).real())*(Lambeigvec(3,1).real()));
79 double mink_mod_sq_2=(Lambeigvec(0,2).real())*(Lambeigvec(0,2).real())-((Lambeigvec(1,2).real())*(Lambeigvec(1,2).real())+(Lambeigvec(2,2).real())*(Lambeigvec(2,2).real())+(Lambeigvec(3,2).real())*(Lambeigvec(3,2).real()));
80 double mink_mod_sq_3=(Lambeigvec(0,3).real())*(Lambeigvec(0,3).real())-((Lambeigvec(1,3).real())*(Lambeigvec(1,3).real())+(Lambeigvec(2,3).real())*(Lambeigvec(2,3).real())+(Lambeigvec(3,3).real())*(Lambeigvec(3,3).real()));
81
82 //Now we find here the position of the timelike.
83 //There are for sure ways of ordering a vector but since it's short let's do it as follows which will be more efficient. This can be modified later.
84 //Note that we really don't need to order them but just to find the time-like
85 int postemp=-1;
86 int possp1=-1;
87 int possp2=-1;
88 int possp3=-1;
89 if(mink_mod_sq_0>0){
90 postemp=0;
91 possp1=1;
92 possp2=2;
93 possp3=3;
94 }
95 else{
96 if(mink_mod_sq_1>0){
97 possp1=0;
98 postemp=1;
99 possp2=2;
100 possp3=3;
101 }
102 else{
103 if(mink_mod_sq_2>0){
104 possp1=0;
105 possp2=1;
106 postemp=2;
107 possp3=3;
108 }
109 else{
110 if(mink_mod_sq_3>0){
111 possp1=0;
112 possp2=1;
113 possp3=2;
114 postemp=3;
115 }
116 }
117 }
118 }
119 if(postemp==-1){
120 return vecMinus1;
121 }
122 else{
123 double Lambda0=(Lambeigval(postemp)).real();
124 double Lambda1=(Lambeigval(possp1)).real();
125 double Lambda2=(Lambeigval(possp2)).real();
126 double Lambda3=(Lambeigval(possp3)).real();
127
128 if(Lambda0>0){
129 if(Lambda0>Lambda1 && Lambda0>Lambda2 && Lambda0>Lambda3){
130
131 vecStability(0)=Lambda0;
132 vecStability(1)=-1;
133
134 double mHp1 = myGTHDM.getmHp();
135 double vh = myGTHDM.v();
136
137 double xi_n=mHp1*mHp1/(vh*vh);
138 double DetS=-((Lambda0-xi_n)*(Lambda1-xi_n)*(Lambda2-xi_n)*(Lambda3-xi_n));
139
140 if(DetS>0){
141 vecStability(1)= DetS;
142 }
143 else{
144 if(xi_n-Lambda0>0){
145 vecStability(1)= xi_n-Lambda0;
146 }
147 }
148
149 return vecStability;
150 }
151 else{
152 return vecMinus1;
153 }
154 }
155 else{
156 return vecMinus1;
157 }
158 }
159 }
160 else{
161 return vecMinus1;
162 }
163
164}
165
166
167
168
169
170
171
172
173
175: ThObservable(SM_i), mystability_GTHDM(SM_i)
176{}
177
179{
180 return (mystability_GTHDM.getStability())(0);
181}
182
183
184
185
186
188: ThObservable(SM_i), mystability_GTHDM(SM_i)
189{}
190
192{
193 return (mystability_GTHDM.getStability())(1);
194}
const GeneralTHDM & myGTHDM
A model class for the Standard Model.
A class for a model prediction of an observable.
Definition: ThObservable.h:25
bounded_from_below_GTHDM(const StandardModel &SM_i)
bounded_from_below_GTHDM 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 .
stability_GTHDM(const StandardModel &SM_i)
Constructor.
virtual ~stability_GTHDM()
Destructor.
vacuum_stability_GTHDM(const StandardModel &SM_i)
vacuum_stability_GTHDM constructor.
stability_GTHDM mystability_GTHDM