GM2Calc 2.3.0
Loading...
Searching...
No Matches
gm2_2loop.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#include "gm2calc/gm2_2loop.hpp"
21
24#include "gm2_ffunctions.hpp"
25#include "gm2_numerics.hpp"
26
27#include <cmath>
28#include <complex>
29
30/**
31 * \file gm2_2loop.cpp
32 *
33 * Contains functions necessary to calculate the SUSY contributions
34 * for g-2 at the 2-loop level.
35 */
36
37namespace gm2calc {
38
39namespace {
40
41const double oneOver16PiSqr = 6.332573977646111e-3; // 1/(4 Pi)^2
42const double root2 = 1.414213562373095; // Sqrt[2]
43
44/**
45 * Calculates 1st line of Eq (6.5) arxiv:1311.1775.
46 */
47double amu2LWHnu(const MSSMNoFV_onshell& model, double delta_g2, double delta_yuk, double delta_tb)
48{
49 return amu1LWHnu(model) * (0.015 + delta_g2 + delta_yuk + delta_tb);
50}
51
52/**
53 * Calculates 2nd line of Eq (6.5) arxiv:1311.1775.
54 */
55double amu2LWHmuL(const MSSMNoFV_onshell& model, double delta_g2, double delta_yuk, double delta_tb)
56{
57 return amu1LWHmuL(model) * (0.015 + delta_g2 + delta_yuk + delta_tb);
58}
59
60/**
61 * Calculates 3rd line of Eq (6.5) arxiv:1311.1775.
62 */
63double amu2LBHmuL(const MSSMNoFV_onshell& model, double delta_g1, double delta_yuk, double delta_tb)
64{
65 return amu1LBHmuL(model) * (0.015 + delta_g1 + delta_yuk + delta_tb);
66}
67
68/**
69 * Calculates 4th line of Eq (6.5) arxiv:1311.1775.
70 */
71double amu2LBHmuR(const MSSMNoFV_onshell& model, double delta_g1, double delta_yuk, double delta_tb)
72{
73 return amu1LBHmuR(model) * (0.04 + delta_g1 + delta_yuk + delta_tb);
74}
75
76/**
77 * Calculates 5th line of Eq (6.5) arxiv:1311.1775.
78 */
79double amu2LBmuLmuR(const MSSMNoFV_onshell& model, double delta_g1, double delta_tb)
80{
81 return amu1LBmuLmuR(model) * (0.03 + delta_g1 + delta_tb);
82}
83
84} // anonymous namespace
85
86/**
87 * Calculates best 2-loop SUSY contribution to a_mu without tan(beta)
88 * resummation.
89 *
90 * This function re-defines the muon Yukawa coupling in terms of the
91 * tree-level relation with the muon pole mass, i.e. \f$y_\mu =
92 * \frac{\sqrt{2} m_\mu^\text{pole}}{v_d}\f$. Therefore, this
93 * function does not use tan(beta) resummation.
94 */
106
107/**
108 * Calculates best 2-loop SUSY contribution to a_mu with tan(beta)
109 * resummation.
110 */
119
120// fermion/sfermion corrections, log-approximations
121
122/**
123 * Calculates \f$m_{SUSY}\f$, p.37 arxiv:1311.1775.
124 * Finds minimum of special masses to normalize logarithms.
125 */
127{
128 return std::fmin(std::abs(model.get_MassB()),
129 std::fmin(std::abs(model.get_MassWB()),
130 std::fmin(std::abs(model.get_Mu()),
131 std::fmin(std::sqrt(model.get_me2(1, 1)),
132 std::sqrt(model.get_ml2(1, 1))))));
133}
134
135/**
136 * Calculates \f$\Delta_{g_1}\f$, Eq (6.6a) arxiv:1311.1775.
137 *
138 * Contributions from 1st and 2nd generation sleptons have been
139 * included in addition.
140 */
142{
143 const double gY = model.get_gY();
144 const Eigen::Matrix<double,3,3>& mu2(model.get_mu2());
145 const Eigen::Matrix<double,3,3>& md2(model.get_md2());
146 const Eigen::Matrix<double,3,3>& mq2(model.get_mq2());
147 const Eigen::Matrix<double,3,3>& me2(model.get_me2());
148 const Eigen::Matrix<double,3,3>& ml2(model.get_ml2());
149 const double logscale = log_scale(model);
150
151 return sqr(gY) * oneOver16PiSqr * 4. / 3. *
152 (4. / 3. * std::log(std::sqrt(mu2(0, 0)) / logscale) +
153 4. / 3. * std::log(std::sqrt(mu2(1, 1)) / logscale) +
154 4. / 3. * std::log(std::sqrt(mu2(2, 2)) / logscale) +
155 1. / 3. * std::log(std::sqrt(md2(0, 0)) / logscale) +
156 1. / 3. * std::log(std::sqrt(md2(1, 1)) / logscale) +
157 1. / 3. * std::log(std::sqrt(md2(2, 2)) / logscale) +
158 1. / 6. * std::log(std::sqrt(mq2(0, 0)) / logscale) +
159 1. / 6. * std::log(std::sqrt(mq2(1, 1)) / logscale) +
160 1. / 6. * std::log(std::sqrt(mq2(2, 2)) / logscale) +
161 std::log(std::sqrt(me2(0, 0)) / logscale) +
162 std::log(std::sqrt(me2(1, 1)) / logscale) +
163 std::log(std::sqrt(me2(2, 2)) / logscale) +
164 0.5 * std::log(std::sqrt(ml2(0, 0)) / logscale) +
165 0.5 * std::log(std::sqrt(ml2(1, 1)) / logscale) +
166 0.5 * std::log(std::sqrt(ml2(2, 2)) / logscale));
167}
168
169/**
170 * Calculates \f$\Delta_{\tilde{H}}\f$, Eq (6.6c) arxiv:1311.1775.
171 */
173{
174 const double ytau = model.get_Ye(2, 2);
175 const double ytop = model.get_Yu(2, 2);
176 const double ybot = model.get_Yd(2, 2);
177 const Eigen::Matrix<double,3,3>& mu2(model.get_mu2());
178 const Eigen::Matrix<double,3,3>& md2(model.get_md2());
179 const Eigen::Matrix<double,3,3>& mq2(model.get_mq2());
180 const Eigen::Matrix<double,3,3>& me2(model.get_me2());
181 const Eigen::Matrix<double,3,3>& ml2(model.get_ml2());
182 const double logscale = log_scale(model);
183
184 return oneOver16PiSqr * 0.5 *
185 (3 * sqr(ytop) * std::log(std::sqrt(mu2(2, 2)) / logscale) +
186 3 * sqr(ybot) * std::log(std::sqrt(md2(2, 2)) / logscale) +
187 3 * (sqr(ytop) + sqr(ybot)) *
188 std::log(std::sqrt(mq2(2, 2)) / logscale) +
189 sqr(ytau) * (std::log(std::sqrt(me2(2, 2)) / logscale) +
190 std::log(std::sqrt(ml2(2, 2)) / logscale)));
191}
192
193/**
194 * Calculates \f$\Delta_{\tilde{B}\tilde{H}}\f$, Eq (6.6d)
195 * arxiv:1311.1775.
196 */
198{
199 const double ytop = model.get_Yu(2, 2);
200 const Eigen::Matrix<double,3,3>& mu2(model.get_mu2());
201 const Eigen::Matrix<double,3,3>& mq2(model.get_mq2());
202 const double logscale = log_scale(model);
203
204 return oneOver16PiSqr * sqr(ytop) *
205 (-8 * std::log(std::sqrt(mu2(2, 2)) / logscale) +
206 2 * std::log(std::sqrt(mq2(2, 2)) / logscale));
207}
208
209/**
210 * Calculates \f$\Delta_{g_2}\f$, Eq (6.6b) arxiv:1311.1775.
211 *
212 * Contributions from 1st and 2nd generation sleptons have been
213 * included in addition.
214 */
216{
217 const double g2 = model.get_g2();
218 const Eigen::Matrix<double,3,3>& mq2(model.get_mq2());
219 const Eigen::Matrix<double,3,3>& ml2(model.get_ml2());
220 const double logscale = log_scale(model);
221
222 return sqr(g2) * oneOver16PiSqr * 4. / 3. *
223 (1.5 * std::log(std::sqrt(mq2(0, 0)) / logscale) +
224 1.5 * std::log(std::sqrt(mq2(1, 1)) / logscale) +
225 1.5 * std::log(std::sqrt(mq2(2, 2)) / logscale) +
226 0.5 * std::log(std::sqrt(ml2(0, 0)) / logscale) +
227 0.5 * std::log(std::sqrt(ml2(1, 1)) / logscale) +
228 0.5 * std::log(std::sqrt(ml2(2, 2)) / logscale));
229}
230
231/**
232 * Calculates \f$\Delta_{\tilde{W}\tilde{H}}\f$, Eq (6.6e)
233 * arxiv:1311.1775.
234 */
236{
237 const double ytop = model.get_Yu(2, 2);
238 const Eigen::Matrix<double,3,3>& mq2(model.get_mq2());
239 const double logscale = log_scale(model);
240
241 return oneOver16PiSqr * (-6) * sqr(ytop) *
242 std::log(std::sqrt(mq2(2, 2)) / logscale);
243}
244
245/**
246 * Calculates \f$\Delta_{t_\beta}\f$, Eq (6.6f) arxiv:1311.1775.
247 */
249{
250 const double ytau = model.get_Ye(2, 2);
251 const double ytop = model.get_Yu(2, 2);
252 const double ybot = model.get_Yd(2, 2);
253 const double logscale = log_scale(model);
254 const double Q = model.get_scale();
255
256 return oneOver16PiSqr * (sqr(ytau) - 3 * sqr(ytop) + 3 * sqr(ybot)) *
257 std::log(Q / logscale);
258}
259
260/**
261 * Calculates 1st line of Eq (6.5) arxiv:1311.1775.
262 */
270
271/**
272 * Calculates 2nd line of Eq (6.5) arxiv:1311.1775.
273 */
281
282/**
283 * Calculates 3rd line of Eq (6.5) arxiv:1311.1775.
284 */
292
293/**
294 * Calculates 4th line of Eq (6.5) arxiv:1311.1775.
295 */
303
304/**
305 * Calculates 5th line of Eq (6.5) arxiv:1311.1775.
306 */
311
312/**
313 * Calculates 2-loop leading log approximation for fermion-sfermion
314 * loop contributions, Eq (6.5) arxiv:1311.1775.
315 *
316 * No tan(beta) resummation
317 */
319{
320 const double dg1 = delta_g1(model);
321 const double dg2 = delta_g2(model);
324 const double dtb = delta_tan_beta(model);
325
326 return amu2LWHnu(model, dg2, dyw, dtb)
331}
332
333/**
334 * Calculates 2-loop leading log approximation for fermion-sfermion
335 * loop contributions, Eq (6.5) arxiv:1311.1775.
336 *
337 * Includes tan(beta) resummation
338 */
343
344// === photonic 2-loop corrections ===
345
346/**
347 * Calculates the photonic 2-loop contribution to the 1-loop chargino
348 * diagram, Eq (35) arXiv:1003.5820.
349 */
351{
352 const double mm = model.get_MM();
353 const Eigen::Array<double,2,1> AAC_(AAC(model));
354 const Eigen::Array<double,2,1> BBC_(BBC(model));
355 const Eigen::Array<double,2,1>& MCha(model.get_MCha());
356 const double MSvmL = model.get_MSvmL();
357 const Eigen::Array<double,2,1> x(x_k(model));
358 const double Q = model.get_scale();
359 const double x_mv = mm / MSvmL;
360 const double log_x_mv = std::log(x_mv);
361 const double log_x_vq = std::log(MSvmL / Q);
362
363 double result = 0.;
364
365 for (int k = 0; k < 2; k++) {
366 const double y = MCha(k)/mm;
367 const double f1c = F1C(x(k));
368 const double f2c = F2C(x(k));
369 result +=
370 + (4./3*AAC_(k)*f1c + 16./3*BBC_(k)*y*f2c)*log_x_mv
371 - 47./72*AAC_(k)*F3C(x(k))
372 - 61./9*BBC_(k)*y*F4C(x(k))
373 - (AAC_(k)*f1c + 2*BBC_(k)*y*f2c)*log_x_vq;
374 }
375
376 return sqr(model.get_EL0() * oneOver16PiSqr * x_mv) * result;
377}
378
379/**
380 * Calculates the photonic 2-loop contribution to the 1-loop
381 * neutralino diagram, Eq (36) arXiv:1003.5820.
382 */
384{
385 const double mm = model.get_MM();
386 const Eigen::Matrix<double,4,2> AAN_(AAN(model));
387 const Eigen::Matrix<double,4,2> BBN_(BBN(model));
388 const Eigen::Array<double,4,1>& MNeu(model.get_MChi());
389 const Eigen::Array<double,2,1>& MSmu(model.get_MSm());
390 const Eigen::Matrix<double,4,2> x(x_im(model));
391 const double Q = model.get_scale();
392 const Eigen::Array<double,2,1> log_x_mm((MSmu / mm).log());
393 const Eigen::Array<double,2,1> log_x_mq((MSmu / Q).log());
394
395 double result = 0.;
396
397 for (int i = 0; i < 4; ++i) {
398 const double y = MNeu(i) / mm;
399 for (int m = 0; m < 2; ++m) {
400 const double f1n = F1N(x(i, m));
401 result += (
402 + (4./3*AAN_(i, m)*f1n
403 + 16./6*BBN_(i, m)*y*F2N(x(i, m)))*log_x_mm(m)
404 + 35./72*AAN_(i, m)*F3N(x(i, m))
405 + 8./9*BBN_(i, m)*y*F4N(x(i, m))
406 + 0.5*AAN_(i, m)*f1n*log_x_mq(m)
407 )/sqr(MSmu(m));
408 }
409 }
410
411 return sqr(model.get_EL0() * oneOver16PiSqr * mm) * result;
412}
413
414// ==== amu2Loop_a corrections ====
415
416/**
417 * The following functions include resummation of 1/(1 + Delta_mu) within
418 * the muon, tau and bottom Yukawa couplings.
419 */
420
421/**
422 * Calculates CP-even Higgs mixing angle \f$\tan\alpha\f$.
423 *
424 * @note the result is < 0
425 */
427{
428 const double tb = model.get_TB();
429 const double mz = model.get_MZ();
430 const double ma = model.get_MA0();
431 const double tan2beta = 2*tb/(1 - sqr(tb));
432 const double tan2alpha = tan2beta * (sqr(ma) + sqr(mz)) / (sqr(ma) - sqr(mz));
433
434 return -1.0 / tan2alpha - std::sqrt(1.0 / sqr(tan2alpha) + 1.0);
435}
436
437/**
438 * Calculates \f$\lambda_{\mu}\f$, Eq (65), and
439 * \f$\lambda_{\chi_k^+}\f$, Eq (66) arXiv:hep-ph/0609168.
440 *
441 * Row 0 contains \f$\lambda_{\chi_1^+}\f$, Eq. (66).
442 * Row 1 contains \f$\lambda_{\chi_2^+}\f$, Eq. (66).
443 * Row 2 contains \f$\lambda_{\mu}\f$, Eq. (65).
444 *
445 * includes tan(beta) resummation
446 */
447Eigen::Matrix<std::complex<double>,3,3> lambda_mu_cha(const MSSMNoFV_onshell& model)
448{
449 const Eigen::Array<double,2,1>& MCha(model.get_MCha());
450 const double mw = model.get_MW();
451 const double tb = model.get_TB();
452 const double rtb = std::sqrt(1 + sqr(tb));
453 const double cb = 1/rtb;
454 const double sb = tb/rtb;
455 const double ta = tan_alpha(model);
456 const double rta = std::sqrt(1 + sqr(ta));
457 const double ca = 1/rta;
458 const double sa = ta/rta;
459 const Eigen::Matrix<std::complex<double>,2,2>& U(model.get_UM());
460 const Eigen::Matrix<std::complex<double>,2,2>& V(model.get_UP());
461 const double one_over_cb_eff = root2 * model.get_Ye(1,1)
462 * mw / (model.get_MM() * model.get_g2());
463
464 Eigen::Matrix<std::complex<double>,3,3> result;
465
466 for (int k = 0; k < 2; ++k) {
467 const double wc = root2 * mw / MCha(k);
468 const std::complex<double> u0v1 = U(k, 0) * V(k, 1);
469 const std::complex<double> u1v0 = U(k, 1) * V(k, 0);
470
471 result(k, 0) = wc * (u0v1 * ca - u1v0 * sa);
472 result(k, 1) = wc * (u0v1 * sa + u1v0 * ca);
473 result(k, 2) = wc * (-u0v1 * cb - u1v0 * sb);
474 }
475 result(2, 0) = -sa * one_over_cb_eff;
476 result(2, 1) = ca * one_over_cb_eff;
477 result(2, 2) = sb * one_over_cb_eff;
478
479 return result;
480}
481
482/**
483 * Calculates \f$\lambda_{\tilde{t}_i}\f$, Eq (67)
484 * arXiv:hep-ph/0609168
485 */
486Eigen::Matrix<std::complex<double>,2,2> lambda_stop(const MSSMNoFV_onshell& model)
487{
488 const double tb = model.get_TB();
489 const double rtb = std::sqrt(1 + sqr(tb));
490 const double sb = tb/rtb;
491 const double ta = tan_alpha(model);
492 const double rta = std::sqrt(1 + sqr(ta));
493 const double ca = 1/rta;
494 const double sa = ta/rta;
495 const double mt = model.get_MT();
496 const Eigen::Array<double,2,1>& m_stop(model.get_MSt());
497 const Eigen::Matrix<double,2,2>& u_stop(model.get_USt());
498 const double At = model.get_Au(2, 2);
499 const double mu = model.get_Mu();
500
501 Eigen::Matrix<std::complex<double>,2,2> result;
502
503 for (int i = 0; i < 2; ++i) {
504 const double tt = 2 * mt / (sqr(m_stop(i)) * sb);
505 const std::complex<double> uu = std::conj(u_stop(i, 0)) * u_stop(i, 1);
506
507 result(i, 0) = tt * (mu * sa + At * ca) * uu;
508 result(i, 1) = tt * (-mu * ca + At * sa) * uu;
509 }
510
511 return result;
512}
513
514/**
515 * Calculates \f$\lambda_{\tilde{b}_i}\f$, Eq (68)
516 * arXiv:hep-ph/0609168
517 *
518 * includes tan(beta) resummation
519 */
520Eigen::Matrix<std::complex<double>,2,2> lambda_sbot(const MSSMNoFV_onshell& model)
521{
522 const double ta = tan_alpha(model);
523 const double rta = std::sqrt(1 + sqr(ta));
524 const double ca = 1/rta;
525 const double sa = ta/rta;
526 const Eigen::Array<double,2,1>& m_sbot(model.get_MSb());
527 const Eigen::Matrix<double,2,2>& u_sbot(model.get_USb());
528 const double Ab = model.get_Ad(2, 2);
529 const double mu = model.get_Mu();
530 const double mb_over_cb_eff = root2 * model.get_Yd(2,2)
531 * model.get_MW() / model.get_g2();
532
533 Eigen::Matrix<std::complex<double>,2,2> result;
534
535 for (int i = 0; i < 2; ++i) {
536 const double bb = 2 * mb_over_cb_eff / sqr(m_sbot(i));
537 const std::complex<double> uu = std::conj(u_sbot(i, 0)) * u_sbot(i, 1);
538
539 result(i, 0) = bb * (-mu * ca - Ab * sa) * uu;
540 result(i, 1) = bb * (-mu * sa + Ab * ca) * uu;
541 }
542
543 return result;
544}
545
546/**
547 * Calculates \f$\lambda_{\tilde{\tau}_i}\f$, Eq (69)
548 * arXiv:hep-ph/0609168
549 *
550 * includes tan(beta) resummation
551 */
552Eigen::Matrix<std::complex<double>,2,2> lambda_stau(const MSSMNoFV_onshell& model)
553{
554 const double ta = tan_alpha(model);
555 const double rta = std::sqrt(1 + sqr(ta));
556 const double ca = 1/rta;
557 const double sa = ta/rta;
558 const Eigen::Array<double,2,1>& m_stau(model.get_MStau());
559 const Eigen::Matrix<double,2,2>& u_stau(model.get_UStau());
560 const double Al = model.get_Ae(2, 2);
561 const double mu = model.get_Mu();
562 const double mtau_over_cb_eff = root2 * model.get_Ye()(2,2)
563 * model.get_MW() / model.get_g2();
564
565 Eigen::Matrix<std::complex<double>,2,2> result;
566
567 for (int i = 0; i < 2; ++i) {
568 const double tt = 2 * mtau_over_cb_eff / sqr(m_stau(i));
569 const std::complex<double> uu = std::conj(u_stau(i, 0)) * u_stau(i, 1);
570
571 result(i, 0) = tt * (-mu * ca - Al * sa) * uu;
572 result(i, 1) = tt * (-mu * sa + Al * ca) * uu;
573 }
574
575 return result;
576}
577
578/**
579 * Calculates 2-loop contribution to amu, where a sfermion loop has
580 * been inserted into a 1-loop Standard Model diagram (photonic
581 * Barr-Zee diagram \f$(\tilde{f}\gamma H)\f$), Eq (64)
582 * arXiv:hep-ph/0609168.
583 */
585{
586 const double mm = model.get_MM();
587 const double mw = model.get_MW();
588 const double sw = std::sqrt(1. - sqr(mw / model.get_MZ()));
589 const double el = model.get_EL();
590 const Eigen::Array<double,2,1>& m_stop(model.get_MSt());
591 const Eigen::Array<double,2,1>& m_sbot(model.get_MSb());
592 const Eigen::Array<double,2,1>& m_stau(model.get_MStau());
593 const Eigen::Array<double,2,1>& m_higgs(model.get_Mhh());
594 const Eigen::Matrix<std::complex<double>,3,3> lambda(lambda_mu_cha(model));
595 const Eigen::Array<std::complex<double>,2,1> lambda_mu(
596 (Eigen::Array<std::complex<double>,2,1>() << lambda(2, 0), lambda(2, 1)).finished());
597 const Eigen::Matrix<std::complex<double>,2,2> lambdastop(lambda_stop(model));
598 const Eigen::Matrix<std::complex<double>,2,2> lambdasbot(lambda_sbot(model));
599 const Eigen::Matrix<std::complex<double>,2,2> lambdastau(lambda_stau(model));
600
601 double result = 0;
602
603 for (int i = 0; i < 2; ++i) {
604 for (int s = 0; s < 2; ++s) {
605 // prefactor N_c*q^2 = 3*(2/3)^2 = 4/3
606 result += 4./3 * std::real(lambda_mu(s) * lambdastop(i, s))
607 * f_sferm(sqr(m_stop(i) / m_higgs(s)));
608 }
609 }
610
611 for (int i = 0; i < 2; ++i) {
612 for (int s = 0; s < 2; ++s) {
613 // prefactor N_c*q^2 = 3*(1/3)^2 = 1/3
614 result += 1./3 * std::real(lambda_mu(s) * lambdasbot(i, s))
615 * f_sferm(sqr(m_sbot(i) / m_higgs(s)));
616 }
617 }
618
619 for (int i = 0; i < 2; ++i) {
620 for (int s = 0; s < 2; ++s) {
621 result += std::real(lambda_mu(s) * lambdastau(i, s))
622 * f_sferm(sqr(m_stau(i) / m_higgs(s)));
623 }
624 }
625
626 return result * 2 * sqr(oneOver16PiSqr * sqr(el) * mm / (mw * sw));
627}
628
629/**
630 * Calculates 2-loop contribution to amu, where a chargino loop has
631 * been inserted into a 1-loop Standard Model diagram (photonic
632 * Barr-Zee diagram \f$(\chi\gamma H)\f$), Eq (63)
633 * arXiv:hep-ph/0609168.
634 */
636{
637 const double mm = model.get_MM();
638 const double mw = model.get_MW() ;
639 const double ma = model.get_MA0();
640 const Eigen::Array<double,2,1>& m_higgs(model.get_Mhh());
641 const double sw = std::sqrt(1. - sqr(mw / model.get_MZ()));
642 const double el = model.get_EL();
643 const Eigen::Array<double,2,1>& m_cha(model.get_MCha());
644 const Eigen::Matrix<std::complex<double>,3,3> lambda(lambda_mu_cha(model));
645
646 double result = 0;
647
648 for (int k = 0; k < 2; ++k) {
649 result += std::real(lambda(2, 2) * lambda(k, 2)) * f_PS(sqr(m_cha(k) / ma));
650 for (int s = 0; s < 2; ++s) {
651 result += std::real(lambda(2, s) * lambda(k, s))
652 * f_S(sqr(m_cha(k) / m_higgs(s)));
653 }
654 }
655
656 return result * 2 * sqr(oneOver16PiSqr * sqr(el) * mm / (mw * sw));
657}
658
659} // namespace gm2calc
contains the MSSMNoFV parameters in the on-shell scheme
double lambda
double mu
struct MSSMNoFV_onshell MSSMNoFV_onshell
double F1N(double x) noexcept
, Eq (52) arXiv:hep-ph/0609168
double amu1LBHmuL(const MSSMNoFV_onshell &model)
Calculates the 1-loop leading log approximation: Bino–Higgsino, left-handed smuon,...
double amu2LChi0Photonic(const MSSMNoFV_onshell &model)
Calculates the photonic 2-loop contribution to the 1-loop neutralino diagram, Eq (36) arXiv:1003....
T sqr(T x) noexcept
returns number squared
Eigen::Array< double, 2, 1 > x_k(const MSSMNoFV_onshell &model)
Calculates , which appears in Eq (47) of arXiv:hep-ph/0609168.
double amu1LBmuLmuR(const MSSMNoFV_onshell &model)
Calculates the 1-loop leading log approximation: Bino, left-handed smuon, right-handed smuon,...
Eigen::Array< double, 2, 1 > BBC(const MSSMNoFV_onshell &model)
Calculates , Eqs (2.11b), (2.7b) in arXiv:1311.1775.
double amu1LBHmuR(const MSSMNoFV_onshell &model)
Calculates the 1-loop leading log approximation: Bino–Higgsino, right-handed smuon,...
double amu2LWHnu(const MSSMNoFV_onshell &model)
Calculates 1st line of Eq (6.5) arxiv:1311.1775.
double delta_yuk_higgsino(const MSSMNoFV_onshell &model)
Calculates , Eq (6.6c) arxiv:1311.1775.
double f_sferm(double z) noexcept
Calculates , Eq (72) arXiv:hep-ph/0609168.
Eigen::Matrix< std::complex< double >, 2, 2 > lambda_sbot(const MSSMNoFV_onshell &model)
Calculates , Eq (68) arXiv:hep-ph/0609168.
double amu1LWHmuL(const MSSMNoFV_onshell &model)
Calculates the 1-loop leading log approximation: Wino–Higgsino, left-handed smuon,...
double amu2LaSferm(const MSSMNoFV_onshell &model)
Calculates 2-loop contribution to amu, where a sfermion loop has been inserted into a 1-loop Standard...
double f_S(double z) noexcept
Calculates , Eq (71) arXiv:hep-ph/0609168.
double F4N(double x) noexcept
, Eq (40) arXiv:1003.5820
double amu2LWHmuL(const MSSMNoFV_onshell &model)
Calculates 2nd line of Eq (6.5) arxiv:1311.1775.
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)
double F4C(double x) noexcept
, Eq (38) arXiv:1003.5820
double F2N(double x) noexcept
, Eq (53) arXiv:hep-ph/0609168
double F3C(double x) noexcept
, Eq (37) arXiv:1003.5820
double calculate_amu_2loop(const MSSMNoFV_onshell &model)
Calculates best 2-loop SUSY contribution to a_mu with tan(beta) resummation.
double F3N(double x) noexcept
, Eq (39) arXiv:1003.5820
Eigen::Array< double, 4, 2 > x_im(const MSSMNoFV_onshell &model)
Calculates , which appears in Eq (46) of arXiv:hep-ph/0609168.
Eigen::Matrix< std::complex< double >, 2, 2 > lambda_stop(const MSSMNoFV_onshell &model)
Calculates , Eq (67) arXiv:hep-ph/0609168.
double amu2LFSfapprox(const MSSMNoFV_onshell &model)
Calculates 2-loop leading log approximation for fermion-sfermion loop contributions,...
double tan_alpha(const MSSMNoFV_onshell &model)
The following functions include resummation of 1/(1 + Delta_mu) within the muon, tau and bottom Yukaw...
double delta_g1(const MSSMNoFV_onshell &model)
Calculates , Eq (6.6a) arxiv:1311.1775.
double amu2LaCha(const MSSMNoFV_onshell &model)
Calculates 2-loop contribution to amu, where a chargino loop has been inserted into a 1-loop Standard...
double F1C(double x) noexcept
, Eq (54) arXiv:hep-ph/0609168
Eigen::Array< double, 4, 2 > BBN(const MSSMNoFV_onshell &model)
Calculates , Eqs (2.11a), (2.7b) in arXiv:1311.1775.
double delta_tan_beta(const MSSMNoFV_onshell &model)
Calculates , Eq (6.6f) arxiv:1311.1775.
double F2C(double x) noexcept
, Eq (55) arXiv:hep-ph/0609168
double amu2LFSfapprox_non_tan_beta_resummed(const MSSMNoFV_onshell &model)
Calculates 2-loop leading log approximation for fermion-sfermion loop contributions,...
Eigen::Matrix< std::complex< double >, 2, 2 > lambda_stau(const MSSMNoFV_onshell &model)
Calculates , Eq (69) arXiv:hep-ph/0609168.
double amu1LWHnu(const MSSMNoFV_onshell &model)
Calculates the 1-loop leading log approximation: Wino–Higgsino, muon-sneutrino, Eq (6....
double amu2LBHmuL(const MSSMNoFV_onshell &model)
Calculates 3rd line of Eq (6.5) arxiv:1311.1775.
double amu2LBHmuR(const MSSMNoFV_onshell &model)
Calculates 4th line of Eq (6.5) arxiv:1311.1775.
double delta_yuk_wino_higgsino(const MSSMNoFV_onshell &model)
Calculates , Eq (6.6e) arxiv:1311.1775.
Eigen::Matrix< std::complex< double >, 3, 3 > lambda_mu_cha(const MSSMNoFV_onshell &model)
Calculates , Eq (65), and , Eq (66) arXiv:hep-ph/0609168.
double f_PS(double z) noexcept
Calculates , Eq (70) arXiv:hep-ph/0609168.
double delta_yuk_bino_higgsino(const MSSMNoFV_onshell &model)
Calculates , Eq (6.6d) arxiv:1311.1775.
double log_scale(const MSSMNoFV_onshell &model)
Calculates , p.37 arxiv:1311.1775.
double tan_beta_cor(const MSSMNoFV_onshell &model)
Calculates .
Eigen::Array< double, 4, 2 > AAN(const MSSMNoFV_onshell &model)
Calculates , Eqs (2.11a), (2.7a) in arXiv:1311.1775.
double calculate_amu_2loop_non_tan_beta_resummed(const MSSMNoFV_onshell &model)
Calculates best 2-loop SUSY contribution to a_mu without tan(beta) resummation.
Definition gm2_2loop.cpp:95
double amu2LChipmPhotonic(const MSSMNoFV_onshell &model)
Calculates the photonic 2-loop contribution to the 1-loop chargino diagram, Eq (35) arXiv:1003....
double delta_g2(const MSSMNoFV_onshell &model)
Calculates , Eq (6.6b) arxiv:1311.1775.
double amu2LBmuLmuR(const MSSMNoFV_onshell &model)
Calculates 5th line of Eq (6.5) arxiv:1311.1775.
Eigen::Array< double, 2, 1 > AAC(const MSSMNoFV_onshell &model)
Calculates , Eqs (2.11b), (2.7a) in arXiv:1311.1775.