Himalaya
MSSM_mass_eigenstates.cpp
Go to the documentation of this file.
1 // ====================================================================
2 // This file is part of Himalaya.
3 //
4 // Himalaya is licenced under the GNU General Public License (GNU GPL)
5 // version 3.
6 // ====================================================================
7 
10 #include "himalaya/mh2_fo/PV.hpp"
11 #include "himalaya/mh2_fo/Sum.hpp"
15 #include "himalaya/misc/Logger.hpp"
17 #include "himalaya/misc/Powers.hpp"
18 #include <cmath>
19 #include <iostream>
20 #include <tuple>
21 
22 /**
23  * @file MSSM_mass_eigenstates.cpp
24  *
25  * @brief Contains the implementation of the \a MSSM_spectrum and \a
26  * MSSM_mass_eigenstates classes.
27  */
28 
29 namespace himalaya {
30 namespace mh2_fo {
31 
32 namespace {
33 
34 template <typename T>
35 T constexpr sqr(T x) noexcept { return x*x; }
36 
37 /**
38  * Transform parameter point to be gaugeless, g1 = g2 = 0.
39  */
40 Parameters make_gaugeless(const Parameters& pars)
41 {
42  auto gl = pars;
43  gl.g1 = 0.;
44  gl.g2 = 0.;
45  return gl;
46 }
47 
48 /// sets yb = ytau = 0
49 Parameters make_3rd_gen(const Parameters& pars)
50 {
51  const double eps = 1e-6;
52 
53  auto gen3 = pars;
54 
55  gen3.Mb = NaN;
56  gen3.Mtau = NaN;
57  gen3.MSb.setConstant(NaN);
58  gen3.MStau.setConstant(NaN);
59  gen3.s2b = NaN;
60  gen3.s2tau = NaN;
61  gen3.theta_b = NaN;
62  gen3.theta_tau = NaN;
63 
64  for (int i = 0; i < 3; i++) {
65  for (int k = 0; k < 3; k++) {
66  if (i == 2 && k == 2) {
67  gen3.Yd(i,k) = eps;
68  gen3.Ye(i,k) = eps;
69  } else {
70  gen3.Yd(i,k) = 0.;
71  gen3.Ye(i,k) = 0.;
72  gen3.Yu(i,k) = 0.;
73  }
74  }
75  }
76 
77  gen3.validate(false);
78 
79  return gen3;
80 }
81 
82 } // anonymous namespace
83 
84 /**
85  * Constructor
86  *
87  * @param pars_ MSSM DR' parameters
88  * @param only_at if true, only alpha_t-enhanced contributions are calculated
89  */
91  : pars(pars_)
92  , masses(pars_)
93  , gaugeless(make_gaugeless(pars_))
94 {
95  orders.fill(1);
96 
97  const double eps = 1e-10;
98 
99  // TODO(voigt) check if they are still consistent
100  if (std::abs(pars_.Mt) < eps) {
102  orders.at(CouplingOrders::YT6) = 0;
103  orders.at(CouplingOrders::YB6) = 0;
104  }
105 
106  if (std::abs(pars_.Mb) < eps) {
108  orders.at(CouplingOrders::YT6) = 0;
109  orders.at(CouplingOrders::YB6) = 0;
112  }
113 
114  if (std::abs(pars_.Mtau) < eps) {
118  }
119 
120  if (only_at) {
121  orders.at(CouplingOrders::YB6) = 0;
126 
127  // re-calculate DR' masses for g1 = g2 = yb = ytau = 0
128  pars = make_gaugeless(pars_);
129  masses = make_3rd_gen(pars);
130  masses.M2hh(0) = 0.;
131  } else {
133  }
134 }
135 
136 /**
137  * Returns the tree-level squared Higgs masses.
138  * @return squared Higgs masses
139  */
141 {
142  const auto m0 = get_mass_matrix_hh();
143  const auto mh2_tree = fs_diagonalize_hermitian_perturbatively(m0);
144 
145  return std::get<0>(mh2_tree);
146 }
147 
148 /**
149  * Returns the tree-level, 1- and 2-loop contribution to the squared
150  * light CP-even Higgs pole mass. The function does not include
151  * implicit or explicit higher orders.
152  *
153  * @return Tree-level, 1- and 2-loop contribution to light CP-even Higgs mass
154  */
155 std::tuple<double,double,double> MSSM_mass_eigenstates::calculate_Mh2() const
156 {
157  const auto p2 = calculate_Mh2_tree()(0);
158  const auto m0 = get_mass_matrix_hh();
159  const auto m1 = delta_mh2_1loop(p2);
160  const auto m2 = delta_mh2_2loop();
161 
163  const auto m0_gl = get_mass_matrix_hh_gaugeless();
164  const auto m1_gl = delta_mh2_1loop_gaugeless();
165 
166  // tree-level and 1-loop with electroweak gauge couplings
167  const auto Mh2 = fs_diagonalize_hermitian_perturbatively(m0, m1);
168 
169  // 2-loop in gaugless limit (p = g1 = g2 = 0)
170  const auto Mh2_gl = fs_diagonalize_hermitian_perturbatively(m0_gl, m1_gl, m2);
171 
172  return std::make_tuple(std::get<0>(Mh2)(0),
173  std::get<1>(Mh2)(0),
174  std::get<2>(Mh2_gl)(0));
175  }
176 
177  // numeric diagonalization
178  RM22 ZH;
179  MSSM_spectrum::A2 M2hh_0L, M2hh_1L, M2hh_2L;
180  const RM22& MHH_0L = m0;
181  const RM22 MHH_1L = m0 + m1;
182  const RM22 MHH_2L = m0 + m1 + m2;
183 
184  fs_diagonalize_hermitian(MHH_0L, M2hh_0L, ZH);
185  fs_diagonalize_hermitian(MHH_1L, M2hh_1L, ZH);
186  fs_diagonalize_hermitian(MHH_2L, M2hh_2L, ZH);
187 
188  return std::make_tuple(M2hh_0L(0), (M2hh_1L - M2hh_0L)(0), (M2hh_2L - M2hh_1L)(0));
189 }
190 
191 /**
192  * Higgs 1-loop DR' contribution for arbitrary momentum.
193  * The function returns 1/(4Pi)^2 (-selfenergy + tadpole).
194  *
195  * @param p2 squared momentum
196  *
197  * @return 1-loop contribution
198  */
200 {
201  const auto g1 = pars.g1;
202  const auto g2 = pars.g2;
203  const auto yt = pars.Yu(2,2);
204  const auto yb = pars.Yd(2,2);
205  const auto ytau = pars.Ye(2,2);
206  const auto vu = pars.vu;
207  const auto vd = pars.vd;
208  const auto mu = pars.mu;
209  const auto At = pars.Au(2,2);
210  const auto Ab = pars.Ad(2,2);
211  const auto Atau = pars.Ae(2,2);
212  const auto M2VWm = masses.M2VWm;
213  const auto M2VZ = masses.M2VZ;
214  const auto MFt = masses.MFt;
215  const auto MFb = masses.MFb;
216  const auto MFtau = masses.MFtau;
217  const auto M2SveL = masses.M2SveL;
218  const auto M2SvmL = masses.M2SvmL;
219  const auto M2SvtL = masses.M2SvtL;
220  const auto M2Su = masses.M2Su;
221  const auto M2Sd = masses.M2Sd;
222  const auto M2Sc = masses.M2Sc;
223  const auto M2Ss = masses.M2Ss;
224  const auto M2St = masses.M2St;
225  const auto M2Sb = masses.M2Sb;
226  const auto M2Se = masses.M2Se;
227  const auto M2Sm = masses.M2Sm;
228  const auto M2Stau = masses.M2Stau;
229  const auto M2hh = masses.M2hh;
230  const auto M2Ah = masses.M2Ah;
231  const auto M2Hpm = masses.M2Hpm;
232  const auto MChi = masses.MChi;
233  const auto MCha = masses.MCha;
234  const auto ZU = masses.ZU;
235  const auto ZD = masses.ZD;
236  const auto ZC = masses.ZC;
237  const auto ZS = masses.ZS;
238  const auto ZT = masses.ZT;
239  const auto ZB = masses.ZB;
240  const auto ZE = masses.ZE;
241  const auto ZM = masses.ZM;
242  const auto ZTau = masses.ZTau;
243  const auto ZH = masses.ZH;
244  const auto ZA = masses.ZA;
245  const auto ZP = masses.ZP;
246  const auto ZN = masses.ZN;
247  const auto UM = masses.UM;
248  const auto UP = masses.UP;
249 
250  double se11{0.}, se12{0.}, se22{0.};
251 
252  se11 += -(A0(M2VWm)*sqr(g2))/2.;
253  se11 += (A0(M2VZ)*(-3*sqr(g1) - 5*sqr(g2)))/20.;
254  se11 += -(B0(p2,M2SveL,M2SveL)*sqr(vd*(3*sqr(g1) + 5*sqr(g2))))/400.;
255  se11 += -(B0(p2,M2SvmL,M2SvmL)*sqr(vd*(3*sqr(g1) + 5*sqr(g2))))/400.;
256  se11 += -(B0(p2,M2SvtL,M2SvtL)*sqr(vd*(3*sqr(g1) + 5*sqr(g2))))/400.;
257  se11 += (-7*B0(p2,M2VWm,M2VWm)*pow4(g2)*sqr(vd))/8.;
258  se11 += (-7*B0(p2,M2VZ,M2VZ)*sqr(vd*(3*sqr(g1) + 5*sqr(g2))))/400.;
259  se11 += 3*B0(p2,sqr(MFb),sqr(MFb))*(-p2 + 4*sqr(MFb))*sqr(yb);
260  se11 += B0(p2,sqr(MFtau),sqr(MFtau))*(-p2 + 4*sqr(MFtau))*sqr(ytau);
261  se11 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Ah(gI1),M2Ah(gI2))*sqr(vd*(3*sqr(g1) + 5*sqr(g2))*(ZA(gI1,0)*ZA(gI2,0) - ZA(gI1,1)*ZA(gI2,1))))/800.));
262  se11 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Sc(gI1),M2Sc(gI2))*sqr(vd*((sqr(g1) - 5*sqr(g2))*ZC(gI1,0)*ZC(gI2,0) - 4*sqr(g1)*ZC(gI1,1)*ZC(gI2,1))))/400.));
263  se11 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Sd(gI1),M2Sd(gI2))*sqr(vd*((sqr(g1) + 5*sqr(g2))*ZD(gI1,0)*ZD(gI2,0) + 2*sqr(g1)*ZD(gI1,1)*ZD(gI2,1))))/400.));
264  se11 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Se(gI1),M2Se(gI2))*sqr(vd*((3*sqr(g1) - 5*sqr(g2))*ZE(gI1,0)*ZE(gI2,0) - 6*sqr(g1)*ZE(gI1,1)*ZE(gI2,1))))/400.));
265  se11 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Sm(gI1),M2Sm(gI2))*sqr(vd*((3*sqr(g1) - 5*sqr(g2))*ZM(gI1,0)*ZM(gI2,0) - 6*sqr(g1)*ZM(gI1,1)*ZM(gI2,1))))/400.));
266  se11 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Ss(gI1),M2Ss(gI2))*sqr(vd*((sqr(g1) + 5*sqr(g2))*ZS(gI1,0)*ZS(gI2,0) + 2*sqr(g1)*ZS(gI1,1)*ZS(gI2,1))))/400.));
267  se11 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Su(gI1),M2Su(gI2))*sqr(vd*((sqr(g1) - 5*sqr(g2))*ZU(gI1,0)*ZU(gI2,0) - 4*sqr(g1)*ZU(gI1,1)*ZU(gI2,1))))/400.));
268  se11 += SUM(gI1,0,1,SUM(gI2,0,1,(sqr(g2)*(A0(sqr(MCha(gI1))) + A0(sqr(MCha(gI2))) + B0(p2,sqr(MCha(gI1)),sqr(MCha(gI2)))*(-p2 + sqr(MCha(gI1)) + sqr(MCha(gI2))))*(sqr(UM(gI2,1)*UP(gI1,0)) + sqr(UM(gI1,1)*UP(gI2,0))))/2.) + MCha(gI1)*(SUM(gI2,0,1,2*B0(p2,sqr(MCha(gI1)),sqr(MCha(gI2)))*MCha(gI2)*sqr(g2)*UM(gI1,1)*UM(gI2,1)*UP(gI1,0)*UP(gI2,0)) - (2*g2*sqrt2*A0(sqr(MCha(gI1)))*UM(gI1,1)*UP(gI1,0))/vd));
269  se11 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Sb(gI1),M2Sb(gI2))*sqr(ZB(gI1,0)*(vd*(sqr(g1) + 5*sqr(g2) - 20*sqr(yb))*ZB(gI2,0) - 10*Ab*sqrt2*yb*ZB(gI2,1)) + 2*ZB(gI1,1)*(-5*Ab*sqrt2*yb*ZB(gI2,0) + vd*(sqr(g1) - 10*sqr(yb))*ZB(gI2,1))))/400.) + (3*Ab*sqrt2*yb*A0(M2Sb(gI1))*ZB(gI1,0)*ZB(gI1,1))/vd);
270  se11 += SUM(gI1,0,1,-(SUM(gI2,0,1,(vd*B0(p2,M2hh(gI1),M2hh(gI2))*sqr((3*sqr(g1) + 5*sqr(g2))*(ZH(gI1,1)*(vu*ZH(gI2,0) + vd*ZH(gI2,1)) + ZH(gI1,0)*(-3*vd*ZH(gI2,0) + vu*ZH(gI2,1)))))/40.) + vu*A0(M2hh(gI1))*(3*sqr(g1) + 5*sqr(g2))*ZH(gI1,0)*ZH(gI1,1))/(20.*vd));
271  se11 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Hpm(gI1),M2Hpm(gI2))*sqr(ZP(gI1,0)*(vd*(3*sqr(g1) + 5*sqr(g2))*ZP(gI2,0) + 5*vu*sqr(g2)*ZP(gI2,1)) + ZP(gI1,1)*(5*vu*sqr(g2)*ZP(gI2,0) + vd*(-3*sqr(g1) + 5*sqr(g2))*ZP(gI2,1))))/400.) + (vu*A0(M2Hpm(gI1))*sqr(g2)*ZP(gI1,0)*ZP(gI1,1))/(2.*vd));
272  se11 += SUM(gI1,0,1,(-3*(SUM(gI2,0,1,(vd*B0(p2,M2St(gI1),M2St(gI2))*sqr(ZT(gI1,0)*(vd*(sqr(g1) - 5*sqr(g2))*ZT(gI2,0) + 10*mu*sqrt2*yt*ZT(gI2,1)) + 2*ZT(gI1,1)*(5*mu*sqrt2*yt*ZT(gI2,0) - 2*vd*sqr(g1)*ZT(gI2,1))))/400.) + mu*sqrt2*yt*A0(M2St(gI1))*ZT(gI1,0)*ZT(gI1,1)))/vd);
273  se11 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Stau(gI1),M2Stau(gI2))*sqr(ZTau(gI1,0)*(vd*(3*sqr(g1) - 5*sqr(g2) + 20*sqr(ytau))*ZTau(gI2,0) + 10*Atau*sqrt2*ytau*ZTau(gI2,1)) + 2*ZTau(gI1,1)*(5*Atau*sqrt2*ytau*ZTau(gI2,0) + vd*(-3*sqr(g1) + 10*sqr(ytau))*ZTau(gI2,1))))/400.) + (Atau*sqrt2*ytau*A0(M2Stau(gI1))*ZTau(gI1,0)*ZTau(gI1,1))/vd);
274  se11 += SUM(gI1,0,3,SUM(gI2,0,3,((A0(sqr(MChi(gI1))) + A0(sqr(MChi(gI2))) + B0(p2,sqr(MChi(gI1)),sqr(MChi(gI2)))*(-p2 + 2*MChi(gI1)*MChi(gI2) + sqr(MChi(gI1)) + sqr(MChi(gI2))))*sqr(ZN(gI1,2)*(g1*sqrt15*ZN(gI2,0) - 5*g2*ZN(gI2,1)) + (g1*sqrt15*ZN(gI1,0) - 5*g2*ZN(gI1,1))*ZN(gI2,2)))/100.) + (2*A0(sqr(MChi(gI1)))*MChi(gI1)*(g1*sqrt15*ZN(gI1,0) - 5*g2*ZN(gI1,1))*ZN(gI1,2))/(5.*vd));
275  se11 += SUM(gI2,0,1,((2*A0(M2VZ) - A0(M2Ah(gI2)) + B0(p2,M2VZ,M2Ah(gI2))*(-M2VZ + 2*p2 + 2*M2Ah(gI2)))*(3*sqr(g1) + 5*sqr(g2))*sqr(ZA(gI2,0)))/20.);
276  se11 += SUM(gI2,0,1,((2*A0(M2VWm) - A0(M2Hpm(gI2)) + B0(p2,M2VWm,M2Hpm(gI2))*(-M2VWm + 2*p2 + 2*M2Hpm(gI2)))*sqr(g2*ZP(gI2,0)))/2.);
277 
278  se12 += (vd*vu*B0(p2,M2SveL,M2SveL)*sqr(3*sqr(g1) + 5*sqr(g2)))/400.;
279  se12 += (vd*vu*B0(p2,M2SvmL,M2SvmL)*sqr(3*sqr(g1) + 5*sqr(g2)))/400.;
280  se12 += (vd*vu*B0(p2,M2SvtL,M2SvtL)*sqr(3*sqr(g1) + 5*sqr(g2)))/400.;
281  se12 += (-7*vd*vu*B0(p2,M2VWm,M2VWm)*pow4(g2))/8.;
282  se12 += (-7*vd*vu*B0(p2,M2VZ,M2VZ)*sqr(3*sqr(g1) + 5*sqr(g2)))/400.;
283  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(sqr(g2)*(2*B0(p2,sqr(MCha(gI1)),sqr(MCha(gI2)))*MCha(gI1)*MCha(gI2)*(UM(gI1,1)*UM(gI2,0)*UP(gI1,1)*UP(gI2,0) + UM(gI1,0)*UM(gI2,1)*UP(gI1,0)*UP(gI2,1)) + (A0(sqr(MCha(gI1))) + A0(sqr(MCha(gI2))) + B0(p2,sqr(MCha(gI1)),sqr(MCha(gI2)))*(-p2 + sqr(MCha(gI1)) + sqr(MCha(gI2))))*(UM(gI2,0)*UM(gI2,1)*UP(gI1,0)*UP(gI1,1) + UM(gI1,0)*UM(gI1,1)*UP(gI2,0)*UP(gI2,1))))/2.));
284  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(vd*vu*B0(p2,M2Ah(gI1),M2Ah(gI2))*sqr((3*sqr(g1) + 5*sqr(g2))*(ZA(gI1,0)*ZA(gI2,0) - ZA(gI1,1)*ZA(gI2,1))))/800.));
285  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(3*B0(p2,M2Sb(gI1),M2Sb(gI2))*(ZB(gI1,0)*(vu*(sqr(g1) + 5*sqr(g2))*ZB(gI2,0) - 10*mu*sqrt2*yb*ZB(gI2,1)) + 2*ZB(gI1,1)*(-5*mu*sqrt2*yb*ZB(gI2,0) + vu*sqr(g1)*ZB(gI2,1)))*(ZB(gI1,0)*(vd*(sqr(g1) + 5*sqr(g2) - 20*sqr(yb))*ZB(gI2,0) - 10*Ab*sqrt2*yb*ZB(gI2,1)) + 2*ZB(gI1,1)*(-5*Ab*sqrt2*yb*ZB(gI2,0) + vd*(sqr(g1) - 10*sqr(yb))*ZB(gI2,1))))/400.));
286  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(3*vd*vu*B0(p2,M2Sc(gI1),M2Sc(gI2))*sqr((sqr(g1) - 5*sqr(g2))*ZC(gI1,0)*ZC(gI2,0) - 4*sqr(g1)*ZC(gI1,1)*ZC(gI2,1)))/400.));
287  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(3*vd*vu*B0(p2,M2Sd(gI1),M2Sd(gI2))*sqr((sqr(g1) + 5*sqr(g2))*ZD(gI1,0)*ZD(gI2,0) + 2*sqr(g1)*ZD(gI1,1)*ZD(gI2,1)))/400.));
288  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(vd*vu*B0(p2,M2Se(gI1),M2Se(gI2))*sqr((3*sqr(g1) - 5*sqr(g2))*ZE(gI1,0)*ZE(gI2,0) - 6*sqr(g1)*ZE(gI1,1)*ZE(gI2,1)))/400.));
289  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(vd*vu*B0(p2,M2Sm(gI1),M2Sm(gI2))*sqr((3*sqr(g1) - 5*sqr(g2))*ZM(gI1,0)*ZM(gI2,0) - 6*sqr(g1)*ZM(gI1,1)*ZM(gI2,1)))/400.));
290  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(3*vd*vu*B0(p2,M2Ss(gI1),M2Ss(gI2))*sqr((sqr(g1) + 5*sqr(g2))*ZS(gI1,0)*ZS(gI2,0) + 2*sqr(g1)*ZS(gI1,1)*ZS(gI2,1)))/400.));
291  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(3*B0(p2,M2St(gI1),M2St(gI2))*(ZT(gI1,0)*(vd*(sqr(g1) - 5*sqr(g2))*ZT(gI2,0) + 10*mu*sqrt2*yt*ZT(gI2,1)) + 2*ZT(gI1,1)*(5*mu*sqrt2*yt*ZT(gI2,0) - 2*vd*sqr(g1)*ZT(gI2,1)))*(ZT(gI1,0)*(vu*(sqr(g1) - 5*sqr(g2) + 20*sqr(yt))*ZT(gI2,0) + 10*At*sqrt2*yt*ZT(gI2,1)) + 2*ZT(gI1,1)*(5*At*sqrt2*yt*ZT(gI2,0) - 2*vu*(sqr(g1) - 5*sqr(yt))*ZT(gI2,1))))/400.));
292  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(B0(p2,M2Stau(gI1),M2Stau(gI2))*(ZTau(gI1,0)*(vu*(3*sqr(g1) - 5*sqr(g2))*ZTau(gI2,0) + 10*mu*sqrt2*ytau*ZTau(gI2,1)) + 2*ZTau(gI1,1)*(5*mu*sqrt2*ytau*ZTau(gI2,0) - 3*vu*sqr(g1)*ZTau(gI2,1)))*(ZTau(gI1,0)*(vd*(3*sqr(g1) - 5*sqr(g2) + 20*sqr(ytau))*ZTau(gI2,0) + 10*Atau*sqrt2*ytau*ZTau(gI2,1)) + 2*ZTau(gI1,1)*(5*Atau*sqrt2*ytau*ZTau(gI2,0) + vd*(-3*sqr(g1) + 10*sqr(ytau))*ZTau(gI2,1))))/400.));
293  se12 += SUM(gI1,0,1,SUM(gI2,0,1,(3*vd*vu*B0(p2,M2Su(gI1),M2Su(gI2))*sqr((sqr(g1) - 5*sqr(g2))*ZU(gI1,0)*ZU(gI2,0) - 4*sqr(g1)*ZU(gI1,1)*ZU(gI2,1)))/400.));
294  se12 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2hh(gI1),M2hh(gI2))*sqr(3*sqr(g1) + 5*sqr(g2))*(ZH(gI1,0)*(vu*ZH(gI2,0) + vd*ZH(gI2,1)) + ZH(gI1,1)*(vd*ZH(gI2,0) - 3*vu*ZH(gI2,1)))*(ZH(gI1,1)*(vu*ZH(gI2,0) + vd*ZH(gI2,1)) + ZH(gI1,0)*(-3*vd*ZH(gI2,0) + vu*ZH(gI2,1))))/800.) + (A0(M2hh(gI1))*(3*sqr(g1) + 5*sqr(g2))*ZH(gI1,0)*ZH(gI1,1))/20.);
295  se12 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Hpm(gI1),M2Hpm(gI2))*(ZP(gI1,0)*(vd*(3*sqr(g1) + 5*sqr(g2))*ZP(gI2,0) + 5*vu*sqr(g2)*ZP(gI2,1)) + ZP(gI1,1)*(5*vu*sqr(g2)*ZP(gI2,0) + vd*(-3*sqr(g1) + 5*sqr(g2))*ZP(gI2,1)))*(ZP(gI1,0)*((-3*vu*sqr(g1) + 5*vu*sqr(g2))*ZP(gI2,0) + 5*vd*sqr(g2)*ZP(gI2,1)) + ZP(gI1,1)*(5*vd*sqr(g2)*ZP(gI2,0) + vu*(3*sqr(g1) + 5*sqr(g2))*ZP(gI2,1))))/400.) - (A0(M2Hpm(gI1))*sqr(g2)*ZP(gI1,0)*ZP(gI1,1))/2.);
296  se12 += SUM(gI1,0,3,SUM(gI2,0,3,-((A0(sqr(MChi(gI1))) + A0(sqr(MChi(gI2))) + B0(p2,sqr(MChi(gI1)),sqr(MChi(gI2)))*(-p2 + 2*MChi(gI1)*MChi(gI2) + sqr(MChi(gI1)) + sqr(MChi(gI2))))*(ZN(gI1,2)*(g1*sqrt15*ZN(gI2,0) - 5*g2*ZN(gI2,1)) + (g1*sqrt15*ZN(gI1,0) - 5*g2*ZN(gI1,1))*ZN(gI2,2))*(ZN(gI1,3)*(g1*sqrt15*ZN(gI2,0) - 5*g2*ZN(gI2,1)) + (g1*sqrt15*ZN(gI1,0) - 5*g2*ZN(gI1,1))*ZN(gI2,3)))/100.));
297  se12 += SUM(gI2,0,1,-((2*A0(M2VZ) - A0(M2Ah(gI2)) + B0(p2,M2VZ,M2Ah(gI2))*(-M2VZ + 2*p2 + 2*M2Ah(gI2)))*(3*sqr(g1) + 5*sqr(g2))*ZA(gI2,0)*ZA(gI2,1))/20.);
298  se12 += SUM(gI2,0,1,-((2*A0(M2VWm) - A0(M2Hpm(gI2)) + B0(p2,M2VWm,M2Hpm(gI2))*(-M2VWm + 2*p2 + 2*M2Hpm(gI2)))*sqr(g2)*ZP(gI2,0)*ZP(gI2,1))/2.);
299 
300  se22 += -(A0(M2VWm)*sqr(g2))/2.;
301  se22 += (A0(M2VZ)*(-3*sqr(g1) - 5*sqr(g2)))/20.;
302  se22 += -(B0(p2,M2SveL,M2SveL)*sqr(vu*(3*sqr(g1) + 5*sqr(g2))))/400.;
303  se22 += -(B0(p2,M2SvmL,M2SvmL)*sqr(vu*(3*sqr(g1) + 5*sqr(g2))))/400.;
304  se22 += -(B0(p2,M2SvtL,M2SvtL)*sqr(vu*(3*sqr(g1) + 5*sqr(g2))))/400.;
305  se22 += (-7*B0(p2,M2VWm,M2VWm)*pow4(g2)*sqr(vu))/8.;
306  se22 += (-7*B0(p2,M2VZ,M2VZ)*sqr(vu*(3*sqr(g1) + 5*sqr(g2))))/400.;
307  se22 += 3*B0(p2,sqr(MFt),sqr(MFt))*(-p2 + 4*sqr(MFt))*sqr(yt);
308  se22 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Ah(gI1),M2Ah(gI2))*sqr(vu*(3*sqr(g1) + 5*sqr(g2))*(ZA(gI1,0)*ZA(gI2,0) - ZA(gI1,1)*ZA(gI2,1))))/800.));
309  se22 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Sc(gI1),M2Sc(gI2))*sqr(vu*((sqr(g1) - 5*sqr(g2))*ZC(gI1,0)*ZC(gI2,0) - 4*sqr(g1)*ZC(gI1,1)*ZC(gI2,1))))/400.));
310  se22 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Sd(gI1),M2Sd(gI2))*sqr(vu*((sqr(g1) + 5*sqr(g2))*ZD(gI1,0)*ZD(gI2,0) + 2*sqr(g1)*ZD(gI1,1)*ZD(gI2,1))))/400.));
311  se22 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Se(gI1),M2Se(gI2))*sqr(vu*((3*sqr(g1) - 5*sqr(g2))*ZE(gI1,0)*ZE(gI2,0) - 6*sqr(g1)*ZE(gI1,1)*ZE(gI2,1))))/400.));
312  se22 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Sm(gI1),M2Sm(gI2))*sqr(vu*((3*sqr(g1) - 5*sqr(g2))*ZM(gI1,0)*ZM(gI2,0) - 6*sqr(g1)*ZM(gI1,1)*ZM(gI2,1))))/400.));
313  se22 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Ss(gI1),M2Ss(gI2))*sqr(vu*((sqr(g1) + 5*sqr(g2))*ZS(gI1,0)*ZS(gI2,0) + 2*sqr(g1)*ZS(gI1,1)*ZS(gI2,1))))/400.));
314  se22 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2Su(gI1),M2Su(gI2))*sqr(vu*((sqr(g1) - 5*sqr(g2))*ZU(gI1,0)*ZU(gI2,0) - 4*sqr(g1)*ZU(gI1,1)*ZU(gI2,1))))/400.));
315  se22 += SUM(gI1,0,1,SUM(gI2,0,1,(sqr(g2)*(A0(sqr(MCha(gI1))) + A0(sqr(MCha(gI2))) + B0(p2,sqr(MCha(gI1)),sqr(MCha(gI2)))*(-p2 + sqr(MCha(gI1)) + sqr(MCha(gI2))))*(sqr(UM(gI2,0)*UP(gI1,1)) + sqr(UM(gI1,0)*UP(gI2,1))))/2.) + MCha(gI1)*(SUM(gI2,0,1,2*B0(p2,sqr(MCha(gI1)),sqr(MCha(gI2)))*MCha(gI2)*sqr(g2)*UM(gI1,0)*UM(gI2,0)*UP(gI1,1)*UP(gI2,1)) - (2*g2*sqrt2*A0(sqr(MCha(gI1)))*UM(gI1,0)*UP(gI1,1))/vu));
316  se22 += SUM(gI1,0,1,(-3*(SUM(gI2,0,1,(vu*B0(p2,M2Sb(gI1),M2Sb(gI2))*sqr(ZB(gI1,0)*(vu*(sqr(g1) + 5*sqr(g2))*ZB(gI2,0) - 10*mu*sqrt2*yb*ZB(gI2,1)) + 2*ZB(gI1,1)*(-5*mu*sqrt2*yb*ZB(gI2,0) + vu*sqr(g1)*ZB(gI2,1))))/400.) + mu*sqrt2*yb*A0(M2Sb(gI1))*ZB(gI1,0)*ZB(gI1,1)))/vu);
317  se22 += SUM(gI1,0,1,-(SUM(gI2,0,1,(vu*B0(p2,M2hh(gI1),M2hh(gI2))*sqr((3*sqr(g1) + 5*sqr(g2))*(ZH(gI1,0)*(vu*ZH(gI2,0) + vd*ZH(gI2,1)) + ZH(gI1,1)*(vd*ZH(gI2,0) - 3*vu*ZH(gI2,1)))))/40.) + vd*A0(M2hh(gI1))*(3*sqr(g1) + 5*sqr(g2))*ZH(gI1,0)*ZH(gI1,1))/(20.*vu));
318  se22 += SUM(gI1,0,1,SUM(gI2,0,1,-(B0(p2,M2Hpm(gI1),M2Hpm(gI2))*sqr(ZP(gI1,0)*(vu*(3*sqr(g1) - 5*sqr(g2))*ZP(gI2,0) - 5*vd*sqr(g2)*ZP(gI2,1)) - ZP(gI1,1)*(5*vd*sqr(g2)*ZP(gI2,0) + vu*(3*sqr(g1) + 5*sqr(g2))*ZP(gI2,1))))/400.) + (vd*A0(M2Hpm(gI1))*sqr(g2)*ZP(gI1,0)*ZP(gI1,1))/(2.*vu));
319  se22 += SUM(gI1,0,1,SUM(gI2,0,1,(-3*B0(p2,M2St(gI1),M2St(gI2))*sqr(ZT(gI1,0)*(vu*(sqr(g1) - 5*sqr(g2) + 20*sqr(yt))*ZT(gI2,0) + 10*At*sqrt2*yt*ZT(gI2,1)) + 2*ZT(gI1,1)*(5*At*sqrt2*yt*ZT(gI2,0) - 2*vu*(sqr(g1) - 5*sqr(yt))*ZT(gI2,1))))/400.) + (3*At*sqrt2*yt*A0(M2St(gI1))*ZT(gI1,0)*ZT(gI1,1))/vu);
320  se22 += SUM(gI1,0,1,-((SUM(gI2,0,1,(vu*B0(p2,M2Stau(gI1),M2Stau(gI2))*sqr(ZTau(gI1,0)*(vu*(3*sqr(g1) - 5*sqr(g2))*ZTau(gI2,0) + 10*mu*sqrt2*ytau*ZTau(gI2,1)) + 2*ZTau(gI1,1)*(5*mu*sqrt2*ytau*ZTau(gI2,0) - 3*vu*sqr(g1)*ZTau(gI2,1))))/400.) + mu*sqrt2*ytau*A0(M2Stau(gI1))*ZTau(gI1,0)*ZTau(gI1,1))/vu));
321  se22 += SUM(gI1,0,3,SUM(gI2,0,3,((A0(sqr(MChi(gI1))) + A0(sqr(MChi(gI2))) + B0(p2,sqr(MChi(gI1)),sqr(MChi(gI2)))*(-p2 + 2*MChi(gI1)*MChi(gI2) + sqr(MChi(gI1)) + sqr(MChi(gI2))))*sqr(ZN(gI1,3)*(g1*sqrt15*ZN(gI2,0) - 5*g2*ZN(gI2,1)) + (g1*sqrt15*ZN(gI1,0) - 5*g2*ZN(gI1,1))*ZN(gI2,3)))/100.) - (2*A0(sqr(MChi(gI1)))*MChi(gI1)*(g1*sqrt15*ZN(gI1,0) - 5*g2*ZN(gI1,1))*ZN(gI1,3))/(5.*vu));
322  se22 += SUM(gI2,0,1,((2*A0(M2VZ) - A0(M2Ah(gI2)) + B0(p2,M2VZ,M2Ah(gI2))*(-M2VZ + 2*p2 + 2*M2Ah(gI2)))*(3*sqr(g1) + 5*sqr(g2))*sqr(ZA(gI2,1)))/20.);
323  se22 += SUM(gI2,0,1,((2*A0(M2VWm) - A0(M2Hpm(gI2)) + B0(p2,M2VWm,M2Hpm(gI2))*(-M2VWm + 2*p2 + 2*M2Hpm(gI2)))*sqr(g2*ZP(gI2,1)))/2.);
324 
325  RM22 se(RM22::Zero());
326  se << se11, se12, se12, se22;
327 
328  return se * oneLoop;
329 }
330 
331 /**
332  * Higgs 1-loop DR' contribution in the gaugeless limit (p = g1 = g2 =
333  * 0). Note, that p = 0 in the gaugeless limit, because in the MSSM p
334  * = mh = 0 vanishes when g1 = g2 = 0.
335  *
336  * The function returns 1/(4Pi)^2 (-selfenergy + tadpole).
337  *
338  * @return 1-loop contribution for p = g1 = g2 = 0
339  */
341 {
342  const auto yt = pars.Yu(2,2);
343  const auto yb = orders.at(CouplingOrders::ONLY_AT_AS) == 1 ? 0. : pars.Yd(2,2);
344  const auto ytau = orders.at(CouplingOrders::ONLY_AT_AS) == 1 ? 0. : pars.Ye(2,2);
345  const auto vu = pars.vu;
346  const auto vd = pars.vd;
347  const auto mu = pars.mu;
348  const auto At = pars.Au(2,2);
349  const auto Ab = pars.Ad(2,2);
350  const auto Atau = pars.Ae(2,2);
351  const auto MFt = gaugeless.MFt;
352  const auto MFb = gaugeless.MFb;
353  const auto MFtau = gaugeless.MFtau;
354  const auto M2St = gaugeless.M2St;
355  const auto M2Sb = gaugeless.M2Sb;
356  const auto M2Stau = gaugeless.M2Stau;
357  const auto ZT = gaugeless.ZT;
358  const auto ZB = gaugeless.ZB;
359  const auto ZTau = gaugeless.ZTau;
360 
361  double se11{0.}, se12{0.}, se22{0.};
362 
363  se11 += 12*B0(0,sqr(MFb),sqr(MFb))*sqr(MFb*yb);
364  se11 += 4*B0(0,sqr(MFtau),sqr(MFtau))*sqr(MFtau*ytau);
365  se11 += (3*Ab*sqrt2*yb*A0(M2Sb(0))*ZB(0,0)*ZB(0,1))/vd;
366  se11 += -6*B0(0,M2Sb(0),M2Sb(0))*sqr(yb*(MFb*(sqr(ZB(0,0)) + sqr(ZB(0,1))) + Ab*ZB(0,0)*ZB(0,1)));
367  se11 += (3*Ab*sqrt2*yb*A0(M2Sb(1))*ZB(1,0)*ZB(1,1))/vd;
368  se11 += -3*B0(0,M2Sb(0),M2Sb(1))*sqr(yb*(2*MFb*ZB(0,0)*ZB(1,0) + Ab*ZB(0,1)*ZB(1,0) + Ab*ZB(0,0)*ZB(1,1) + 2*MFb*ZB(0,1)*ZB(1,1)));
369  se11 += -6*B0(0,M2Sb(1),M2Sb(1))*sqr(yb*(MFb*(sqr(ZB(1,0)) + sqr(ZB(1,1))) + Ab*ZB(1,0)*ZB(1,1)));
370  se11 += (-3*mu*sqrt2*yt*A0(M2St(0))*ZT(0,0)*ZT(0,1))/vd;
371  se11 += -6*B0(0,M2St(0),M2St(0))*sqr(mu*yt*ZT(0,0)*ZT(0,1));
372  se11 += (-3*mu*sqrt2*yt*A0(M2St(1))*ZT(1,0)*ZT(1,1))/vd;
373  se11 += -6*B0(0,M2St(1),M2St(1))*sqr(mu*yt*ZT(1,0)*ZT(1,1));
374  se11 += -3*B0(0,M2St(0),M2St(1))*sqr(mu*yt*(ZT(0,1)*ZT(1,0) + ZT(0,0)*ZT(1,1)));
375  se11 += (Atau*sqrt2*ytau*A0(M2Stau(0))*ZTau(0,0)*ZTau(0,1))/vd;
376  se11 += -2*B0(0,M2Stau(0),M2Stau(0))*sqr(ytau*(MFtau*(sqr(ZTau(0,0)) + sqr(ZTau(0,1))) + Atau*ZTau(0,0)*ZTau(0,1)));
377  se11 += (Atau*sqrt2*ytau*A0(M2Stau(1))*ZTau(1,0)*ZTau(1,1))/vd;
378  se11 += -(B0(0,M2Stau(0),M2Stau(1))*sqr(ytau*(2*MFtau*ZTau(0,0)*ZTau(1,0) + Atau*ZTau(0,1)*ZTau(1,0) + Atau*ZTau(0,0)*ZTau(1,1) + 2*MFtau*ZTau(0,1)*ZTau(1,1))));
379  se11 += -2*B0(0,M2Stau(1),M2Stau(1))*sqr(ytau*(MFtau*(sqr(ZTau(1,0)) + sqr(ZTau(1,1))) + Atau*ZTau(1,0)*ZTau(1,1)));
380 
381  se12 += 6*mu*B0(0,M2Sb(0),M2Sb(0))*sqr(yb)*ZB(0,0)*ZB(0,1)*(MFb*(sqr(ZB(0,0)) + sqr(ZB(0,1))) + Ab*ZB(0,0)*ZB(0,1));
382  se12 += 3*mu*B0(0,M2Sb(0),M2Sb(1))*sqr(yb)*(ZB(0,1)*ZB(1,0) + ZB(0,0)*ZB(1,1))*(2*MFb*ZB(0,0)*ZB(1,0) + Ab*ZB(0,1)*ZB(1,0) + Ab*ZB(0,0)*ZB(1,1) + 2*MFb*ZB(0,1)*ZB(1,1));
383  se12 += 6*mu*B0(0,M2Sb(1),M2Sb(1))*sqr(yb)*ZB(1,0)*ZB(1,1)*(MFb*(sqr(ZB(1,0)) + sqr(ZB(1,1))) + Ab*ZB(1,0)*ZB(1,1));
384  se12 += 6*mu*B0(0,M2St(0),M2St(0))*sqr(yt)*ZT(0,0)*ZT(0,1)*(MFt*(sqr(ZT(0,0)) + sqr(ZT(0,1))) + At*ZT(0,0)*ZT(0,1));
385  se12 += 3*mu*B0(0,M2St(0),M2St(1))*sqr(yt)*(ZT(0,1)*ZT(1,0) + ZT(0,0)*ZT(1,1))*(2*MFt*ZT(0,0)*ZT(1,0) + At*ZT(0,1)*ZT(1,0) + At*ZT(0,0)*ZT(1,1) + 2*MFt*ZT(0,1)*ZT(1,1));
386  se12 += 6*mu*B0(0,M2St(1),M2St(1))*sqr(yt)*ZT(1,0)*ZT(1,1)*(MFt*(sqr(ZT(1,0)) + sqr(ZT(1,1))) + At*ZT(1,0)*ZT(1,1));
387  se12 += 2*mu*B0(0,M2Stau(0),M2Stau(0))*sqr(ytau)*ZTau(0,0)*ZTau(0,1)*(MFtau*(sqr(ZTau(0,0)) + sqr(ZTau(0,1))) + Atau*ZTau(0,0)*ZTau(0,1));
388  se12 += mu*B0(0,M2Stau(0),M2Stau(1))*sqr(ytau)*(ZTau(0,1)*ZTau(1,0) + ZTau(0,0)*ZTau(1,1))*(2*MFtau*ZTau(0,0)*ZTau(1,0) + Atau*ZTau(0,1)*ZTau(1,0) + Atau*ZTau(0,0)*ZTau(1,1) + 2*MFtau*ZTau(0,1)*ZTau(1,1));
389  se12 += 2*mu*B0(0,M2Stau(1),M2Stau(1))*sqr(ytau)*ZTau(1,0)*ZTau(1,1)*(MFtau*(sqr(ZTau(1,0)) + sqr(ZTau(1,1))) + Atau*ZTau(1,0)*ZTau(1,1));
390 
391  se22 += 12*B0(0,sqr(MFt),sqr(MFt))*sqr(MFt*yt);
392  se22 += (-3*mu*sqrt2*yb*A0(M2Sb(0))*ZB(0,0)*ZB(0,1))/vu;
393  se22 += -6*B0(0,M2Sb(0),M2Sb(0))*sqr(mu*yb*ZB(0,0)*ZB(0,1));
394  se22 += (-3*mu*sqrt2*yb*A0(M2Sb(1))*ZB(1,0)*ZB(1,1))/vu;
395  se22 += -6*B0(0,M2Sb(1),M2Sb(1))*sqr(mu*yb*ZB(1,0)*ZB(1,1));
396  se22 += -3*B0(0,M2Sb(0),M2Sb(1))*sqr(mu*yb*(ZB(0,1)*ZB(1,0) + ZB(0,0)*ZB(1,1)));
397  se22 += (3*At*sqrt2*yt*A0(M2St(0))*ZT(0,0)*ZT(0,1))/vu;
398  se22 += -6*B0(0,M2St(0),M2St(0))*sqr(yt*(MFt*(sqr(ZT(0,0)) + sqr(ZT(0,1))) + At*ZT(0,0)*ZT(0,1)));
399  se22 += (3*At*sqrt2*yt*A0(M2St(1))*ZT(1,0)*ZT(1,1))/vu;
400  se22 += -3*B0(0,M2St(0),M2St(1))*sqr(yt*(2*MFt*ZT(0,0)*ZT(1,0) + At*ZT(0,1)*ZT(1,0) + At*ZT(0,0)*ZT(1,1) + 2*MFt*ZT(0,1)*ZT(1,1)));
401  se22 += -6*B0(0,M2St(1),M2St(1))*sqr(yt*(MFt*(sqr(ZT(1,0)) + sqr(ZT(1,1))) + At*ZT(1,0)*ZT(1,1)));
402  se22 += -((mu*sqrt2*ytau*A0(M2Stau(0))*ZTau(0,0)*ZTau(0,1))/vu);
403  se22 += -2*B0(0,M2Stau(0),M2Stau(0))*sqr(mu*ytau*ZTau(0,0)*ZTau(0,1));
404  se22 += -((mu*sqrt2*ytau*A0(M2Stau(1))*ZTau(1,0)*ZTau(1,1))/vu);
405  se22 += -2*B0(0,M2Stau(1),M2Stau(1))*sqr(mu*ytau*ZTau(1,0)*ZTau(1,1));
406  se22 += -(B0(0,M2Stau(0),M2Stau(1))*sqr(mu*ytau*(ZTau(0,1)*ZTau(1,0) + ZTau(0,0)*ZTau(1,1))));
407 
408  RM22 se;
409  se << se11, se12, se12, se22;
410 
411  return se * oneLoop;
412 }
413 
414 /**
415  * Derivative of Higgs 1-loop DR' contribution w.r.t. p^2, in the
416  * gaugeless limit (p = g1 = g2 = 0). Note, that p = 0 in the
417  * gaugeless limit, because in the MSSM p = mh = 0 vanishes when g1 =
418  * g2 = 0.
419  *
420  * The function returns 1/(4Pi)^2 d/dp^2 (-selfenergy + tadpole).
421  *
422  * @return derivative of 1-loop contribution for p = g1 = g2 = 0
423  */
425 {
426  const auto yt = pars.Yu(2,2);
427  const auto yb = orders.at(CouplingOrders::ONLY_AT_AS) == 1 ? 0. : pars.Yd(2,2);
428  const auto ytau = orders.at(CouplingOrders::ONLY_AT_AS) == 1 ? 0. : pars.Ye(2,2);
429  const auto mu = pars.mu;
430  const auto At = pars.Au(2,2);
431  const auto Ab = pars.Ad(2,2);
432  const auto Atau = pars.Ae(2,2);
433  const auto MFt = gaugeless.MFt;
434  const auto MFb = gaugeless.MFb;
435  const auto MFtau = gaugeless.MFtau;
436  const auto M2St = gaugeless.M2St;
437  const auto M2Sb = gaugeless.M2Sb;
438  const auto M2Stau = gaugeless.M2Stau;
439  const auto ZT = gaugeless.ZT;
440  const auto ZB = gaugeless.ZB;
441  const auto ZTau = gaugeless.ZTau;
442 
443  double se11{0.}, se12{0.}, se22{0.};
444 
445  se11 += -3*B0(0,sqr(MFb),sqr(MFb))*sqr(yb);
446  se11 += -(B0(0,sqr(MFtau),sqr(MFtau))*sqr(ytau));
447  se11 += 12*D1B0(sqr(MFb),sqr(MFb))*sqr(MFb*yb);
448  se11 += 4*D1B0(sqr(MFtau),sqr(MFtau))*sqr(MFtau*ytau);
449  se11 += -6*D1B0(M2Sb(0),M2Sb(0))*sqr(yb*(MFb*(sqr(ZB(0,0)) + sqr(ZB(0,1))) + Ab*ZB(0,0)*ZB(0,1)));
450  se11 += -3*D1B0(M2Sb(0),M2Sb(1))*sqr(yb*(2*MFb*ZB(0,0)*ZB(1,0) + Ab*ZB(0,1)*ZB(1,0) + Ab*ZB(0,0)*ZB(1,1) + 2*MFb*ZB(0,1)*ZB(1,1)));
451  se11 += -6*D1B0(M2Sb(1),M2Sb(1))*sqr(yb*(MFb*(sqr(ZB(1,0)) + sqr(ZB(1,1))) + Ab*ZB(1,0)*ZB(1,1)));
452  se11 += -6*D1B0(M2St(0),M2St(0))*sqr(mu*yt*ZT(0,0)*ZT(0,1));
453  se11 += -6*D1B0(M2St(1),M2St(1))*sqr(mu*yt*ZT(1,0)*ZT(1,1));
454  se11 += -3*D1B0(M2St(0),M2St(1))*sqr(mu*yt*(ZT(0,1)*ZT(1,0) + ZT(0,0)*ZT(1,1)));
455  se11 += -2*D1B0(M2Stau(0),M2Stau(0))*sqr(ytau*(MFtau*(sqr(ZTau(0,0)) + sqr(ZTau(0,1))) + Atau*ZTau(0,0)*ZTau(0,1)));
456  se11 += -(D1B0(M2Stau(0),M2Stau(1))*sqr(ytau*(2*MFtau*ZTau(0,0)*ZTau(1,0) + Atau*ZTau(0,1)*ZTau(1,0) + Atau*ZTau(0,0)*ZTau(1,1) + 2*MFtau*ZTau(0,1)*ZTau(1,1))));
457  se11 += -2*D1B0(M2Stau(1),M2Stau(1))*sqr(ytau*(MFtau*(sqr(ZTau(1,0)) + sqr(ZTau(1,1))) + Atau*ZTau(1,0)*ZTau(1,1)));
458 
459  se12 += 6*mu*D1B0(M2Sb(0),M2Sb(0))*sqr(yb)*ZB(0,0)*ZB(0,1)*(MFb*(sqr(ZB(0,0)) + sqr(ZB(0,1))) + Ab*ZB(0,0)*ZB(0,1));
460  se12 += 3*mu*D1B0(M2Sb(0),M2Sb(1))*sqr(yb)*(ZB(0,1)*ZB(1,0) + ZB(0,0)*ZB(1,1))*(2*MFb*ZB(0,0)*ZB(1,0) + Ab*ZB(0,1)*ZB(1,0) + Ab*ZB(0,0)*ZB(1,1) + 2*MFb*ZB(0,1)*ZB(1,1));
461  se12 += 6*mu*D1B0(M2Sb(1),M2Sb(1))*sqr(yb)*ZB(1,0)*ZB(1,1)*(MFb*(sqr(ZB(1,0)) + sqr(ZB(1,1))) + Ab*ZB(1,0)*ZB(1,1));
462  se12 += 6*mu*D1B0(M2St(0),M2St(0))*sqr(yt)*ZT(0,0)*ZT(0,1)*(MFt*(sqr(ZT(0,0)) + sqr(ZT(0,1))) + At*ZT(0,0)*ZT(0,1));
463  se12 += 3*mu*D1B0(M2St(0),M2St(1))*sqr(yt)*(ZT(0,1)*ZT(1,0) + ZT(0,0)*ZT(1,1))*(2*MFt*ZT(0,0)*ZT(1,0) + At*ZT(0,1)*ZT(1,0) + At*ZT(0,0)*ZT(1,1) + 2*MFt*ZT(0,1)*ZT(1,1));
464  se12 += 6*mu*D1B0(M2St(1),M2St(1))*sqr(yt)*ZT(1,0)*ZT(1,1)*(MFt*(sqr(ZT(1,0)) + sqr(ZT(1,1))) + At*ZT(1,0)*ZT(1,1));
465  se12 += 2*mu*D1B0(M2Stau(0),M2Stau(0))*sqr(ytau)*ZTau(0,0)*ZTau(0,1)*(MFtau*(sqr(ZTau(0,0)) + sqr(ZTau(0,1))) + Atau*ZTau(0,0)*ZTau(0,1));
466  se12 += mu*D1B0(M2Stau(0),M2Stau(1))*sqr(ytau)*(ZTau(0,1)*ZTau(1,0) + ZTau(0,0)*ZTau(1,1))*(2*MFtau*ZTau(0,0)*ZTau(1,0) + Atau*ZTau(0,1)*ZTau(1,0) + Atau*ZTau(0,0)*ZTau(1,1) + 2*MFtau*ZTau(0,1)*ZTau(1,1));
467  se12 += 2*mu*D1B0(M2Stau(1),M2Stau(1))*sqr(ytau)*ZTau(1,0)*ZTau(1,1)*(MFtau*(sqr(ZTau(1,0)) + sqr(ZTau(1,1))) + Atau*ZTau(1,0)*ZTau(1,1));
468 
469  se22 += -3*B0(0,sqr(MFt),sqr(MFt))*sqr(yt);
470  se22 += 12*D1B0(sqr(MFt),sqr(MFt))*sqr(MFt*yt);
471  se22 += -6*D1B0(M2Sb(0),M2Sb(0))*sqr(mu*yb*ZB(0,0)*ZB(0,1));
472  se22 += -6*D1B0(M2Sb(1),M2Sb(1))*sqr(mu*yb*ZB(1,0)*ZB(1,1));
473  se22 += -3*D1B0(M2Sb(0),M2Sb(1))*sqr(mu*yb*(ZB(0,1)*ZB(1,0) + ZB(0,0)*ZB(1,1)));
474  se22 += -6*D1B0(M2St(0),M2St(0))*sqr(yt*(MFt*(sqr(ZT(0,0)) + sqr(ZT(0,1))) + At*ZT(0,0)*ZT(0,1)));
475  se22 += -3*D1B0(M2St(0),M2St(1))*sqr(yt*(2*MFt*ZT(0,0)*ZT(1,0) + At*ZT(0,1)*ZT(1,0) + At*ZT(0,0)*ZT(1,1) + 2*MFt*ZT(0,1)*ZT(1,1)));
476  se22 += -6*D1B0(M2St(1),M2St(1))*sqr(yt*(MFt*(sqr(ZT(1,0)) + sqr(ZT(1,1))) + At*ZT(1,0)*ZT(1,1)));
477  se22 += -2*D1B0(M2Stau(0),M2Stau(0))*sqr(mu*ytau*ZTau(0,0)*ZTau(0,1));
478  se22 += -2*D1B0(M2Stau(1),M2Stau(1))*sqr(mu*ytau*ZTau(1,0)*ZTau(1,1));
479  se22 += -(D1B0(M2Stau(0),M2Stau(1))*sqr(mu*ytau*(ZTau(0,1)*ZTau(1,0) + ZTau(0,0)*ZTau(1,1))));
480 
481  RM22 se;
482  se << se11, se12, se12, se22;
483 
484  return se * oneLoop;
485 }
486 
487 /**
488  * CP-even Higgs 2-loop DR' contribution in the gaugeless limit (p =
489  * g1 = g2 = 0).
490  *
491  * @note The 2-loop contribution to the heavy CP-even Higgs mass
492  * assumes that the tree-level CP-even Higgs mass matrix is expressed
493  * in terms of the CP-odd Higgs pole mass, see [hep-ph/0105096]
494  * Eqs.(22)-(23). If the tree-level CP-even Higgs mass matrix is
495  * expressed in terms of the running CP-odd Higgs mass, then a
496  * corresponding 2-loop contribution to the CP-odd Higgs mass must be
497  * included in this function. See the implementation in
498  * SOFTSUSY/FlexibleSUSY for an example.
499  *
500  * @return 2-loop contribution for p = g1 = g2 = 0
501  */
503 {
504  using namespace himalaya::mh2l;
505 
506  const auto g3 = pars.g3;
507  const auto mt2 = pow2(gaugeless.MFt);
508  const auto mb2 = pow2(gaugeless.MFb);
509  const auto mtau2 = pow2(gaugeless.MFtau);
510  const auto mg = pars.MG;
511  const auto mst12 = pow2(pars.MSt(0));
512  const auto mst22 = pow2(pars.MSt(1));
513  const auto msb12 = pow2(pars.MSb(0));
514  const auto msb22 = pow2(pars.MSb(1));
515  const auto mstau12 = pow2(pars.MStau(0));
516  const auto mstau22 = pow2(pars.MStau(1));
517  const auto msv2 = gaugeless.M2SvtL;
518  const auto mA2 = pow2(pars.MA);
519  const auto sxt = std::sin(pars.theta_t);
520  const auto cxt = std::cos(pars.theta_t);
521  const auto sxb = std::sin(pars.theta_b);
522  const auto cxb = std::cos(pars.theta_b);
523  const auto sxtau = std::sin(pars.theta_tau);
524  const auto cxtau = std::cos(pars.theta_tau);
525  const auto scale2 = pow2(pars.scale);
526  const auto mu = -pars.mu;
527  const auto tanb = pars.vu/pars.vd;
528  const auto cotb = 1./tanb;
529  const auto vev2 = pow2(pars.vu) + pow2(pars.vd);
530  const auto include_heavy_higgs = 1;
531 
532  RM22 dmh(RM22::Zero());
533 
534  // 2-loop contribution from momentum iteration
535  switch (mom_it) {
538  break;
541  break;
542  default:
543  break;
544  }
545 
546  if (orders.at(CouplingOrders::G32YT4)) {
547  dmh += delta_mh2_2loop_at_as(
548  mt2, mg, mst12, mst22, sxt, cxt, scale2, mu, tanb, vev2, g3,
549  include_heavy_higgs);
550  }
551 
552  if (orders.at(CouplingOrders::G32YB4)) {
553  dmh += delta_mh2_2loop_ab_as(
554  mb2, mg, msb12, msb22, sxb, cxb, scale2, mu, cotb, vev2, g3,
555  include_heavy_higgs);
556  }
557 
558  if (orders.at(CouplingOrders::YT6)) {
559  dmh += delta_mh2_2loop_at_at(
560  mt2, mb2, mA2, mst12, mst22, msb12, msb22,
561  sxt, cxt, sxb, cxb, scale2, mu, tanb, vev2,
562  include_heavy_higgs, orders.at(CouplingOrders::ONLY_AT_AS));
563  }
564 
565  if (orders.at(CouplingOrders::YTAU6)) {
567  mtau2, mA2, msv2, mstau12, mstau22,
568  sxtau, cxtau, scale2, mu, tanb, vev2,
569  include_heavy_higgs);
570  }
571 
574  mtau2, mb2, mstau12, mstau22, msb12, msb22,
575  sxtau, cxtau, sxb, cxb, scale2, mu, tanb, vev2,
576  include_heavy_higgs);
577  }
578 
579  return dmh;
580 }
581 
582 /**
583  * Returns Higgs 2-loop contributions from momentum iteration of
584  * 1-loop self-energy in the gaugeless limit p^2 = g1 = g2 = 0.
585  *
586  * @return 2-loop contribution from momentum iteration
587  */
589 {
590  // tree-level Higgs mass matrix in gaugeless limit
591  const auto DMH_0L = get_mass_matrix_hh_gaugeless();
592  // 1-loop Higgs mass matrix in gaugeless limit
593  const auto DMH_1L = delta_mh2_1loop_gaugeless();
594 
595  const auto dmh2 = fs_diagonalize_hermitian_perturbatively(DMH_0L, DMH_1L);
596 
597  // 1-loop contribution to (squared) Higgs mass eigenvalues.
598  const auto dmh2_1L_gl = std::get<1>(dmh2)(0);
599 
600  return delta_mh2_1loop_gaugeless_deriv()*dmh2_1L_gl;
601 }
602 
603 /**
604  * Returns Higgs 2-loop (and higher) contributions from momentum
605  * iteration of 1-loop self-energy.
606  *
607  * @param precision_goal precision goal (fraction, between 0 and 1)
608  * @param max_iterations maximum number of iterations
609  *
610  * @return 2-loop (and higher) contribution from momentum iteration
611  */
613  double precision_goal, int max_iterations) const
614 {
615  const auto DMH_0L = get_mass_matrix_hh();
616  const auto mh2_0L = masses.M2hh(0);
617  auto p2 = mh2_0L;
618  int n = 0;
619  bool has_converged = false;
620  RM22 DMH(RM22::Zero());
621 
622  while (!has_converged && n < max_iterations) {
623  DMH = DMH_0L + delta_mh2_1loop(p2);
624 
625  MSSM_spectrum::A2 M2hh;
626  RM22 ZH;
627  fs_diagonalize_hermitian(DMH, M2hh, ZH);
628 
629  has_converged = is_equal_rel(M2hh(0), p2, precision_goal);
630  p2 = M2hh(0);
631  n++;
632  };
633 
634  if (!has_converged) {
635  WARNING_MSG("Momentum iteration has not converged after "
636  << n << " iterations.");
637  }
638 
639  return DMH - DMH_0L - delta_mh2_1loop(mh2_0L);
640 }
641 
643 {
644  return masses.get_mass_matrix_hh();
645 }
646 
648 {
649  return gaugeless.get_mass_matrix_hh();
650 }
651 
653 {
654  if (flag < 0 || flag > 1)
655  INFO_MSG("You can only enable (1) or disable (0) corrections!");
656 
657  orders.at(order) = flag;
658 }
659 
662  double mom_it_precision_goal_,
663  int mom_it_max_iterations_)
664 {
665  mom_it = mi;
666  mom_it_precision_goal = mom_it_precision_goal_;
667  mom_it_max_iterations = mom_it_max_iterations_;
668 }
669 
671 {
672  diagonalization = diag;
673 }
674 
675 double MSSM_mass_eigenstates::A0(double m2) const
676 {
677  return a0(m2, sqr(pars.scale));
678 }
679 
680 double MSSM_mass_eigenstates::B0(double p2, double m12, double m22) const
681 {
682  return b0(p2, m12, m22, sqr(pars.scale));
683 }
684 
685 double MSSM_mass_eigenstates::D1B0(double m12, double m22) const
686 {
687  return d1_b0(m12, m22);
688 }
689 
690 std::ostream& operator<<(std::ostream& ostr, const MSSM_mass_eigenstates& me)
691 {
692  ostr << "====================================\n"
693  "MSSM_mass_eigenstates\n"
694  "====================================\n";
695  ostr << me.pars;
696  ostr << "------------------------------------\n"
697  "DR' masses and mixings\n"
698  "------------------------------------\n"
699  << me.masses;
700  ostr << "------------------------------------\n"
701  "DR' masses and mixings (g1 = g2 = 0)\n"
702  "------------------------------------\n"
703  << me.gaugeless;
704 
705  return ostr;
706 }
707 
708 } // namespace mh2_fo
709 } // namespace himalaya
Contains the definition of the MSSM_mass_eigenstates class.
double M2SveL
MSSM DR&#39; electron-like sneutrino mass.
truncate the expansion depth in At/Ab by one order
A2 M2Ah
MSSM DR&#39; CP-odd higgs mass.
void set_diagonalization(Diagonalization)
customize diagonalization
RM22 ZD
MSSM DR&#39; sdown mixing matrix.
RM22 ZB
MSSM DR&#39; sbottom mixing matrix.
double vu
VEV of up Higgs, with v = Sqrt[vu^2 + vd^2] ~ 246 GeV.
double M2SvtL
MSSM DR&#39; tau-like sneutrino mass.
double MFb
MSSM DR&#39; bottom mass.
double D1B0(double, double) const
derivative of B0 function w.r.t. p^2, for p^2 = 0
Definition: H3.cpp:14
RM33 Yu
up-type yukawa coupling matrix
RM33 Ad
trilinear down type squark-Higgs coupling matrix
RM22 ZTau
MSSM DR&#39; stau mixing matrix.
Eigen::Matrix< double, 2, 2 > delta_mh2_2loop_at_at(double mt2, double mb2, double mA2, double mst12, double mst22, double msb12, double msb22, double sxt, double cxt, double sxb, double cxb, double scale2, double mu, double tanb, double vev2, int include_heavy_higgs, int atat)
2-loop CP-even Higgs contribution O(at^2)
Definition: DSZHiggs.cpp:293
MSSM_mass_eigenstates(const Parameters &, bool only_at=false)
A2 M2Sb
MSSM DR&#39; squared sbottom masses.
std::array< int, CouplingOrders::NUMBER_OF_COUPLING_ORDERS > orders
enable/disable corrections
double vd
VEV of down Higgs, with v = Sqrt[vu^2 + vd^2] ~ 246 GeV.
Eigen::Matrix< double, 2, 2 > delta_mh2_2loop_ab_as(double mb2, double mg, double msb12, double msb22, double sxb, double cxb, double scale2, double mu, double cotb, double vev2, double g3, int include_heavy_higgs)
2-loop CP-even Higgs contribution O(ab*as)
Definition: DSZHiggs.cpp:321
RM22 ZM
MSSM DR&#39; smuon mixing matrix.
Diagonalization
diagonalization settings
RM22 ZP
MSSM DR&#39; charged Higgs mixing matrix.
double g2
gauge coupling g2
Diagonalization diagonalization
diagonalization settings
const double NaN
double d1_b0(double m12, double m22) noexcept
derivative of B0 Passarino-Veltman function w.r.t. p^2, for p^2 = 0
Definition: PV.cpp:182
A2 M2Stau
MSSM DR&#39; squared stau masses.
CouplingOrders
Coupling orders for calculation.
double theta_tau
stau mixing angle
#define WARNING_MSG(message)
Definition: Logger.hpp:66
A2 M2St
MSSM DR&#39; squared stop masses.
RM22 ZC
MSSM DR&#39; scharm mixing matrix.
RM22 ZT
MSSM DR&#39; stop mixing matrix.
RM22 delta_mh2_1loop_gaugeless_deriv() const
derivative of Higgs 1-loop contribution DR&#39; for p = g1 = g2 = 0
Declaration of real Passarino-Veltman loop functions with squared arguments.
A2 M2Sd
MSSM DR&#39; squared sdown masses.
RM22 delta_mh2_2loop() const
Higgs 2-loop contributions DR&#39; for p = 0.
Momentum_iteration mom_it
momentum iteration settings
perturbatively up to 2-loop level
RM22 UM
MSSM DR&#39; positive chargino mixing matrix.
void set_mom_it(Momentum_iteration, double mom_it_precision_goal_=1e-5, int mom_it_max_iterations_=100)
customize momentum iteration
double M2VWm
MSSM DR&#39; squared W mass.
A2 M2Sc
MSSM DR&#39; squared scharm masses.
RM22 ZE
MSSM DR&#39; selectron mixing matrix.
Eigen::Matrix< double, 2, 2 > delta_mh2_2loop_ab_atau(double mtau2, double mb2, double mstau12, double mstau22, double msb12, double msb22, double sintau, double costau, double sxb, double cxb, double scale2, double mu, double tanb, double vev2, int include_heavy_higgs)
2-loop CP-even Higgs contribution O(ab*atau)
Definition: DSZHiggs.cpp:389
Eigen::Matrix< double, 2, 2 > delta_mh2_2loop_atau_atau(double mtau2, double mA2, double msv2, double mstau12, double mstau22, double sintau, double costau, double scale2, double mu, double tanb, double vev2, int include_heavy_higgs)
2-loop CP-even Higgs contribution O(atau^2)
Definition: DSZHiggs.cpp:349
double theta_t
stop mixing angle
Eigen::Matrix< double, 2, 2 > delta_mh2_2loop_at_as(double mt2, double mg, double mst12, double mst22, double sxt, double cxt, double scale2, double mu, double tanb, double vev2, double g3, int include_heavy_higgs)
2-loop CP-even Higgs contribution O(at*as)
Definition: DSZHiggs.cpp:269
RM33 Ae
trilinear electron type squark-Higgs coupling matrix
A2 M2hh
MSSM DR&#39; CP-even higgs mass.
A2 M2Sm
MSSM DR&#39; squared smuon masses.
Implementation of logging macros.
friend std::ostream & operator<<(std::ostream &, const MSSM_mass_eigenstates &)
prints the internals of MSSM_mass_eigenstates
Eigen::Array< double, 2, 1 > A2
RM22 delta_mh2_2loop_mom_it_pert() const
Higgs 2-loop contributions DR&#39; for p = g1 = g2 = 0 from momentum iteration.
void fs_diagonalize_hermitian(const Eigen::Matrix< Scalar, N, N > &m, Eigen::Array< Real, N, 1 > &w, Eigen::Matrix< Scalar, N, N > &z)
Definition: Linalg.hpp:1432
enum definitions
RM22 get_mass_matrix_hh() const
CP-even Higgs mass matrix.
RM22 ZA
MSSM DR&#39; CP-odd Higgs mixing matrix.
RM44 ZN
MSSM DR&#39; neutralino mixing matrix.
double Mtau
tau lepton
A2 M2Ss
MSSM DR&#39; squared sstrange masses.
double mu
mu parameter, convention of [Phys.Rept. 117 (1985) 75-263]
double mom_it_precision_goal
precision goal for numeric momentum iteration
double MFt
MSSM DR&#39; top mass.
RM33 Yd
down-type yukawa coupling matrix
double M2VZ
MSSM DR&#39; squared Z mass.
RM22 delta_mh2_2loop_mom_it_num(double precision_goal=1e-5, int max_iterations=100) const
Higgs 2-loop (and higher) contributions DR&#39; from numerical momentum iteration.
Contains routines to diagonalize mass matrices.
double theta_b
sbottom mixing angle
Parameters pars
MSSM DR&#39; parameters.
MSSM_spectrum gaugeless
MSSM DR&#39; masses / mixings for g1 = g2 = 0.
double MFtau
MSSM DR&#39; tau mass.
RM22 get_mass_matrix_hh() const
returns tree-level CP-even Higgs mass matrix
RM22 delta_mh2_1loop_gaugeless() const
Higgs 1-loop contribution DR&#39; for p = g1 = g2 = 0.
double scale
renormalization scale
double A0(double) const
A0 Passarino-Veltman function.
This class performs a fixed-order calculation of the light CP-even Higgs mass up to 2-loop order...
A4 MChi
MSSM DR&#39; neutralino mass.
double MA
CP-odd Higgs.
A2 M2Hpm
MSSM DR&#39; charged higgs mass.
RM22 UP
MSSM DR&#39; negative chargino mixing matrix.
A2 M2Se
MSSM DR&#39; squared selectron masses.
V2 calculate_Mh2_tree() const
calculates tree-level squared Higgs masses
double B0(double, double, double) const
B0 Passarino-Veltman function.
double g3
gauge coupling g3 SU(3)
Contains the definition of the SUM macro.
double g1
GUT-normalized gauge coupling g1, with gY = g1*Sqrt[3/5].
function declarations for 2-loop MSSM Higgs contributions
#define SUM(...)
Definition: Sum.hpp:31
Momentum_iteration
momentum iteration settings
MSSM_spectrum masses
MSSM DR&#39; masses / mixings.
double b0(double p2, double m12, double m22, double q2) noexcept
B0 Passarino-Veltman function.
Definition: PV.cpp:130
A2 M2Su
MSSM DR&#39; squared sup masses.
std::tuple< V2, V2, V2, V2 > fs_diagonalize_hermitian_perturbatively(const RM22 &m0, const RM22 &m1, const RM22 &m2, const RM22 &m3)
Definition: Linalg.cpp:46
RM22 get_mass_matrix_hh_gaugeless() const
returns tree-level CP-even Higgs mass matrix for p = g1 = g2 = 0
double M2SvmL
MSSM DR&#39; muon-like sneutrino mass.
Eigen::Matrix2d RM22
real 2x2 matrix
Definition: Linalg.hpp:1521
int mom_it_max_iterations
maximum number of numeric momentum iterations
RM33 Ye
electron-type yukawa coupling matrix
RM22 ZH
MSSM DR&#39; CP-even Higgs mixing matrix.
#define INFO_MSG(message)
Definition: Logger.hpp:65
A2 MCha
MSSM DR&#39; chargino mass.
RM22 ZU
MSSM DR&#39; sup mixing matrix.
Eigen::Vector2d V2
real 2-vector
Definition: Linalg.hpp:1520
std::tuple< double, double, double > calculate_Mh2() const
calculates squared Higgs masses
double a0(double m2, double q2) noexcept
A0 Passarino-Veltman function.
Definition: PV.cpp:71
RM33 Au
trilinear up type squark-Higgs coupling matrix
void set_correction(CouplingOrders::CouplingOrders, int)
enable/disable loop corrections
RM22 delta_mh2_1loop(double p2) const
Higgs 1-loop contribution DR&#39;.
RM22 ZS
MSSM DR&#39; sstrange mixing matrix.