GM2Calc 2.3.0
Loading...
Searching...
No Matches
MSSMNoFV_onshell_mass_eigenstates.cpp
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/**
20 * @file MSSMNoFV_onshell_mass_eigenstates.cpp
21 * @brief implementation of the MSSMNoFV_onshell model class
22 *
23 * Contains the definition of the MSSMNoFV_onshell model class methods
24 * which solve EWSB and calculate pole masses and mixings from DRbar
25 * parameters.
26 *
27 * This file was generated at Wed 22 Jul 2015 18:14:31 with FlexibleSUSY
28 * 1.2.1 (git commit: v1.2.1-49-gfc4c300) and SARAH 4.5.8 .
29 */
30
32
33#include "gm2_eigen_utils.hpp"
34#include "gm2_linalg.hpp"
35#include "gm2_numerics.hpp"
36#include "gm2_raii.hpp"
37
38#include <cmath>
39#include <iostream>
40
41namespace {
42
43template <typename Derived>
44void hermitianize(Eigen::MatrixBase<Derived>& m)
45{
47}
48
49template <typename T> T sqr(T x) { return x*x; }
50
51} // anonymous namespace
52
53namespace gm2calc {
54
55#define CLASSNAME MSSMNoFV_onshell_mass_eigenstates
56#define PHYSICAL(parameter) physical.parameter
57
58void CLASSNAME::do_force_output(bool flag)
59{
60 force_output = flag;
61}
62
63bool CLASSNAME::do_force_output() const
64{
65 return force_output;
66}
67
68const MSSMNoFV_onshell_physical& CLASSNAME::get_physical() const
69{
70 return physical;
71}
72
73MSSMNoFV_onshell_physical& CLASSNAME::get_physical()
74{
75 return physical;
76}
77
78void CLASSNAME::set_physical(const MSSMNoFV_onshell_physical& physical_)
79{
80 physical = physical_;
81}
82
83const MSSMNoFV_onshell_problems& CLASSNAME::get_problems() const
84{
85 return problems;
86}
87
88MSSMNoFV_onshell_problems& CLASSNAME::get_problems()
89{
90 return problems;
91}
92
93int CLASSNAME::solve_ewsb_tree_level()
94{
95 return solve_ewsb_tree_level_via_soft_higgs_masses();
96}
97
98int CLASSNAME::solve_ewsb_tree_level_via_soft_higgs_masses()
99{
100 int error = 0;
101
102 const double old_mHd2 = mHd2;
103 const double old_mHu2 = mHu2;
104
105 mHd2 = (0.025*(-40*vd*sqr(Mu) + 20*vu*BMu + 20*vu*
106 BMu - 3*cube(vd)*sqr(g1) - 5*cube(vd)*sqr(g2) + 3*vd*sqr(g1)*sqr
107 (vu) + 5*vd*sqr(g2)*sqr(vu)))/vd;
108 mHu2 = (0.025*(-40*vu*sqr(Mu) + 20*vd*BMu + 20*vd*
109 BMu - 3*cube(vu)*sqr(g1) - 5*cube(vu)*sqr(g2) + 3*vu*sqr(g1)*sqr
110 (vd) + 5*vu*sqr(g2)*sqr(vd)))/vu;
111
112 const bool is_finite = std::isfinite(mHd2) && std::isfinite(mHu2);
113
114 if (!is_finite) {
115 mHd2 = old_mHd2;
116 mHu2 = old_mHu2;
117 error = 1;
118 }
119
120 return error;
121}
122
123int CLASSNAME::solve_ewsb()
124{
125 return solve_ewsb_tree_level();
126}
127
128void CLASSNAME::print(std::ostream& ostr) const
129{
130 ostr << "========================================\n"
131 "MSSMNoFV_onshell\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';
171
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';
190
191 physical.print(ostr);
192 problems.print(ostr);
193}
194
195/**
196 * routine which finds the DRbar mass eigenstates and mixings.
197 */
198void CLASSNAME::calculate_DRbar_masses()
199{
200 const auto save_mHd2_raii = make_raii_save(mHd2);
201 const auto save_mHu2_raii = make_raii_save(mHu2);
202
203 solve_ewsb_tree_level_via_soft_higgs_masses();
204
205 calculate_MVG();
206 calculate_MVP();
207 calculate_MVZ();
208 calculate_MVWm();
209 calculate_MGlu();
210 calculate_MFd();
211 calculate_MFs();
212 calculate_MFb();
213 calculate_MFu();
214 calculate_MFc();
215 calculate_MFt();
216 calculate_MFve();
217 calculate_MFvm();
218 calculate_MFvt();
219 calculate_MFe();
220 calculate_MFm();
221 calculate_MFtau();
222 calculate_MSveL();
223 calculate_MSvmL();
224 calculate_MSvtL();
225 calculate_MSd();
226 calculate_MSu();
227 calculate_MSe();
228 calculate_MSm();
229 calculate_MStau();
230 calculate_MSs();
231 calculate_MSc();
232 calculate_MSb();
233 calculate_MSt();
234 calculate_Mhh();
235 calculate_MAh();
236 calculate_MHpm();
237 calculate_MChi();
238 calculate_MCha();
239
240 reorder_DRbar_masses();
241}
242
243void CLASSNAME::copy_DRbar_masses_to_pole_masses()
244{
245 PHYSICAL(MVG) = MVG;
246 PHYSICAL(MGlu) = MGlu;
247 PHYSICAL(MVP) = MVP;
248 PHYSICAL(MVZ) = MVZ;
249 PHYSICAL(MFd) = MFd;
250 PHYSICAL(MFs) = MFs;
251 PHYSICAL(MFb) = MFb;
252 PHYSICAL(MFu) = MFu;
253 PHYSICAL(MFc) = MFc;
254 PHYSICAL(MFt) = MFt;
255 PHYSICAL(MFve) = MFve;
256 PHYSICAL(MFvm) = MFvm;
257 PHYSICAL(MFvt) = MFvt;
258 PHYSICAL(MFe) = MFe;
259 PHYSICAL(MFm) = MFm;
260 PHYSICAL(MFtau) = MFtau;
261 PHYSICAL(MSveL) = MSveL;
262 PHYSICAL(MSvmL) = MSvmL;
263 PHYSICAL(MSvtL) = MSvtL;
264 PHYSICAL(MSd) = MSd;
265 PHYSICAL(ZD) = ZD;
266 PHYSICAL(MSu) = MSu;
267 PHYSICAL(ZU) = ZU;
268 PHYSICAL(MSe) = MSe;
269 PHYSICAL(ZE) = ZE;
270 PHYSICAL(MSm) = MSm;
271 PHYSICAL(ZM) = ZM;
272 PHYSICAL(MStau) = MStau;
273 PHYSICAL(ZTau) = ZTau;
274 PHYSICAL(MSs) = MSs;
275 PHYSICAL(ZS) = ZS;
276 PHYSICAL(MSc) = MSc;
277 PHYSICAL(ZC) = ZC;
278 PHYSICAL(MSb) = MSb;
279 PHYSICAL(ZB) = ZB;
280 PHYSICAL(MSt) = MSt;
281 PHYSICAL(ZT) = ZT;
282 PHYSICAL(Mhh) = Mhh;
283 PHYSICAL(ZH) = ZH;
284 PHYSICAL(MAh) = MAh;
285 PHYSICAL(ZA) = ZA;
286 PHYSICAL(MHpm) = MHpm;
287 PHYSICAL(ZP) = ZP;
288 PHYSICAL(MChi) = MChi;
289 PHYSICAL(ZN) = ZN;
290 PHYSICAL(MCha) = MCha;
291 PHYSICAL(UM) = UM;
292 PHYSICAL(UP) = UP;
293 PHYSICAL(MVWm) = MVWm;
294
295 reorder_pole_masses();
296}
297
298/**
299 * reorders DRbar masses so that golstones are placed at the index
300 * specified in the model files definition of the associated
301 * gauge boson (see Z-boson definition in default particles.m file
302 * in the Models directory of your SARAH distribution for example)
303 */
304void CLASSNAME::reorder_DRbar_masses()
305{
306 move_goldstone_to(0, MVZ, MAh, ZA);
307 move_goldstone_to(0, MVWm, MHpm, ZP);
308}
309
310/**
311 * reorders pole masses so that golstones are placed at the index
312 * specified in the model files definition of the associated
313 * gauge boson (see Z-boson definition in default particles.m file
314 * in the Models directory of your SARAH distribution for example)
315 */
316void CLASSNAME::reorder_pole_masses()
317{
318 move_goldstone_to(0, MVZ, PHYSICAL(MAh), PHYSICAL(ZA));
319 move_goldstone_to(0, MVWm, PHYSICAL(MHpm), PHYSICAL(ZP));
320}
321
322Eigen::Array<double,1,1> CLASSNAME::get_MChargedHiggs() const
323{
324 Eigen::Array<double,1,1> MHpm_goldstone;
325 MHpm_goldstone(0) = MVWm;
326
328}
329
330Eigen::Array<double,1,1> CLASSNAME::get_MPseudoscalarHiggs() const
331{
332 Eigen::Array<double,1,1> MAh_goldstone;
333 MAh_goldstone(0) = MVZ;
334
336}
337
338
339
340
341double CLASSNAME::get_mass_matrix_VG() const
342{
343 return 0;
344}
345
346void CLASSNAME::calculate_MVG()
347{
348 MVG = 0;
349}
350
351double CLASSNAME::get_mass_matrix_Glu() const
352{
353 return MassG;
354}
355
356void CLASSNAME::calculate_MGlu()
357{
358 const auto mass_matrix_Glu = get_mass_matrix_Glu();
359 PhaseGlu = std::polar(1., 0.5 * std::arg(std::complex<double>(mass_matrix_Glu)));
360 MGlu = std::abs(mass_matrix_Glu);
361}
362
363double CLASSNAME::get_mass_matrix_VP() const
364{
365 return 0;
366}
367
368void CLASSNAME::calculate_MVP()
369{
370 const auto mass_matrix_VP = get_mass_matrix_VP();
371 MVP = std::abs(mass_matrix_VP);
372}
373
374double CLASSNAME::get_mass_matrix_VZ() const
375{
376 const double tw = 0.7745966692414834*g1/g2;
377 const double rt = std::sqrt(1 + tw*tw);
378 const double sw = tw/rt;
379 const double cw = 1/rt;
380
381 const double mass_matrix_VZ = 0.25*(sqr(vd) + sqr(vu))*
382 sqr(g2*cw + 0.7745966692414834*g1*sw);
383
384 return mass_matrix_VZ;
385}
386
387void CLASSNAME::calculate_MVZ()
388{
389 const auto mass_matrix_VZ = get_mass_matrix_VZ();
390 MVZ = std::sqrt(std::abs(mass_matrix_VZ));
391}
392
393double CLASSNAME::get_mass_matrix_Fd() const
394{
395 const double mass_matrix_Fd = 0.7071067811865475*vd*Yd(0,0);
396
397 return mass_matrix_Fd;
398}
399
400void CLASSNAME::calculate_MFd()
401{
402 const auto mass_matrix_Fd = get_mass_matrix_Fd();
403 MFd = std::abs(mass_matrix_Fd);
404}
405
406double CLASSNAME::get_mass_matrix_Fs() const
407{
408 const double mass_matrix_Fs = 0.7071067811865475*vd*Yd(1,1);
409
410 return mass_matrix_Fs;
411}
412
413void CLASSNAME::calculate_MFs()
414{
415 const auto mass_matrix_Fs = get_mass_matrix_Fs();
416 MFs = std::abs(mass_matrix_Fs);
417}
418
419double CLASSNAME::get_mass_matrix_Fb() const
420{
421 const double mass_matrix_Fb = 0.7071067811865475*vd*Yd(2,2);
422
423 return mass_matrix_Fb;
424}
425
426void CLASSNAME::calculate_MFb()
427{
428 const auto mass_matrix_Fb = get_mass_matrix_Fb();
429 MFb = std::abs(mass_matrix_Fb);
430}
431
432double CLASSNAME::get_mass_matrix_Fu() const
433{
434 const double mass_matrix_Fu = 0.7071067811865475*vu*Yu(0,0);
435
436 return mass_matrix_Fu;
437}
438
439void CLASSNAME::calculate_MFu()
440{
441 const auto mass_matrix_Fu = get_mass_matrix_Fu();
442 MFu = std::abs(mass_matrix_Fu);
443}
444
445double CLASSNAME::get_mass_matrix_Fc() const
446{
447 const double mass_matrix_Fc = 0.7071067811865475*vu*Yu(1,1);
448
449 return mass_matrix_Fc;
450}
451
452void CLASSNAME::calculate_MFc()
453{
454 const auto mass_matrix_Fc = get_mass_matrix_Fc();
455 MFc = std::abs(mass_matrix_Fc);
456}
457
458double CLASSNAME::get_mass_matrix_Ft() const
459{
460 const double mass_matrix_Ft = 0.7071067811865475*vu*Yu(2,2);
461
462 return mass_matrix_Ft;
463}
464
465void CLASSNAME::calculate_MFt()
466{
467 const auto mass_matrix_Ft = get_mass_matrix_Ft();
468 MFt = std::abs(mass_matrix_Ft);
469}
470
471double CLASSNAME::get_mass_matrix_Fve() const
472{
473 return 0;
474}
475
476void CLASSNAME::calculate_MFve()
477{
478 const auto mass_matrix_Fve = get_mass_matrix_Fve();
479 MFve = std::abs(mass_matrix_Fve);
480}
481
482double CLASSNAME::get_mass_matrix_Fvm() const
483{
484 return 0;
485}
486
487void CLASSNAME::calculate_MFvm()
488{
489 const auto mass_matrix_Fvm = get_mass_matrix_Fvm();
490 MFvm = std::abs(mass_matrix_Fvm);
491}
492
493double CLASSNAME::get_mass_matrix_Fvt() const
494{
495 return 0;
496}
497
498void CLASSNAME::calculate_MFvt()
499{
500 const auto mass_matrix_Fvt = get_mass_matrix_Fvt();
501 MFvt = std::abs(mass_matrix_Fvt);
502}
503
504double CLASSNAME::get_mass_matrix_Fe() const
505{
506 const double mass_matrix_Fe = 0.7071067811865475*vd*Ye(0,0);
507
508 return mass_matrix_Fe;
509}
510
511void CLASSNAME::calculate_MFe()
512{
513 const auto mass_matrix_Fe = get_mass_matrix_Fe();
514 MFe = std::abs(mass_matrix_Fe);
515}
516
517double CLASSNAME::get_mass_matrix_Fm() const
518{
519 const double mass_matrix_Fm = 0.7071067811865475*vd*Ye(1,1);
520
521 return mass_matrix_Fm;
522}
523
524void CLASSNAME::calculate_MFm()
525{
526 const auto mass_matrix_Fm = get_mass_matrix_Fm();
527 MFm = std::abs(mass_matrix_Fm);
528}
529
530double CLASSNAME::get_mass_matrix_Ftau() const
531{
532 const double mass_matrix_Ftau = 0.7071067811865475*vd*Ye(2,2);
533
534 return mass_matrix_Ftau;
535}
536
537void CLASSNAME::calculate_MFtau()
538{
539 const auto mass_matrix_Ftau = get_mass_matrix_Ftau();
540 MFtau = std::abs(mass_matrix_Ftau);
541}
542
543double CLASSNAME::get_mass_matrix_SveL() const
544{
545 const double mass_matrix_SveL = 0.125*(8*ml2(0,0) - 0.6*sqr(g1)*(
546 -sqr(vd) + sqr(vu)) - sqr(g2)*(-sqr(vd) + sqr(vu)));
547
548 return mass_matrix_SveL;
549}
550
551void CLASSNAME::calculate_MSveL()
552{
553 const auto mass_matrix_SveL = get_mass_matrix_SveL();
554 MSveL = std::sqrt(std::abs(mass_matrix_SveL));
555}
556
557double CLASSNAME::get_mass_matrix_SvmL() const
558{
559 const double mass_matrix_SvmL = 0.125*(8*ml2(1,1) - 0.6*sqr(g1)*(
560 -sqr(vd) + sqr(vu)) - sqr(g2)*(-sqr(vd) + sqr(vu)));
561
562 return mass_matrix_SvmL;
563}
564
565void CLASSNAME::calculate_MSvmL()
566{
567 const auto mass_matrix_SvmL = get_mass_matrix_SvmL();
568
569 if (mass_matrix_SvmL < 0.) {
570 problems.flag_tachyon("SvmL");
571 }
572
573 MSvmL = std::sqrt(std::abs(mass_matrix_SvmL));
574}
575
576double CLASSNAME::get_mass_matrix_SvtL() const
577{
578 const double mass_matrix_SvtL = 0.125*(8*ml2(2,2) - 0.6*sqr(g1)*(
579 -sqr(vd) + sqr(vu)) - sqr(g2)*(-sqr(vd) + sqr(vu)));
580
581 return mass_matrix_SvtL;
582}
583
584void CLASSNAME::calculate_MSvtL()
585{
586 const auto mass_matrix_SvtL = get_mass_matrix_SvtL();
587 MSvtL = std::sqrt(std::abs(mass_matrix_SvtL));
588}
589
590Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sd() const
591{
592 Eigen::Matrix<double,2,2> mass_matrix_Sd;
593
594 mass_matrix_Sd(0,0) = mq2(0,0) + 0.5*sqr(Yd(0,0))*sqr(vd) - 0.025*
595 sqr(g1)*sqr(vd) - 0.125*sqr(g2)*sqr(vd) + 0.025*sqr(g1)*sqr(vu) + 0.125*
596 sqr(g2)*sqr(vu);
597 mass_matrix_Sd(0,1) = 0.7071067811865475*vd*TYd(0,0) -
598 0.7071067811865475*vu*Yd(0,0)*Mu;
599 mass_matrix_Sd(1,1) = md2(0,0) + 0.5*sqr(Yd(0,0))*sqr(vd) - 0.05*
600 sqr(g1)*sqr(vd) + 0.05*sqr(g1)*sqr(vu);
601
603
604 return mass_matrix_Sd;
605}
606
607void CLASSNAME::calculate_MSd()
608{
609 const auto mass_matrix_Sd(get_mass_matrix_Sd());
611 MSd = sqrt(MSd.cwiseAbs());
612}
613
614Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Su() const
615{
616 Eigen::Matrix<double,2,2> mass_matrix_Su;
617
618 mass_matrix_Su(0,0) = mq2(0,0) - 0.025*sqr(g1)*sqr(vd) + 0.125*sqr(g2)
619 *sqr(vd) + 0.5*sqr(Yu(0,0))*sqr(vu) + 0.025*sqr(g1)*sqr(vu) - 0.125*
620 sqr(g2)*sqr(vu);
621 mass_matrix_Su(0,1) = 0.7071067811865475*vu*TYu(0,0) -
622 0.7071067811865475*vd*Yu(0,0)*Mu;
623 mass_matrix_Su(1,1) = mu2(0,0) + 0.1*sqr(g1)*sqr(vd) + 0.5*sqr(Yu(0
624 ,0))*sqr(vu) - 0.1*sqr(g1)*sqr(vu);
625
627
628 return mass_matrix_Su;
629}
630
631void CLASSNAME::calculate_MSu()
632{
633 const auto mass_matrix_Su(get_mass_matrix_Su());
635 MSu = sqrt(MSu.cwiseAbs());
636}
637
638Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Se() const
639{
640 Eigen::Matrix<double,2,2> mass_matrix_Se;
641
642 mass_matrix_Se(0,0) = ml2(0,0) + 0.5*sqr(Ye(0,0))*sqr(vd) + 0.075*
643 sqr(g1)*sqr(vd) - 0.125*sqr(g2)*sqr(vd) - 0.075*sqr(g1)*sqr(vu) + 0.125*
644 sqr(g2)*sqr(vu);
645 mass_matrix_Se(0,1) = 0.7071067811865475*vd*TYe(0,0) -
646 0.7071067811865475*vu*Ye(0,0)*Mu;
647 mass_matrix_Se(1,1) = me2(0,0) + 0.5*sqr(Ye(0,0))*sqr(vd) - 0.15*
648 sqr(g1)*sqr(vd) + 0.15*sqr(g1)*sqr(vu);
649
651
652 return mass_matrix_Se;
653}
654
655void CLASSNAME::calculate_MSe()
656{
657 const auto mass_matrix_Se(get_mass_matrix_Se());
659 MSe = sqrt(MSe.cwiseAbs());
660}
661
662Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sm() const
663{
664 Eigen::Matrix<double,2,2> mass_matrix_Sm;
665
666 mass_matrix_Sm(0,0) = ml2(1,1) + 0.5*sqr(Ye(1,1))*sqr(vd) + 0.075*
667 sqr(g1)*sqr(vd) - 0.125*sqr(g2)*sqr(vd) - 0.075*sqr(g1)*sqr(vu) + 0.125*
668 sqr(g2)*sqr(vu);
669 mass_matrix_Sm(0,1) = 0.7071067811865475*vd*TYe(1,1) -
670 0.7071067811865475*vu*Ye(1,1)*Mu;
671 mass_matrix_Sm(1,1) = me2(1,1) + 0.5*sqr(Ye(1,1))*sqr(vd) - 0.15*
672 sqr(g1)*sqr(vd) + 0.15*sqr(g1)*sqr(vu);
673
675
676 return mass_matrix_Sm;
677}
678
679void CLASSNAME::calculate_MSm()
680{
681 const auto mass_matrix_Sm(get_mass_matrix_Sm());
683
684 if (MSm.minCoeff() < 0.) {
685 problems.flag_tachyon("Sm");
686 }
687
688 MSm = sqrt(MSm.cwiseAbs());
689}
690
691Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Stau() const
692{
693 Eigen::Matrix<double,2,2> mass_matrix_Stau;
694
695 mass_matrix_Stau(0,0) = ml2(2,2) + 0.5*sqr(Ye(2,2))*sqr(vd) + 0.075
696 *sqr(g1)*sqr(vd) - 0.125*sqr(g2)*sqr(vd) - 0.075*sqr(g1)*sqr(vu) + 0.125*
697 sqr(g2)*sqr(vu);
698 mass_matrix_Stau(0,1) = 0.7071067811865475*vd*TYe(2,2) -
699 0.7071067811865475*vu*Ye(2,2)*Mu;
700 mass_matrix_Stau(1,1) = me2(2,2) + 0.5*sqr(Ye(2,2))*sqr(vd) - 0.15*
701 sqr(g1)*sqr(vd) + 0.15*sqr(g1)*sqr(vu);
702
704
705 return mass_matrix_Stau;
706}
707
708void CLASSNAME::calculate_MStau()
709{
710 const auto mass_matrix_Stau(get_mass_matrix_Stau());
712
713 if (MStau.minCoeff() < 0.) {
714 problems.flag_tachyon("Stau");
715 }
716
717 MStau = sqrt(MStau.cwiseAbs());
718}
719
720Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Ss() const
721{
722 Eigen::Matrix<double,2,2> mass_matrix_Ss;
723
724 mass_matrix_Ss(0,0) = mq2(1,1) + 0.5*sqr(Yd(1,1))*sqr(vd) - 0.025*
725 sqr(g1)*sqr(vd) - 0.125*sqr(g2)*sqr(vd) + 0.025*sqr(g1)*sqr(vu) + 0.125*
726 sqr(g2)*sqr(vu);
727 mass_matrix_Ss(0,1) = 0.7071067811865475*vd*TYd(1,1) -
728 0.7071067811865475*vu*Yd(1,1)*Mu;
729 mass_matrix_Ss(1,1) = md2(1,1) + 0.5*sqr(Yd(1,1))*sqr(vd) - 0.05*
730 sqr(g1)*sqr(vd) + 0.05*sqr(g1)*sqr(vu);
731
733
734 return mass_matrix_Ss;
735}
736
737void CLASSNAME::calculate_MSs()
738{
739 const auto mass_matrix_Ss(get_mass_matrix_Ss());
741 MSs = sqrt(MSs.cwiseAbs());
742}
743
744Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sc() const
745{
746 Eigen::Matrix<double,2,2> mass_matrix_Sc;
747
748 mass_matrix_Sc(0,0) = mq2(1,1) - 0.025*sqr(g1)*sqr(vd) + 0.125*sqr(g2)
749 *sqr(vd) + 0.5*sqr(Yu(1,1))*sqr(vu) + 0.025*sqr(g1)*sqr(vu) - 0.125*
750 sqr(g2)*sqr(vu);
751 mass_matrix_Sc(0,1) = 0.7071067811865475*vu*TYu(1,1) -
752 0.7071067811865475*vd*Yu(1,1)*Mu;
753 mass_matrix_Sc(1,1) = mu2(1,1) + 0.1*sqr(g1)*sqr(vd) + 0.5*sqr(Yu(1
754 ,1))*sqr(vu) - 0.1*sqr(g1)*sqr(vu);
755
757
758 return mass_matrix_Sc;
759}
760
761void CLASSNAME::calculate_MSc()
762{
763 const auto mass_matrix_Sc(get_mass_matrix_Sc());
765 MSc = sqrt(MSc.cwiseAbs());
766}
767
768Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Sb() const
769{
770 Eigen::Matrix<double,2,2> mass_matrix_Sb;
771
772 mass_matrix_Sb(0,0) = mq2(2,2) + 0.5*sqr(Yd(2,2))*sqr(vd) - 0.025*
773 sqr(g1)*sqr(vd) - 0.125*sqr(g2)*sqr(vd) + 0.025*sqr(g1)*sqr(vu) + 0.125*
774 sqr(g2)*sqr(vu);
775 mass_matrix_Sb(0,1) = 0.7071067811865475*vd*TYd(2,2) -
776 0.7071067811865475*vu*Yd(2,2)*Mu;
777 mass_matrix_Sb(1,1) = md2(2,2) + 0.5*sqr(Yd(2,2))*sqr(vd) - 0.05*
778 sqr(g1)*sqr(vd) + 0.05*sqr(g1)*sqr(vu);
779
781
782 return mass_matrix_Sb;
783}
784
785void CLASSNAME::calculate_MSb()
786{
787 const auto mass_matrix_Sb(get_mass_matrix_Sb());
789
790 if (MSb.minCoeff() < 0.) {
791 problems.flag_tachyon("Sb");
792 }
793
794 MSb = sqrt(MSb.cwiseAbs());
795}
796
797Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_St() const
798{
799 Eigen::Matrix<double,2,2> mass_matrix_St;
800
801 mass_matrix_St(0,0) = mq2(2,2) - 0.025*sqr(g1)*sqr(vd) + 0.125*sqr(g2)
802 *sqr(vd) + 0.5*sqr(Yu(2,2))*sqr(vu) + 0.025*sqr(g1)*sqr(vu) - 0.125*
803 sqr(g2)*sqr(vu);
804 mass_matrix_St(0,1) = 0.7071067811865475*vu*TYu(2,2) -
805 0.7071067811865475*vd*Yu(2,2)*Mu;
806 mass_matrix_St(1,1) = mu2(2,2) + 0.1*sqr(g1)*sqr(vd) + 0.5*sqr(Yu(2
807 ,2))*sqr(vu) - 0.1*sqr(g1)*sqr(vu);
808
810
811 return mass_matrix_St;
812}
813
814void CLASSNAME::calculate_MSt()
815{
816 const auto mass_matrix_St(get_mass_matrix_St());
818
819 if (MSt.minCoeff() < 0.) {
820 problems.flag_tachyon("St");
821 }
822
823 MSt = sqrt(MSt.cwiseAbs());
824}
825
826Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_hh() const
827{
828 Eigen::Matrix<double,2,2> mass_matrix_hh;
829
830 mass_matrix_hh(0,0) = mHd2 + sqr(Mu) + 0.225*sqr(g1)*sqr(vd) +
831 0.375*sqr(g2)*sqr(vd) - 0.075*sqr(g1)*sqr(vu) - 0.125*sqr(g2)*sqr(vu);
832 mass_matrix_hh(0,1) = -0.5*BMu - 0.5*BMu - 0.15*vd*vu*sqr(g1) -
833 0.25*vd*vu*sqr(g2);
834 mass_matrix_hh(1,1) = mHu2 + sqr(Mu) - 0.075*sqr(g1)*sqr(vd) -
835 0.125*sqr(g2)*sqr(vd) + 0.225*sqr(g1)*sqr(vu) + 0.375*sqr(g2)*sqr(vu);
836
838
839 return mass_matrix_hh;
840}
841
842void CLASSNAME::calculate_Mhh()
843{
844 const auto mass_matrix_hh(get_mass_matrix_hh());
846
847 if (Mhh.minCoeff() < 0.) {
848 problems.flag_tachyon("hh");
849 }
850
851 Mhh = sqrt(Mhh.cwiseAbs());
852}
853
854Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Ah() const
855{
856 Eigen::Matrix<double,2,2> mass_matrix_Ah;
857
858 const double tw = 0.7745966692414834*g1/g2;
859 const double rt = std::sqrt(1 + tw*tw);
860 const double sw = tw/rt;
861 const double cw = 1/rt;
862
863 mass_matrix_Ah(0,0) = mHd2 + sqr(Mu) + 0.3872983346207417*g1*g2*cw*sw*sqr(vd)
864 + 0.075*sqr(g1)*sqr(vd) + 0.125*sqr(g2)*
865 sqr(vd) - 0.075*sqr(g1)*sqr(vu) - 0.125*sqr(g2)*sqr(vu) + 0.25*sqr(g2)*
866 sqr(vd)*sqr(cw) + 0.15*sqr(g1)*sqr(vd)*sqr(sw);
867 mass_matrix_Ah(0,1) = 0.5*BMu + 0.5*BMu - 0.3872983346207417*g1*
868 g2*vd*vu*cw*sw - 0.25*vd*vu*sqr(g2)*sqr(cw) - 0.15*vd*vu*sqr(g1)*sqr(sw);
869 mass_matrix_Ah(1,1) = mHu2 + sqr(Mu) - 0.075*sqr(g1)*sqr(vd) -
870 0.125*sqr(g2)*sqr(vd) + 0.3872983346207417*g1*g2*cw*sw*sqr(vu)
871 + 0.075*sqr(g1)*sqr(vu) + 0.125*sqr(g2)*sqr(vu) + 0.25*sqr(g2
872 )*sqr(vu)*sqr(cw) + 0.15*sqr(g1)*sqr(vu)*sqr(sw);
873
875
876 return mass_matrix_Ah;
877}
878
879void CLASSNAME::calculate_MAh()
880{
881 const auto mass_matrix_Ah(get_mass_matrix_Ah());
883
884 if (MAh.minCoeff() < 0.) {
885 problems.flag_tachyon("Ah");
886 }
887
888 MAh = sqrt(MAh.cwiseAbs());
889}
890
891Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Hpm() const
892{
893 Eigen::Matrix<double,2,2> mass_matrix_Hpm;
894
895 mass_matrix_Hpm(0,0) = mHd2 + sqr(Mu) + 0.075*sqr(g1)*sqr(vd) +
896 0.375*sqr(g2)*sqr(vd) - 0.075*sqr(g1)*sqr(vu) + 0.125*sqr(g2)*sqr(vu);
897 mass_matrix_Hpm(0,1) = BMu;
898 mass_matrix_Hpm(1,1) = mHu2 + sqr(Mu) - 0.075*sqr(g1)*sqr(vd) +
899 0.125*sqr(g2)*sqr(vd) + 0.075*sqr(g1)*sqr(vu) + 0.375*sqr(g2)*sqr(vu);
900
902
903 return mass_matrix_Hpm;
904}
905
906void CLASSNAME::calculate_MHpm()
907{
908 const auto mass_matrix_Hpm(get_mass_matrix_Hpm());
910
911 if (MHpm.minCoeff() < 0.) {
912 problems.flag_tachyon("Hpm");
913 }
914
915 MHpm = sqrt(MHpm.cwiseAbs());
916}
917
918Eigen::Matrix<double,4,4> CLASSNAME::get_mass_matrix_Chi() const
919{
920 Eigen::Matrix<double,4,4> mass_matrix_Chi;
921
922 mass_matrix_Chi(0,0) = MassB;
923 mass_matrix_Chi(0,1) = 0;
924 mass_matrix_Chi(0,2) = -0.3872983346207417*g1*vd;
925 mass_matrix_Chi(0,3) = 0.3872983346207417*g1*vu;
926 mass_matrix_Chi(1,1) = MassWB;
927 mass_matrix_Chi(1,2) = 0.5*g2*vd;
928 mass_matrix_Chi(1,3) = -0.5*g2*vu;
929 mass_matrix_Chi(2,2) = 0;
930 mass_matrix_Chi(2,3) = -Mu;
931 mass_matrix_Chi(3,3) = 0;
932
934
935 return mass_matrix_Chi;
936}
937
938void CLASSNAME::calculate_MChi()
939{
940 const auto mass_matrix_Chi(get_mass_matrix_Chi());
942}
943
944Eigen::Matrix<double,2,2> CLASSNAME::get_mass_matrix_Cha() const
945{
946 Eigen::Matrix<double,2,2> mass_matrix_Cha;
947
948 mass_matrix_Cha(0,0) = MassWB;
949 mass_matrix_Cha(0,1) = 0.7071067811865475*g2*vu;
950 mass_matrix_Cha(1,0) = 0.7071067811865475*g2*vd;
951 mass_matrix_Cha(1,1) = Mu;
952
953 return mass_matrix_Cha;
954}
955
956void CLASSNAME::calculate_MCha()
957{
958 const auto mass_matrix_Cha(get_mass_matrix_Cha());
959 fs_svd<double,2,2>(mass_matrix_Cha, MCha, UM, UP);
960}
961
962double CLASSNAME::get_mass_matrix_VWm() const
963{
964 const double mass_matrix_VWm = 0.25*sqr(g2)*(sqr(vd) + sqr(vu));
965
966 return mass_matrix_VWm;
967}
968
969void CLASSNAME::calculate_MVWm()
970{
971 const auto mass_matrix_VWm = get_mass_matrix_VWm();
972 MVWm = std::sqrt(std::abs(mass_matrix_VWm));
973}
974
975
976double CLASSNAME::get_ewsb_eq_hh_1() const
977{
978 double result = mHd2*vd + vd*sqr(Mu) - 0.5*vu*BMu - 0.5*vu*BMu +
979 0.075*cube(vd)*sqr(g1) + 0.125*cube(vd)*sqr(g2) - 0.075*vd*sqr(g1)*
980 sqr(vu) - 0.125*vd*sqr(g2)*sqr(vu);
981
982 return result;
983}
984
985double CLASSNAME::get_ewsb_eq_hh_2() const
986{
987 double result = mHu2*vu + vu*sqr(Mu) - 0.5*vd*BMu - 0.5*vd*BMu +
988 0.075*cube(vu)*sqr(g1) + 0.125*cube(vu)*sqr(g2) - 0.075*vu*sqr(g1)*
989 sqr(vd) - 0.125*vu*sqr(g2)*sqr(vd);
990
991 return result;
992}
993
994double CLASSNAME::ThetaW() const
995{
996 return std::atan((0.7745966692414834*g1)/g2);
997}
998
999double CLASSNAME::v() const
1000{
1001 return 2*std::sqrt(sqr(MVWm)/sqr(g2));
1002}
1003
1004
1005std::ostream& operator<<(std::ostream& ostr, const MSSMNoFV_onshell_mass_eigenstates& model)
1006{
1007 model.print(ostr);
1008 return ostr;
1009}
1010
1011} // namespace gm2calc
#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 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)
Definition gm2_raii.hpp:44
void symmetrize(Eigen::MatrixBase< Derived > &m)
MSSMNoFV pole masses and corresponding mixings.