GM2Calc 2.3.0
Loading...
Searching...
No Matches
MSSMNoFV_onshell.hpp
Go to the documentation of this file.
1// ====================================================================
2// This file is part of GM2Calc.
3//
4// GM2Calc is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published
6// by the Free Software Foundation, either version 3 of the License,
7// or (at your option) any later version.
8//
9// GM2Calc is distributed in the hope that it will be useful, but
10// WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with GM2Calc. If not, see
16// <http://www.gnu.org/licenses/>.
17// ====================================================================
18
19#ifndef GM2_MSSMNoFV_ONSHELL_HPP
20#define GM2_MSSMNoFV_ONSHELL_HPP
21
23
24#include <cmath>
25#include <iosfwd>
26
27#include <Eigen/Core>
28
29namespace gm2calc {
30
31/**
32 * @class MSSMNoFV_onshell
33 * @brief contains the MSSMNoFV parameters in the on-shell scheme
34 *
35 * In addition, the class stores parameters necessary for the
36 * calculation of \f$a_\mu\f$: The electromagnetic coupling at MZ w/o
37 * hadronic corrections, \f$\alpha_{\text{em}}(M_Z)\f$, and the
38 * electromagnetic coupling in the Thomson limit,
39 * \f$\alpha_{\text{em}}(0)\f$.
40 *
41 * The class also contains helper functions to convert DR-bar
42 * parameters to the on-shell scheme.
43 */
45public:
47 virtual ~MSSMNoFV_onshell() = default;
48
49 /// enable/disable verbose output
50 void set_verbose_output(bool flag) { verbose_output = flag; }
51 /// tests for verbose output
52 bool do_verbose_output() const { return verbose_output; }
53
54 /// set alpha(MZ) w/o hadronic corrections
55 void set_alpha_MZ(double);
56 /// set alpha in the Thomson limit
57 void set_alpha_thompson(double);
58 /// soft-breaking trilinear on-shell down-type slepton coupling
59 void set_Ae(const Eigen::Matrix<double,3,3>& A) { Ae = A; }
60 /// soft-breaking trilinear up-type squark coupling
61 void set_Au(const Eigen::Matrix<double,3,3>& A) { Au = A; }
62 /// soft-breaking trilinear down-type squark coupling
63 void set_Ad(const Eigen::Matrix<double,3,3>& A) { Ad = A; }
64 /// soft-breaking trilinear on-shell down-type slepton coupling
65 void set_Ae(unsigned i, unsigned k, double a) { Ae(i,k) = a; }
66 /// soft-breaking trilinear up-type squark coupling
67 void set_Au(unsigned i, unsigned k, double a) { Au(i,k) = a; }
68 /// soft-breaking trilinear down-type squark coupling
69 void set_Ad(unsigned i, unsigned k, double a) { Ad(i,k) = a; }
70 /// set CP-odd Higgs pole mass
71 void set_MA0(double m) { get_physical().MAh(1) = m; }
72 /// set tan(beta)
73 void set_TB(double);
74
75 /// electromagnetic gauge coupling at MZ w/o hadronic corrections
76 double get_EL() const { return EL; }
77 /// electromagnetic gauge coupling in Thomson limit
78 double get_EL0() const { return EL0; }
79 /// Hypercharge gauge coupling
80 double get_gY() const { return std::sqrt(0.6) * get_g1(); }
81 /// tan(beta) DR-bar
82 double get_TB() const;
83 /// Vacuum expectation value v
84 double get_vev() const;
85 /// soft-breaking trilinear on-shell down-type slepton coupling
86 const Eigen::Matrix<double,3,3>& get_Ae() const { return Ae; }
87 /// soft-breaking trilinear up-type squark coupling
88 const Eigen::Matrix<double,3,3>& get_Au() const { return Au; }
89 /// soft-breaking trilinear down-type squark coupling
90 const Eigen::Matrix<double,3,3>& get_Ad() const { return Ad; }
91 /// soft-breaking trilinear on-shell down-type slepton coupling
92 double get_Ae(unsigned i, unsigned k) const { return Ae(i,k); }
93 /// soft-breaking trilinear up-type squark coupling
94 double get_Au(unsigned i, unsigned k) const { return Au(i,k); }
95 /// soft-breaking trilinear on-shell down-type slepton coupling
96 double get_Ad(unsigned i, unsigned k) const { return Ad(i,k); }
97 /// returns W boson pole mass
98 double get_MW() const { return get_physical().MVWm; }
99 /// returns Z boson pole mass
100 double get_MZ() const { return get_physical().MVZ; }
101 /// returns electron mass
102 double get_ME() const { return get_physical().MFe; }
103 /// returns muon pole mass
104 double get_MM() const { return get_physical().MFm; }
105 /// returns tau mass
106 double get_ML() const { return get_physical().MFtau; }
107 /// returns up-quark mass
108 double get_MU() const { return get_physical().MFu; }
109 /// returns charm-quark mass
110 double get_MC() const { return get_physical().MFc; }
111 /// returns top-quark mass
112 double get_MT() const { return get_physical().MFt; }
113 /// returns down-quark mass
114 double get_MD() const { return get_physical().MFd; }
115 /// returns strange-quark mass
116 double get_MS() const { return get_physical().MFs; }
117 /// returns mb(mb) MS-bar
118 double get_MBMB() const { return get_physical().MFb; }
119 /// returns mb(MZ) DR-bar
120 double get_MB() const { return mb_DRbar_MZ; }
121 /// returns CP-odd Higgs mass
122 double get_MA0() const { return get_physical().MAh(1); }
123 /// returns selectron mixing matrix
124 const Eigen::Matrix<double,2,2>& get_USe() const { return get_ZE(); }
125 /// returns smuon pole mixing matrix
126 const Eigen::Matrix<double,2,2>& get_USm() const { return get_ZM(); }
127 /// returns stau mixing matrix
128 const Eigen::Matrix<double,2,2>& get_UStau() const { return get_ZTau(); }
129 /// returns sup mixing matrix
130 const Eigen::Matrix<double,2,2>& get_USu() const { return get_ZU(); }
131 /// returns sdown mixing matrix
132 const Eigen::Matrix<double,2,2>& get_USd() const { return get_ZD(); }
133 /// returns scharm mixing matrix
134 const Eigen::Matrix<double,2,2>& get_USc() const { return get_ZC(); }
135 /// returns sstrange mixing matrix
136 const Eigen::Matrix<double,2,2>& get_USs() const { return get_ZS(); }
137 /// returns sbottom mixing matrix
138 const Eigen::Matrix<double,2,2>& get_USb() const { return get_ZB(); }
139 /// returns stop mixing matrix
140 const Eigen::Matrix<double,2,2>& get_USt() const { return get_ZT(); }
141
142 /// calculate SUSY masses in mixed on-shell/DR-bar scheme from given on-shell/DR-bar parameters
143 void calculate_masses();
144
145 /// convert given (DR-bar) parameters to mixed on-shell/DR-bar scheme
146 void convert_to_onshell(double precision = 1e-8,
147 unsigned max_iterations = 1000);
148
149 /// convert mixed on-shell/DR-bar parameters to non-tan(beta) resummed case
151
152private:
153 bool verbose_output{false}; ///< verbose output
154 double EL{0.0}; ///< electromagnetic gauge coupling at MZ w/o hadronic corrections
155 double EL0{0.0}; ///< electromagnetic gauge coupling in the Thomson limit
156 double mb_DRbar_MZ{2.8}; ///< mb(MZ) DR-bar
157 Eigen::Matrix<double,3,3> Au{Eigen::Matrix<double,3,3>::Zero()}; ///< trilinear couplings
158 Eigen::Matrix<double,3,3> Ad{Eigen::Matrix<double,3,3>::Zero()}; ///< trilinear couplings
159 Eigen::Matrix<double,3,3> Ae{Eigen::Matrix<double,3,3>::Zero()}; ///< trilinear couplings
160
161 void check_input() const;
162 void check_problems() const;
163 void calculate_mb_DRbar_MZ();
164 void convert_gauge_couplings();
165 void convert_yukawa_couplings_treelevel();
166 void convert_BMu();
167 void convert_ml2();
168 void convert_me2(double, unsigned);
169 double convert_me2_fpi(double, unsigned);
170 double convert_me2_fpi_modify(double, unsigned);
171 double convert_me2_root(double, unsigned);
172 double convert_me2_root_modify(double, unsigned);
173 void convert_Mu_M1_M2(double, unsigned);
174 void convert_vev();
175 void convert_yukawa_couplings();
176 void copy_susy_masses_to_pole();
177 unsigned find_bino_like_neutralino();
178};
179
180/// streaming operator
181std::ostream& operator<<(std::ostream&, const MSSMNoFV_onshell&);
182
183} // namespace gm2calc
184
185#endif
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
const Eigen::Matrix< double, 2, 2 > & get_ZU() const
const Eigen::Matrix< double, 2, 2 > & get_ZTau() const
const Eigen::Matrix< double, 2, 2 > & get_ZC() const
const MSSMNoFV_onshell_physical & get_physical() const
const Eigen::Matrix< double, 2, 2 > & get_ZT() const
const Eigen::Matrix< double, 2, 2 > & get_ZS() const
const Eigen::Matrix< double, 2, 2 > & get_ZB() const
const Eigen::Matrix< double, 2, 2 > & get_ZE() const
const Eigen::Matrix< double, 2, 2 > & get_ZM() const
const Eigen::Matrix< double, 2, 2 > & get_ZD() const
contains the MSSMNoFV parameters in the on-shell scheme
double get_TB() const
tan(beta) DR-bar
void set_verbose_output(bool flag)
enable/disable verbose output
void calculate_masses()
calculate SUSY masses in mixed on-shell/DR-bar scheme from given on-shell/DR-bar parameters
double get_MM() const
returns muon pole mass
double get_ME() const
returns electron mass
const Eigen::Matrix< double, 2, 2 > & get_USm() const
returns smuon pole mixing matrix
double get_MW() const
returns W boson pole mass
double get_MA0() const
returns CP-odd Higgs mass
double get_EL0() const
electromagnetic gauge coupling in Thomson limit
void set_Au(const Eigen::Matrix< double, 3, 3 > &A)
soft-breaking trilinear up-type squark coupling
double get_Ad(unsigned i, unsigned k) const
soft-breaking trilinear on-shell down-type slepton coupling
double get_gY() const
Hypercharge gauge coupling.
const Eigen::Matrix< double, 2, 2 > & get_USc() const
returns scharm mixing matrix
void convert_to_non_tan_beta_resummed()
convert mixed on-shell/DR-bar parameters to non-tan(beta) resummed case
const Eigen::Matrix< double, 3, 3 > & get_Ad() const
soft-breaking trilinear down-type squark coupling
void set_TB(double)
set tan(beta)
void set_Ae(unsigned i, unsigned k, double a)
soft-breaking trilinear on-shell down-type slepton coupling
const Eigen::Matrix< double, 2, 2 > & get_USt() const
returns stop mixing matrix
const Eigen::Matrix< double, 2, 2 > & get_USd() const
returns sdown mixing matrix
double get_MS() const
returns strange-quark mass
const Eigen::Matrix< double, 2, 2 > & get_USe() const
returns selectron mixing matrix
double get_Ae(unsigned i, unsigned k) const
soft-breaking trilinear on-shell down-type slepton coupling
virtual ~MSSMNoFV_onshell()=default
void set_Ad(unsigned i, unsigned k, double a)
soft-breaking trilinear down-type squark coupling
double get_MU() const
returns up-quark mass
double get_vev() const
Vacuum expectation value v.
double get_MT() const
returns top-quark mass
double get_MB() const
returns mb(MZ) DR-bar
void convert_to_onshell(double precision=1e-8, unsigned max_iterations=1000)
convert given (DR-bar) parameters to mixed on-shell/DR-bar scheme
void set_Au(unsigned i, unsigned k, double a)
soft-breaking trilinear up-type squark coupling
void set_alpha_MZ(double)
set alpha(MZ) w/o hadronic corrections
double get_ML() const
returns tau mass
bool do_verbose_output() const
tests for verbose output
const Eigen::Matrix< double, 3, 3 > & get_Ae() const
soft-breaking trilinear on-shell down-type slepton coupling
void set_MA0(double m)
set CP-odd Higgs pole mass
double get_MC() const
returns charm-quark mass
const Eigen::Matrix< double, 2, 2 > & get_UStau() const
returns stau mixing matrix
const Eigen::Matrix< double, 2, 2 > & get_USu() const
returns sup mixing matrix
const Eigen::Matrix< double, 2, 2 > & get_USb() const
returns sbottom mixing matrix
double get_Au(unsigned i, unsigned k) const
soft-breaking trilinear up-type squark coupling
double get_MZ() const
returns Z boson pole mass
double get_EL() const
electromagnetic gauge coupling at MZ w/o hadronic corrections
void set_Ad(const Eigen::Matrix< double, 3, 3 > &A)
soft-breaking trilinear down-type squark coupling
void set_alpha_thompson(double)
set alpha in the Thomson limit
double get_MD() const
returns down-quark mass
const Eigen::Matrix< double, 2, 2 > & get_USs() const
returns sstrange mixing matrix
double get_MBMB() const
returns mb(mb) MS-bar
const Eigen::Matrix< double, 3, 3 > & get_Au() const
soft-breaking trilinear up-type squark coupling
void set_Ae(const Eigen::Matrix< double, 3, 3 > &A)
soft-breaking trilinear on-shell down-type slepton coupling
double A
struct MSSMNoFV_onshell MSSMNoFV_onshell
std::ostream & operator<<(std::ostream &os, const MSSMNoFV_onshell &model)
streaming operator