43template <
typename Derived>
44void hermitianize(Eigen::MatrixBase<Derived>& m)
49template <
typename T> T
sqr(T x) {
return x*x; }
55#define CLASSNAME MSSMNoFV_onshell_mass_eigenstates
56#define PHYSICAL(parameter) physical.parameter
58void CLASSNAME::do_force_output(
bool flag)
63bool CLASSNAME::do_force_output()
const
93int CLASSNAME::solve_ewsb_tree_level()
95 return solve_ewsb_tree_level_via_soft_higgs_masses();
98int CLASSNAME::solve_ewsb_tree_level_via_soft_higgs_masses()
105 mHd2 = (0.025*(-40*vd*
sqr(Mu) + 20*vu*BMu + 20*vu*
107 (vu) + 5*vd*
sqr(g2)*
sqr(vu)))/vd;
108 mHu2 = (0.025*(-40*vu*
sqr(Mu) + 20*vd*BMu + 20*vd*
110 (vd) + 5*vu*
sqr(g2)*
sqr(vd)))/vu;
112 const bool is_finite = std::isfinite(mHd2) && std::isfinite(mHu2);
123int CLASSNAME::solve_ewsb()
125 return solve_ewsb_tree_level();
128void CLASSNAME::print(std::ostream&
ostr)
const
130 ostr <<
"========================================\n"
132 "========================================\n";
134 ostr <<
"----------------------------------------\n"
135 "tree-level DRbar masses:\n"
136 "----------------------------------------\n";
137 ostr <<
"MVG = " << MVG <<
'\n';
138 ostr <<
"MGlu = " << MGlu <<
'\n';
139 ostr <<
"MVP = " << MVP <<
'\n';
140 ostr <<
"MVZ = " << MVZ <<
'\n';
141 ostr <<
"MFd = " << MFd <<
'\n';
142 ostr <<
"MFs = " << MFs <<
'\n';
143 ostr <<
"MFb = " << MFb <<
'\n';
144 ostr <<
"MFu = " << MFu <<
'\n';
145 ostr <<
"MFc = " << MFc <<
'\n';
146 ostr <<
"MFt = " << MFt <<
'\n';
147 ostr <<
"MFve = " << MFve <<
'\n';
148 ostr <<
"MFvm = " << MFvm <<
'\n';
149 ostr <<
"MFvt = " << MFvt <<
'\n';
150 ostr <<
"MFe = " << MFe <<
'\n';
151 ostr <<
"MFm = " << MFm <<
'\n';
152 ostr <<
"MFtau = " << MFtau <<
'\n';
153 ostr <<
"MSveL = " << MSveL <<
'\n';
154 ostr <<
"MSvmL = " << MSvmL <<
'\n';
155 ostr <<
"MSvtL = " << MSvtL <<
'\n';
156 ostr <<
"MSd = " << MSd.transpose() <<
'\n';
157 ostr <<
"MSu = " << MSu.transpose() <<
'\n';
158 ostr <<
"MSe = " << MSe.transpose() <<
'\n';
159 ostr <<
"MSm = " << MSm.transpose() <<
'\n';
160 ostr <<
"MStau = " << MStau.transpose() <<
'\n';
161 ostr <<
"MSs = " << MSs.transpose() <<
'\n';
162 ostr <<
"MSc = " << MSc.transpose() <<
'\n';
163 ostr <<
"MSb = " << MSb.transpose() <<
'\n';
164 ostr <<
"MSt = " << MSt.transpose() <<
'\n';
165 ostr <<
"Mhh = " << Mhh.transpose() <<
'\n';
166 ostr <<
"MAh = " << MAh.transpose() <<
'\n';
167 ostr <<
"MHpm = " << MHpm.transpose() <<
'\n';
168 ostr <<
"MChi = " << MChi.transpose() <<
'\n';
169 ostr <<
"MCha = " << MCha.transpose() <<
'\n';
170 ostr <<
"MVWm = " << MVWm <<
'\n';
172 ostr <<
"----------------------------------------\n"
173 "tree-level DRbar mixing matrices:\n"
174 "----------------------------------------\n";
175 ostr <<
"ZD = " << ZD <<
'\n';
176 ostr <<
"ZU = " << ZU <<
'\n';
177 ostr <<
"ZE = " << ZE <<
'\n';
178 ostr <<
"ZM = " << ZM <<
'\n';
179 ostr <<
"ZTau = " << ZTau <<
'\n';
180 ostr <<
"ZS = " << ZS <<
'\n';
181 ostr <<
"ZC = " << ZC <<
'\n';
182 ostr <<
"ZB = " << ZB <<
'\n';
183 ostr <<
"ZT = " << ZT <<
'\n';
184 ostr <<
"ZH = " << ZH <<
'\n';
185 ostr <<
"ZA = " << ZA <<
'\n';
186 ostr <<
"ZP = " << ZP <<
'\n';
187 ostr <<
"ZN = " << ZN <<
'\n';
188 ostr <<
"UM = " << UM <<
'\n';
189 ostr <<
"UP = " << UP <<
'\n';
191 physical.print(
ostr);
192 problems.print(
ostr);
198void CLASSNAME::calculate_DRbar_masses()
203 solve_ewsb_tree_level_via_soft_higgs_masses();
240 reorder_DRbar_masses();
243void CLASSNAME::copy_DRbar_masses_to_pole_masses()
295 reorder_pole_masses();
304void CLASSNAME::reorder_DRbar_masses()
316void CLASSNAME::reorder_pole_masses()
322Eigen::Array<double,1,1> CLASSNAME::get_MChargedHiggs()
const
330Eigen::Array<double,1,1> CLASSNAME::get_MPseudoscalarHiggs()
const
341double CLASSNAME::get_mass_matrix_VG()
const
346void CLASSNAME::calculate_MVG()
351double CLASSNAME::get_mass_matrix_Glu()
const
356void CLASSNAME::calculate_MGlu()
359 PhaseGlu = std::polar(1., 0.5 * std::arg(std::complex<double>(
mass_matrix_Glu)));
363double CLASSNAME::get_mass_matrix_VP()
const
368void CLASSNAME::calculate_MVP()
374double CLASSNAME::get_mass_matrix_VZ()
const
376 const double tw = 0.7745966692414834*g1/g2;
377 const double rt = std::sqrt(1 +
tw*
tw);
379 const double cw = 1/
rt;
382 sqr(g2*
cw + 0.7745966692414834*g1*
sw);
387void CLASSNAME::calculate_MVZ()
393double CLASSNAME::get_mass_matrix_Fd()
const
400void CLASSNAME::calculate_MFd()
406double CLASSNAME::get_mass_matrix_Fs()
const
413void CLASSNAME::calculate_MFs()
419double CLASSNAME::get_mass_matrix_Fb()
const
426void CLASSNAME::calculate_MFb()
432double CLASSNAME::get_mass_matrix_Fu()
const
439void CLASSNAME::calculate_MFu()
445double CLASSNAME::get_mass_matrix_Fc()
const
452void CLASSNAME::calculate_MFc()
458double CLASSNAME::get_mass_matrix_Ft()
const
465void CLASSNAME::calculate_MFt()
471double CLASSNAME::get_mass_matrix_Fve()
const
476void CLASSNAME::calculate_MFve()
482double CLASSNAME::get_mass_matrix_Fvm()
const
487void CLASSNAME::calculate_MFvm()
493double CLASSNAME::get_mass_matrix_Fvt()
const
498void CLASSNAME::calculate_MFvt()
504double CLASSNAME::get_mass_matrix_Fe()
const
511void CLASSNAME::calculate_MFe()
517double CLASSNAME::get_mass_matrix_Fm()
const
524void CLASSNAME::calculate_MFm()
530double CLASSNAME::get_mass_matrix_Ftau()
const
537void CLASSNAME::calculate_MFtau()
543double CLASSNAME::get_mass_matrix_SveL()
const
551void CLASSNAME::calculate_MSveL()
557double CLASSNAME::get_mass_matrix_SvmL()
const
565void CLASSNAME::calculate_MSvmL()
570 problems.flag_tachyon(
"SvmL");
576double CLASSNAME::get_mass_matrix_SvtL()
const
584void CLASSNAME::calculate_MSvtL()
590Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sd()
const
598 0.7071067811865475*vu*Yd(0,0)*Mu;
607void CLASSNAME::calculate_MSd()
611 MSd =
sqrt(MSd.cwiseAbs());
614Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Su()
const
622 0.7071067811865475*vd*Yu(0,0)*Mu;
631void CLASSNAME::calculate_MSu()
635 MSu =
sqrt(MSu.cwiseAbs());
638Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Se()
const
646 0.7071067811865475*vu*Ye(0,0)*Mu;
655void CLASSNAME::calculate_MSe()
659 MSe =
sqrt(MSe.cwiseAbs());
662Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sm()
const
670 0.7071067811865475*vu*Ye(1,1)*Mu;
679void CLASSNAME::calculate_MSm()
684 if (MSm.minCoeff() < 0.) {
685 problems.flag_tachyon(
"Sm");
688 MSm =
sqrt(MSm.cwiseAbs());
691Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Stau()
const
699 0.7071067811865475*vu*Ye(2,2)*Mu;
708void CLASSNAME::calculate_MStau()
713 if (MStau.minCoeff() < 0.) {
714 problems.flag_tachyon(
"Stau");
717 MStau =
sqrt(MStau.cwiseAbs());
720Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Ss()
const
728 0.7071067811865475*vu*Yd(1,1)*Mu;
737void CLASSNAME::calculate_MSs()
741 MSs =
sqrt(MSs.cwiseAbs());
744Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sc()
const
752 0.7071067811865475*vd*Yu(1,1)*Mu;
761void CLASSNAME::calculate_MSc()
765 MSc =
sqrt(MSc.cwiseAbs());
768Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sb()
const
776 0.7071067811865475*vu*Yd(2,2)*Mu;
785void CLASSNAME::calculate_MSb()
790 if (MSb.minCoeff() < 0.) {
791 problems.flag_tachyon(
"Sb");
794 MSb =
sqrt(MSb.cwiseAbs());
797Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_St()
const
805 0.7071067811865475*vd*Yu(2,2)*Mu;
814void CLASSNAME::calculate_MSt()
819 if (MSt.minCoeff() < 0.) {
820 problems.flag_tachyon(
"St");
823 MSt =
sqrt(MSt.cwiseAbs());
826Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_hh()
const
842void CLASSNAME::calculate_Mhh()
847 if (Mhh.minCoeff() < 0.) {
848 problems.flag_tachyon(
"hh");
851 Mhh =
sqrt(Mhh.cwiseAbs());
854Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Ah()
const
858 const double tw = 0.7745966692414834*g1/g2;
859 const double rt = std::sqrt(1 +
tw*
tw);
861 const double cw = 1/
rt;
870 0.125*
sqr(g2)*
sqr(vd) + 0.3872983346207417*g1*g2*
cw*
sw*
sqr(vu)
879void CLASSNAME::calculate_MAh()
884 if (MAh.minCoeff() < 0.) {
885 problems.flag_tachyon(
"Ah");
888 MAh =
sqrt(MAh.cwiseAbs());
891Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Hpm()
const
906void CLASSNAME::calculate_MHpm()
911 if (MHpm.minCoeff() < 0.) {
912 problems.flag_tachyon(
"Hpm");
915 MHpm =
sqrt(MHpm.cwiseAbs());
918Eigen::Matrix<double,4,4> CLASSNAME::get_mass_matrix_Chi()
const
938void CLASSNAME::calculate_MChi()
944Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Cha()
const
956void CLASSNAME::calculate_MCha()
962double CLASSNAME::get_mass_matrix_VWm()
const
969void CLASSNAME::calculate_MVWm()
976double CLASSNAME::get_ewsb_eq_hh_1()
const
978 double result = mHd2*vd + vd*
sqr(Mu) - 0.5*vu*BMu - 0.5*vu*BMu +
985double CLASSNAME::get_ewsb_eq_hh_2()
const
987 double result = mHu2*vu + vu*
sqr(Mu) - 0.5*vd*BMu - 0.5*vd*BMu +
994double CLASSNAME::ThetaW()
const
996 return std::atan((0.7745966692414834*g1)/g2);
999double CLASSNAME::v()
const
1001 return 2*std::sqrt(
sqr(MVWm)/
sqr(g2));
#define PHYSICAL(parameter)
contains class for MSSMNoFV with routines needed to solve EWSB and determine the pole masses and mixi...
model class with routines determine masses, mixings and EWSB
contains problem and warning flags
void print(std::ostream &) const override
void move_goldstone_to(int idx, double mass, Eigen::ArrayBase< DerivedArray > &v, Eigen::MatrixBase< DerivedMatrix > &z)
The element of v, which is closest to mass, is moved to the position idx.
T sqr(T x) noexcept
returns number squared
void svd_eigen(const Eigen::Matrix< Scalar, M, N > &m, Eigen::Array< Real,(((M)<(N)) ?(M) :(N)), 1 > &s, Eigen::Matrix< Scalar, M, M > *u, Eigen::Matrix< Scalar, N, N > *vh)
T cube(T x) noexcept
returns number to the third power
std::ostream & operator<<(std::ostream &os, const MSSMNoFV_onshell &model)
streaming operator
constexpr RAII_save< T > make_raii_save(T &var)
void symmetrize(Eigen::MatrixBase< Derived > &m)
MSSMNoFV pole masses and corresponding mixings.