diff --git a/src/module.mk b/src/module.mk
index 5e979fe2e..8eb5a3c7f 100644
--- a/src/module.mk
+++ b/src/module.mk
@@ -34,6 +34,7 @@ LIBFLEXI_SRC := \
$(DIR)/slha_io.cpp \
$(DIR)/sm_twoloophiggs.cpp \
$(DIR)/split_threeloophiggs.cpp \
+ $(DIR)/splitmssm_thresholds.cpp \
$(DIR)/standard_model.cpp \
$(DIR)/standard_model_physical.cpp \
$(DIR)/threshold_loop_functions.cpp \
@@ -95,6 +96,7 @@ LIBFLEXI_HDR := \
$(DIR)/slha_io.hpp \
$(DIR)/sm_twoloophiggs.hpp \
$(DIR)/split_threeloophiggs.hpp \
+ $(DIR)/splitmssm_thresholds.hpp \
$(DIR)/spectrum_generator_settings.hpp \
$(DIR)/standard_model.hpp \
$(DIR)/standard_model_physical.hpp \
diff --git a/src/splitmssm_thresholds.cpp b/src/splitmssm_thresholds.cpp
new file mode 100644
index 000000000..9b6254c6e
--- /dev/null
+++ b/src/splitmssm_thresholds.cpp
@@ -0,0 +1,952 @@
+// ====================================================================
+// This file is part of FlexibleSUSY.
+//
+// FlexibleSUSY is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published
+// by the Free Software Foundation, either version 3 of the License,
+// or (at your option) any later version.
+//
+// FlexibleSUSY is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with FlexibleSUSY. If not, see
+// .
+// ====================================================================
+
+#include "splitmssm_thresholds.hpp"
+#include "logger.hpp"
+#include "threshold_loop_functions.hpp"
+#include "numerics2.hpp"
+#include "wrappers.hpp"
+
+#define ASSERT_NON_ZERO(p,fun) \
+ do { \
+ if (is_zero(p)) \
+ FATAL(#fun ": " #p " is zero!"); \
+ } while (0)
+
+namespace flexiblesusy {
+namespace splitmssm_thresholds {
+
+Parameters::Parameters()
+ : g1(0.)
+ , g2(0.)
+ , g3(0.)
+ , gt(0.)
+ , At(0.)
+ , mu(0.)
+ , mA(0.)
+ , m1(0.)
+ , m2(0.)
+ , tan_beta(0.)
+ , scale(0.)
+ , mq2(Eigen::Matrix::Zero())
+ , mu2(Eigen::Matrix::Zero())
+ , md2(Eigen::Matrix::Zero())
+ , ml2(Eigen::Matrix::Zero())
+ , me2(Eigen::Matrix::Zero())
+{
+}
+
+std::ostream& operator<<(std::ostream& ostr, const Parameters& parameters)
+{
+ ostr
+ << "scale = " << parameters.scale << ", "
+ << "g1 = " << parameters.g1 << ", "
+ << "g2 = " << parameters.g2 << ", "
+ << "g3 = " << parameters.g3 << ", "
+ << "yt = " << parameters.gt << ", "
+ << "At = " << parameters.At << ", "
+ << "mu = " << parameters.mu << ", "
+ << "mA = " << parameters.mA << ", "
+ << "m1 = " << parameters.m1 << ", "
+ << "m2 = " << parameters.m2 << ", "
+ << "tan_beta = " << parameters.tan_beta << ", "
+ << "mq2(0,0) = " << parameters.mq2(0,0) << ", "
+ << "mq2(1,1) = " << parameters.mq2(1,1) << ", "
+ << "mq2(2,2) = " << parameters.mq2(2,2) << ", "
+ << "mu2(0,0) = " << parameters.mu2(0,0) << ", "
+ << "mu2(1,1) = " << parameters.mu2(1,1) << ", "
+ << "mu2(2,2) = " << parameters.mu2(2,2) << ", "
+ << "md2(0,0) = " << parameters.md2(0,0) << ", "
+ << "md2(1,1) = " << parameters.md2(1,1) << ", "
+ << "md2(2,2) = " << parameters.md2(2,2) << ", "
+ << "ml2(0,0) = " << parameters.ml2(0,0) << ", "
+ << "ml2(1,1) = " << parameters.ml2(1,1) << ", "
+ << "ml2(2,2) = " << parameters.ml2(2,2) << ", "
+ << "me2(0,0) = " << parameters.me2(0,0) << ", "
+ << "me2(1,1) = " << parameters.me2(1,1) << ", "
+ << "me2(2,2) = " << parameters.me2(2,2) << '\n';
+
+ return ostr;
+}
+
+/**
+ * Returns lambda at the tree-level, first term on the rhs of Eq (8)
+ * of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return first term on the rhs of Eq. (8) of arXiv:1407.4081
+ */
+double lambda_tree_level(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_2beta = Cos(2*beta);
+ const double lambda = 0.25 * (Sqr(g2) + 0.6*Sqr(g1)) * Sqr(cos_2beta);
+
+ return lambda;
+}
+
+/**
+ * Returns \f$\tilde{g}_{1u}\f$ at the tree-level, first term on the
+ * rhs of Eq (17) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return first term on the rhs of Eq. (17) of arXiv:1407.4081
+ */
+double gYu_tree_level(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double sin_beta = Sin(beta);
+ const double gYu = sqrt(0.6) * g1 * sin_beta;
+
+ return gYu;
+}
+
+/**
+ * Returns \f$\tilde{g}_{1d}\f$ at the tree-level, first term on the
+ * rhs of Eq (18) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return first term on the rhs of Eq. (18) of arXiv:1407.4081
+ */
+double gYd_tree_level(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_beta = Cos(beta);
+ const double gYd = sqrt(0.6) * g1 * cos_beta;
+
+ return gYd;
+}
+
+/**
+ * Returns \f$\tilde{g}_{2u}\f$ at the tree-level, first term on the
+ * rhs of Eq (15) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return first term on the rhs of Eq. (15) of arXiv:1407.4081
+ */
+double g2u_tree_level(const Parameters& parameters)
+{
+ const double g2 = parameters.g2;
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double sin_beta = Sin(beta);
+ const double g2u = g2 * sin_beta;
+
+ return g2u;
+}
+
+/**
+ * Returns \f$\tilde{g}_{2d}\f$ at the tree-level, first term on the
+ * rhs of Eq (16) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return first term on the rhs of Eq. (16) of arXiv:1407.4081
+ */
+double g2d_tree_level(const Parameters& parameters)
+{
+ const double g2 = parameters.g2;
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_beta = Cos(beta);
+ const double g2d = g2 * cos_beta;
+
+ return g2d;
+}
+
+/**
+ * Finite 1-loop MS-bar--DR-bar transition counterterm for quartic
+ * Higgs coupling (arXiv:1407.4081, Eq. (9)).
+ *
+ * @param parameters running parameters
+ *
+ * @return 1-loop MS-bar--DR-bar transition CT for quartic Higgs
+ * coupling
+ */
+double delta_lambda_1loop_reg(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_2beta = Cos(2*beta);
+
+ const double delta_lambda_1loop_reg
+ = - 0.09*Power(g1,4) - 0.3*Sqr(g1)*Sqr(g2)
+ - (0.75 - Sqr(cos_2beta)/6.) * Power(g2,4);
+
+ return delta_lambda_1loop_reg * oneOver16PiSqr;
+}
+
+/**
+ * Finite 1-loop threshold correction for quartic Higgs coupling from
+ * sfermions (arXiv:1407.4081, Eq. (10)).
+ *
+ * @param parameters running parameters
+ *
+ * @return 1-loop threshold coupling for quartic Higgs coupling from
+ * sfermions
+ */
+double delta_lambda_1loop_phi(const Parameters& parameters)
+{
+ using namespace threshold_loop_functions;
+
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double g12 = Sqr(g1);
+ const double g22 = Sqr(g2);
+ const double g14 = Sqr(g12);
+ const double g24 = Sqr(g22);
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_2beta = Cos(2*beta);
+ const double cos2_2beta = Sqr(cos_2beta);
+ const double cos_4beta = Cos(4*beta);
+ const double cos_8beta = Cos(8*beta);
+ const double sin_4beta = Sin(4*beta);
+ const double gt = parameters.gt;
+ const double gt2 = Sqr(gt);
+ const double gt4 = Sqr(gt2);
+ const double scale2 = Sqr(parameters.scale);
+ const Eigen::Matrix mq2(parameters.mq2);
+ const Eigen::Matrix mu2(parameters.mu2);
+ const Eigen::Matrix md2(parameters.md2);
+ const Eigen::Matrix ml2(parameters.ml2);
+ const Eigen::Matrix me2(parameters.me2);
+ const double xQU = AbsSqrt(mq2(2,2)/mu2(2,2));
+ const double At = parameters.At;
+ const double mu = parameters.mu;
+ const double xt = At - mu/tan_beta;
+ const double xtt = Sqr(xt)/AbsSqrt(mq2(2,2)*mu2(2,2));
+ const double mA2 = Sqr(parameters.mA);
+
+ ASSERT_NON_ZERO(mq2(0,0), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(mq2(1,1), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(mq2(2,2), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(mu2(0,0), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(mu2(1,1), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(mu2(2,2), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(md2(0,0), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(md2(1,1), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(md2(2,2), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(ml2(0,0), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(ml2(1,1), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(ml2(2,2), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(me2(0,0), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(me2(1,1), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(me2(2,2), delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(mA2 , delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(tan_beta, delta_lambda_1loop_phi);
+ ASSERT_NON_ZERO(scale2 , delta_lambda_1loop_phi);
+
+ const double delta_lambda_1loop_phi =
+ 3*gt2*(gt2+0.5*(g22-g12/5.)*cos_2beta)*Log(mq2(2,2)/scale2)
+ +3*gt2*(gt2+0.4*g12*cos_2beta)*Log(mu2(2,2)/scale2)
+ +cos2_2beta/300*(
+ 3*(g14+25*g24)*(
+ +Log(mq2(0,0)/scale2)
+ +Log(mq2(1,1)/scale2)
+ +Log(mq2(2,2)/scale2)
+ )
+ +24*g14*(
+ +Log(mu2(0,0)/scale2)
+ +Log(mu2(1,1)/scale2)
+ +Log(mu2(2,2)/scale2)
+ )
+ +6*g14*(
+ +Log(md2(0,0)/scale2)
+ +Log(md2(1,1)/scale2)
+ +Log(md2(2,2)/scale2)
+ )
+ +(9*g14+25*g24)*(
+ +Log(ml2(0,0)/scale2)
+ +Log(ml2(1,1)/scale2)
+ +Log(ml2(2,2)/scale2)
+ )
+ +18*g14*(
+ +Log(me2(0,0)/scale2)
+ +Log(me2(1,1)/scale2)
+ +Log(me2(2,2)/scale2)
+ )
+ )
+ +1./4800.*(261*g14+630*g12*g22+1325*g24
+ -4*cos_4beta*(9*g14+90*g12*g22+175*g24)
+ -9*cos_8beta*Sqr(3*g12+5*g22))*Log(mA2/scale2)
+ -3./16.*Sqr(3./5.*g12+g22)*Sqr(sin_4beta)
+ +6*gt4*xtt*(F1(xQU)-xtt/12*F2(xQU))
+ +3./4.*gt2*xtt*cos_2beta*(3./5.*g12*F3(xQU)+g22*F4(xQU))
+ -0.25*gt2*xtt*cos2_2beta*(3./5.*g12+g22)*F5(xQU);
+
+ return delta_lambda_1loop_phi * oneOver16PiSqr;
+}
+
+namespace {
+ /**
+ * Split-MSSM contribution to the beta-function of lambda
+ * (arXiv:1407.4081, Eq. (12)).
+ */
+ double beta_lambda(double lambda, double gYu, double gYd, double g2u, double g2d)
+ {
+ const double gYu2 = Sqr(gYu);
+ const double gYd2 = Sqr(gYd);
+ const double g2u2 = Sqr(g2u);
+ const double g2d2 = Sqr(g2d);
+ const double gYu4 = Sqr(gYu2);
+ const double gYd4 = Sqr(gYd2);
+ const double g2u4 = Sqr(g2u2);
+ const double g2d4 = Sqr(g2d2);
+
+ const double beta =
+ 2*lambda*(gYd2 + gYu2 + 3*g2d2 + 3*g2u2)
+ -gYd4 - gYu4 - 5*g2d4 - 5*g2u4
+ -4*gYd*gYu*g2d*g2u
+ -2*(gYd2+g2u2)*(gYu2+g2d2);
+
+ return beta;
+ }
+}
+
+/**
+ * Finite 1-loop threshold correction for quartic Higgs coupling from
+ * Higgsinos and gauginos (arXiv:1407.4081, Eq. (11)).
+ *
+ * The couplings \f$\tilde{g}_{1u}\f$, \f$\tilde{g}_{1d}\f$,
+ * \f$\tilde{g}_{2u}\f$, \f$\tilde{g}_{2d}\f$, \f$\lambda\f$ are set
+ * to their tree-level values.
+ *
+ * @param parameters running parameters
+ *
+ * @return 1-loop threshold correction for quartic Higgs coupling from
+ * Higgsinos and gauginos
+ */
+double delta_lambda_1loop_chi_1(const Parameters& parameters)
+{
+ const double scale = parameters.scale;
+ const double mu = parameters.mu;
+ const double gYu = gYu_tree_level(parameters);
+ const double gYd = gYd_tree_level(parameters);
+ const double g2u = g2u_tree_level(parameters);
+ const double g2d = g2d_tree_level(parameters);
+ const double m1 = parameters.m1;
+ const double m2 = parameters.m2;
+ const double lambda = lambda_tree_level(parameters);
+
+ ASSERT_NON_ZERO(scale, delta_lambda_1loop_chi_1);
+ ASSERT_NON_ZERO(mu , delta_lambda_1loop_chi_1);
+ ASSERT_NON_ZERO(m1 , delta_lambda_1loop_chi_1);
+ ASSERT_NON_ZERO(m2 , delta_lambda_1loop_chi_1);
+
+ const double delta_lambda =
+ delta_lambda_1loop_chi_1(scale,mu,lambda,gYu,gYd,g2u,g2d,m1,m2);
+
+ return delta_lambda;
+}
+
+/**
+ * Finite 1-loop threshold correction for quartic Higgs coupling from
+ * Higgsinos and gauginos (arXiv:1407.4081, Eq. (11)).
+ *
+ * @param scale renormalization scale
+ * @param mu bilinear Higgsino coupling
+ * @param lambda quartic Higgs coupling
+ * @param gYu Higgs-Up-type-Higgsino-bino coupling
+ * @param gYd Higgs-Down-type-Higgsino-bino coupling
+ * @param g2u Higgs-Up-type-Higgsino-wino coupling
+ * @param g2d Higgs-Down-type-Higgsino-wino coupling
+ * @param m1 bino mass parameter
+ * @param m2 wino mass parameter
+ *
+ * @return r.h.s. of Eq. (11), including the loop factor
+ */
+double delta_lambda_1loop_chi_1(
+ double scale,
+ double mu,
+ double lambda,
+ double gYu,
+ double gYd,
+ double g2u,
+ double g2d,
+ double m1,
+ double m2
+)
+{
+ using namespace threshold_loop_functions;
+
+ const double gYu2 = Sqr(gYu);
+ const double gYd2 = Sqr(gYd);
+ const double g2u2 = Sqr(g2u);
+ const double g2d2 = Sqr(g2d);
+ const double gYu4 = Sqr(gYu2);
+ const double gYd4 = Sqr(gYd2);
+ const double g2u4 = Sqr(g2u2);
+ const double g2d4 = Sqr(g2d2);
+ const double r1 = m1 / mu;
+ const double r2 = m2 / mu;
+ const double mu2 = Sqr(mu);
+ const double scale2 = Sqr(scale);
+
+ ASSERT_NON_ZERO(scale, delta_lambda_1loop_chi_1);
+ ASSERT_NON_ZERO(mu , delta_lambda_1loop_chi_1);
+ ASSERT_NON_ZERO(m1 , delta_lambda_1loop_chi_1);
+ ASSERT_NON_ZERO(m2 , delta_lambda_1loop_chi_1);
+
+ const double delta_lambda =
+ 0.5*beta_lambda(lambda,gYu,gYd,g2u,g2d)*Log(mu2/scale2)
+ -7./12.*f1(r1)*(gYd4+gYu4)
+ -9./4.*f2(r2)*(g2d4+g2u4)
+ -3./2.*f3(r1)*gYd2*gYu2
+ -7./2.*f4(r2)*g2d2*g2u2
+ -8./3.*f5(r1,r2)*gYd*gYu*g2d*g2u
+ -7./6.*f6(r1,r2)*(gYd2*g2d2+gYu2*g2u2)
+ -1./6.*f7(r1,r2)*(gYd2*g2u2+gYu2*g2d2)
+ -4./3.*f8(r1,r2)*(gYd*g2u+gYu*g2d)*(gYd*g2d+gYu*g2u)
+ +2./3.*f(r1)*gYd*gYu*(lambda-2*(gYd2+gYu2))
+ +2*f(r2)*g2d*g2u*(lambda-2*(g2d2+g2u2))
+ +1./3.*g(r1)*lambda*(gYd2+gYu2)
+ +g(r2)*lambda*(g2d2+g2u2);
+
+ return oneOver16PiSqr * delta_lambda;
+}
+
+/**
+ * Finite 1-loop threshold correction for quartic Higgs coupling from
+ * Higgsinos and gauginos (arXiv:1407.4081, Eq. (13)).
+ *
+ * @param parameters input parameters
+ *
+ * @return 1-loop threshold correction for quartic Higgs coupling from
+ * Higgsinos and gauginos
+ */
+double delta_lambda_1loop_chi_2(const Parameters& parameters)
+{
+ const double scale = parameters.scale;
+ const double mu = parameters.mu;
+ const double m2 = parameters.m2;
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double tan_beta = parameters.tan_beta;
+
+ const double delta_lambda =
+ delta_lambda_1loop_chi_2(scale,mu,m2,g1,g2,tan_beta);
+
+ return delta_lambda;
+}
+
+/**
+ * Finite 1-loop threshold correction for quartic Higgs coupling from
+ * Higgsinos and gauginos (arXiv:1407.4081, Eq. (13)).
+ *
+ * @param scale renormalization scale
+ * @param mu bilinear Higgsino coupling
+ * @param m2 wino mass parameter
+ * @param g1 running EFT gauge coupling \f$g_1\f$ (GUT normalized)
+ * @param g2 running EFT gauge coupling \f$g_1\f$
+ * @param tan_beta \f$\tan\beta\f$
+ *
+ * @return r.h.s. of Eq. (13), including the loop factor
+ */
+double delta_lambda_1loop_chi_2(
+ double scale,
+ double mu,
+ double m2,
+ double g1,
+ double g2,
+ double tan_beta)
+{
+ const double scale2 = Sqr(scale);
+ const double mu2 = Sqr(mu);
+ const double m22 = Sqr(m2);
+ const double g14 = Power(g1,4);
+ const double g24 = Power(g2,4);
+ const double beta = ArcTan(tan_beta);
+ const double cos2_2beta = Sqr(Cos(2*beta));
+
+ ASSERT_NON_ZERO(scale, delta_lambda_1loop_chi_2);
+ ASSERT_NON_ZERO(mu , delta_lambda_1loop_chi_2);
+ ASSERT_NON_ZERO(m2 , delta_lambda_1loop_chi_2);
+
+ const double delta_lambda =
+ -1./6. * cos2_2beta * (
+ +2.*g24*Log(m22/scale2)
+ +(9./25.*g14 + g24)*Log(mu2/scale2)
+ );
+
+ return oneOver16PiSqr * delta_lambda;
+}
+
+/**
+ * Finite 2-loop threshold correction for quartic Higgs coupling from
+ * sfermions (arXiv:1407.4081, Eq. (34)).
+ *
+ * @param parameters input parameters
+ *
+ * @return 2-loop threshold coupling for quartic Higgs coupling from
+ * sfermions (arXiv:1407.4081, Eq. (34)).
+ */
+double delta_lambda_2loop_phi(const Parameters& parameters)
+{
+ const double Pi4 = Power(Pi,4);
+ const double g3 = parameters.g3;
+ const double g32 = Sqr(g3);
+ const double gt = parameters.gt;
+ const double gt4 = Power(gt,4);
+ const double scale2 = Sqr(parameters.scale);
+ const Eigen::Matrix mq2(parameters.mq2);
+ const Eigen::Matrix mu2(parameters.mu2);
+ const double xQU = AbsSqrt(mq2(2,2)/mu2(2,2));
+ const double xQU2 = Sqr(xQU);
+ const double At = parameters.At;
+ const double mu = parameters.mu;
+ const double tan_beta = parameters.tan_beta;
+ const double xt = At - mu/tan_beta;
+ const double xtt = Sqr(xt)/AbsSqrt(mq2(2,2)*mu2(2,2));
+
+ ASSERT_NON_ZERO(mq2(2,2), delta_lambda_2loop_phi);
+ ASSERT_NON_ZERO(mu2(2,2), delta_lambda_2loop_phi);
+ ASSERT_NON_ZERO(scale2 , delta_lambda_2loop_phi);
+ ASSERT_NON_ZERO(tan_beta, delta_lambda_2loop_phi);
+
+ double delta_lambda_2loop_phi;
+
+ if (is_equal(xQU, 1.)) {
+ delta_lambda_2loop_phi =
+ 3. - 2*xtt + Sqr(xtt)/6.;
+ } else {
+ delta_lambda_2loop_phi =
+ 3.
+ +4*Log(xQU)
+ +8*Sqr(Log(xQU))
+ +6*Sqr(Log(mq2(2,2)/scale2))
+ -4*(1+3*Log(xQU))*Log(mq2(2,2)/scale2)
+ +xtt*(
+ +(12*xQU*Log(xQU))/(xQU2-1)*(2*Log(mq2(2,2)/scale2)-1)
+ -(16*xQU*(xQU2-2)*Sqr(Log(xQU)))/Sqr(xQU2-1)
+ )
+ +Sqr(xtt)*(
+ +(6*xQU2*(5+xQU2)*Log(xQU))/Power(xQU2-1,3)
+ +(4*xQU2*(Power(xQU,4)-4*xQU2-5)*Sqr(Log(xQU)))/Power(xQU2-1,4)
+ -(10*xQU2)/Sqr(xQU2-1)
+ +(12*xQU2)/Sqr(xQU2-1)*(1-(xQU2+1)/(xQU2-1)*Log(xQU))*Log(mq2(2,2)/scale2)
+ );
+ }
+
+ return -(g32*gt4)/(32*Pi4) * delta_lambda_2loop_phi;
+}
+
+/**
+ * Simplified, finite 2-loop threshold correction for quartic Higgs
+ * coupling from sfermions (arXiv:1407.4081, Eq. (36)) in the
+ * High-Scale SUSY scenario.
+ *
+ * @param parameters input parameters
+ *
+ * @return 2-loop threshold coupling for quartic Higgs coupling from
+ * sfermions (arXiv:1407.4081, Eq. (36))
+ */
+double delta_lambda_2loop_phi_HSS(const Parameters& parameters)
+{
+ const double Pi4 = Power(Pi,4);
+ const double g32 = Sqr(parameters.g3);
+ const double gt4 = Power(parameters.gt,4);
+ const double scale = parameters.scale;
+ const double At = parameters.At;
+ const double mu = parameters.mu;
+ const double tan_beta = parameters.tan_beta;
+ const double xt = At - mu/tan_beta;
+ const double r = xt / scale;
+
+ ASSERT_NON_ZERO(scale , delta_lambda_2loop_phi_HSS);
+ ASSERT_NON_ZERO(tan_beta, delta_lambda_2loop_phi_HSS);
+
+ const double delta_lambda_2loop_phi_HSS =
+ -12.*r - 6.*Sqr(r) + 14.*Power(r,3) + 0.5*Power(r,4) - Power(r,5);
+
+ return (g32*gt4)/(96.*Pi4) * delta_lambda_2loop_phi_HSS;
+}
+
+/**
+ * Returns \f$\tilde{g}_{1u}\f$ at the one-loop level, all except the
+ * first term on the rhs of Eq (17) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return one-loop term on the rhs of Eq. (17) of arXiv:1407.4081
+ */
+double delta_gYu_1loop(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double g12 = Sqr(g1);
+ const double g22 = Sqr(g2);
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos2_beta = Sqr(Cos(beta));
+ const double sin_beta = Sin(beta);
+ const double sin2_beta = Sqr(sin_beta);
+ const double gt = parameters.gt;
+ const double gt2 = Sqr(gt);
+ const double scale2 = Sqr(parameters.scale);
+ const Eigen::Matrix mq2(parameters.mq2);
+ const Eigen::Matrix mu2(parameters.mu2);
+ const Eigen::Matrix md2(parameters.md2);
+ const Eigen::Matrix ml2(parameters.ml2);
+ const Eigen::Matrix me2(parameters.me2);
+ const double mA2 = Sqr(parameters.mA);
+
+ ASSERT_NON_ZERO(mq2(0,0), delta_gYu_1loop);
+ ASSERT_NON_ZERO(mq2(1,1), delta_gYu_1loop);
+ ASSERT_NON_ZERO(mq2(2,2), delta_gYu_1loop);
+ ASSERT_NON_ZERO(mu2(0,0), delta_gYu_1loop);
+ ASSERT_NON_ZERO(mu2(1,1), delta_gYu_1loop);
+ ASSERT_NON_ZERO(mu2(2,2), delta_gYu_1loop);
+ ASSERT_NON_ZERO(md2(0,0), delta_gYu_1loop);
+ ASSERT_NON_ZERO(md2(1,1), delta_gYu_1loop);
+ ASSERT_NON_ZERO(md2(2,2), delta_gYu_1loop);
+ ASSERT_NON_ZERO(ml2(0,0), delta_gYu_1loop);
+ ASSERT_NON_ZERO(ml2(1,1), delta_gYu_1loop);
+ ASSERT_NON_ZERO(ml2(2,2), delta_gYu_1loop);
+ ASSERT_NON_ZERO(me2(0,0), delta_gYu_1loop);
+ ASSERT_NON_ZERO(me2(1,1), delta_gYu_1loop);
+ ASSERT_NON_ZERO(me2(2,2), delta_gYu_1loop);
+ ASSERT_NON_ZERO(mA2 , delta_gYu_1loop);
+ ASSERT_NON_ZERO(tan_beta, delta_gYu_1loop);
+ ASSERT_NON_ZERO(scale2 , delta_gYu_1loop);
+
+ const double delta_gYu_1loop =
+ (3*g22/16)*(-2+7*cos2_beta)
+ +(3*g12/80)*(-44+7*cos2_beta)
+ +(9*gt2)/(4*sin2_beta)
+ +(4*g12-9*(g12+5*g22)*cos2_beta)/40*Log(mA2/scale2)
+ +(g12/10)*(
+ +Log(ml2(0,0)/scale2)+Log(ml2(1,1)/scale2)+Log(ml2(2,2)/scale2)
+ +2*Log(me2(0,0)/scale2)+2*Log(me2(1,1)/scale2)+2*Log(me2(2,2)/scale2)
+ )
+ +(g12/30)*(
+ +Log(mq2(0,0)/scale2)+Log(mq2(1,1)/scale2)+Log(mq2(2,2)/scale2)
+ +8*Log(mu2(0,0)/scale2)+8*Log(mu2(1,1)/scale2)+8*Log(mu2(2,2)/scale2)
+ +2*Log(md2(0,0)/scale2)+2*Log(md2(1,1)/scale2)+2*Log(md2(2,2)/scale2)
+ )
+ +gt2/(4*sin2_beta)*(7*Log(mq2(2,2)/scale2)-13*Log(mu2(2,2)/scale2));
+
+ return delta_gYu_1loop * oneOver16PiSqr * g1 * Sqrt(0.6) * sin_beta;
+}
+
+/**
+ * Returns \f$\tilde{g}_{1d}\f$ at the one-loop level, all except the
+ * first term on the rhs of Eq (18) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return one-loop term on the rhs of Eq. (18) of arXiv:1407.4081
+ */
+double delta_gYd_1loop(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double g12 = Sqr(g1);
+ const double g22 = Sqr(g2);
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_beta = Cos(beta);
+ const double sin_beta = Sin(beta);
+ const double sin2_beta = Sqr(sin_beta);
+ const double scale2 = Sqr(parameters.scale);
+ const Eigen::Matrix mq2(parameters.mq2);
+ const Eigen::Matrix mu2(parameters.mu2);
+ const Eigen::Matrix md2(parameters.md2);
+ const Eigen::Matrix ml2(parameters.ml2);
+ const Eigen::Matrix me2(parameters.me2);
+ const double mA2 = Sqr(parameters.mA);
+
+ ASSERT_NON_ZERO(mq2(0,0), delta_gYd_1loop);
+ ASSERT_NON_ZERO(mq2(1,1), delta_gYd_1loop);
+ ASSERT_NON_ZERO(mq2(2,2), delta_gYd_1loop);
+ ASSERT_NON_ZERO(mu2(0,0), delta_gYd_1loop);
+ ASSERT_NON_ZERO(mu2(1,1), delta_gYd_1loop);
+ ASSERT_NON_ZERO(mu2(2,2), delta_gYd_1loop);
+ ASSERT_NON_ZERO(md2(0,0), delta_gYd_1loop);
+ ASSERT_NON_ZERO(md2(1,1), delta_gYd_1loop);
+ ASSERT_NON_ZERO(md2(2,2), delta_gYd_1loop);
+ ASSERT_NON_ZERO(ml2(0,0), delta_gYd_1loop);
+ ASSERT_NON_ZERO(ml2(1,1), delta_gYd_1loop);
+ ASSERT_NON_ZERO(ml2(2,2), delta_gYd_1loop);
+ ASSERT_NON_ZERO(me2(0,0), delta_gYd_1loop);
+ ASSERT_NON_ZERO(me2(1,1), delta_gYd_1loop);
+ ASSERT_NON_ZERO(me2(2,2), delta_gYd_1loop);
+ ASSERT_NON_ZERO(mA2 , delta_gYd_1loop);
+ ASSERT_NON_ZERO(tan_beta, delta_gYd_1loop);
+ ASSERT_NON_ZERO(scale2 , delta_gYd_1loop);
+
+ const double delta_gYd_1loop =
+ (3*g22/16)*(-2+7*sin2_beta)
+ +(3*g12/80)*(-44+7*sin2_beta)
+ +(4*g12-9*(g12+5*g22)*sin2_beta)/40*Log(mA2/scale2)
+ +(g12/10)*(
+ +Log(ml2(0,0)/scale2)+Log(ml2(1,1)/scale2)+Log(ml2(2,2)/scale2)
+ +2*Log(me2(0,0)/scale2)+2*Log(me2(1,1)/scale2)+2*Log(me2(2,2)/scale2)
+ )
+ +(g12/30)*(
+ +Log(mq2(0,0)/scale2)+Log(mq2(1,1)/scale2)+Log(mq2(2,2)/scale2)
+ +8*Log(mu2(0,0)/scale2)+8*Log(mu2(1,1)/scale2)+8*Log(mu2(2,2)/scale2)
+ +2*Log(md2(0,0)/scale2)+2*Log(md2(1,1)/scale2)+2*Log(md2(2,2)/scale2)
+ );
+
+ return delta_gYd_1loop * oneOver16PiSqr * g1 * Sqrt(0.6) * cos_beta;
+}
+
+/**
+ * Returns \f$\tilde{g}_{2u}\f$ at the one-loop level, all except the
+ * first term on the rhs of Eq (15) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return one-loop term on the rhs of Eq. (15) of arXiv:1407.4081
+ */
+double delta_g2u_1loop(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double g12 = Sqr(g1);
+ const double g22 = Sqr(g2);
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos2_beta = Sqr(Cos(beta));
+ const double sin_beta = Sin(beta);
+ const double sin2_beta = Sqr(sin_beta);
+ const double gt = parameters.gt;
+ const double gt2 = Sqr(gt);
+ const double scale2 = Sqr(parameters.scale);
+ const Eigen::Matrix mq2(parameters.mq2);
+ const Eigen::Matrix mu2(parameters.mu2);
+ const Eigen::Matrix ml2(parameters.ml2);
+ const double mA2 = Sqr(parameters.mA);
+
+ ASSERT_NON_ZERO(mq2(0,0), delta_g2u_1loop);
+ ASSERT_NON_ZERO(mq2(1,1), delta_g2u_1loop);
+ ASSERT_NON_ZERO(mq2(2,2), delta_g2u_1loop);
+ ASSERT_NON_ZERO(mu2(0,0), delta_g2u_1loop);
+ ASSERT_NON_ZERO(mu2(1,1), delta_g2u_1loop);
+ ASSERT_NON_ZERO(mu2(2,2), delta_g2u_1loop);
+ ASSERT_NON_ZERO(ml2(0,0), delta_g2u_1loop);
+ ASSERT_NON_ZERO(ml2(1,1), delta_g2u_1loop);
+ ASSERT_NON_ZERO(ml2(2,2), delta_g2u_1loop);
+ ASSERT_NON_ZERO(mA2 , delta_g2u_1loop);
+ ASSERT_NON_ZERO(tan_beta, delta_g2u_1loop);
+ ASSERT_NON_ZERO(scale2 , delta_g2u_1loop);
+
+ const double delta_g2u_1loop =
+ -g22*(2./3.+11./16.*cos2_beta)
+ +3*g12/80*(-2+7*cos2_beta)
+ +9*gt2/(4*sin2_beta)
+ +(20*g22+3*(-9*g12+35*g22)*cos2_beta)/120*Log(mA2/scale2)
+ +g22/6*(
+ +Log(ml2(0,0)/scale2)
+ +Log(ml2(1,1)/scale2)
+ +Log(ml2(2,2)/scale2)
+ )
+ +g22/2*(
+ +Log(mq2(0,0)/scale2)
+ +Log(mq2(1,1)/scale2)
+ +Log(mq2(2,2)/scale2)
+ )
+ -0.75*gt2/sin2_beta*(3*Log(mq2(2,2)/scale2)-Log(mu2(2,2)/scale2));
+
+ return delta_g2u_1loop * oneOver16PiSqr * g2 * sin_beta;
+}
+
+/**
+ * Returns \f$\tilde{g}_{2d}\f$ at the one-loop level, all except the
+ * first term on the rhs of Eq (16) of arXiv:1407.4081.
+ *
+ * @param parameters running parameters
+ *
+ * @return one-loop term on the rhs of Eq. (16) of arXiv:1407.4081
+ */
+double delta_g2d_1loop(const Parameters& parameters)
+{
+ const double g1 = parameters.g1;
+ const double g2 = parameters.g2;
+ const double g12 = Sqr(g1);
+ const double g22 = Sqr(g2);
+ const double tan_beta = parameters.tan_beta;
+ const double beta = ArcTan(tan_beta);
+ const double cos_beta = Cos(beta);
+ const double sin_beta = Sin(beta);
+ const double sin2_beta = Sqr(sin_beta);
+ const double scale2 = Sqr(parameters.scale);
+ const Eigen::Matrix mq2(parameters.mq2);
+ const Eigen::Matrix ml2(parameters.ml2);
+ const double mA2 = Sqr(parameters.mA);
+
+ ASSERT_NON_ZERO(mq2(0,0), delta_g2d_1loop);
+ ASSERT_NON_ZERO(mq2(1,1), delta_g2d_1loop);
+ ASSERT_NON_ZERO(mq2(2,2), delta_g2d_1loop);
+ ASSERT_NON_ZERO(ml2(0,0), delta_g2d_1loop);
+ ASSERT_NON_ZERO(ml2(1,1), delta_g2d_1loop);
+ ASSERT_NON_ZERO(ml2(2,2), delta_g2d_1loop);
+ ASSERT_NON_ZERO(mA2 , delta_g2d_1loop);
+ ASSERT_NON_ZERO(tan_beta, delta_g2d_1loop);
+ ASSERT_NON_ZERO(scale2 , delta_g2d_1loop);
+
+ const double delta_g2d_1loop =
+ -g22*(2./3.+11./16.*sin2_beta)
+ +(3*g12/80)*(-2+7*sin2_beta)
+ +(g22/2)*Log(mq2(0,0)/scale2)
+ +(g22/2)*Log(mq2(1,1)/scale2)
+ +(g22/2)*Log(mq2(2,2)/scale2)
+ +(20*g22+3*(-9*g12+35*g22)*sin2_beta)/120*Log(mA2/scale2)
+ +(g22/6)*Log(ml2(0,0)/scale2)
+ +(g22/6)*Log(ml2(1,1)/scale2)
+ +(g22/6)*Log(ml2(2,2)/scale2);
+
+ return delta_g2d_1loop * oneOver16PiSqr * g2 * cos_beta;
+}
+
+/**
+ * Finite 1-loop threshold correction for top Yukawa coupling from
+ * Higgsinos and gauginos (arXiv:1407.4081, Eq. (25)).
+ *
+ * @param scale renormalization scale
+ * @param mu bilinear Higgsino coupling
+ * @param gYu Higgs-Up-type-Higgsino-bino coupling
+ * @param gYd Higgs-Down-type-Higgsino-bino coupling
+ * @param g2u Higgs-Up-type-Higgsino-wino coupling
+ * @param g2d Higgs-Down-type-Higgsino-wino coupling
+ * @param m1 bino mass parameter
+ * @param m2 wino mass parameter
+ *
+ * @return 1-loop threshold correction for the top Yukawa coupling
+ * from Higgsinos and gauginos
+ */
+double delta_gt_1loop_chi(
+ double scale, double mu, double gYu, double gYd,
+ double g2u, double g2d, double m1, double m2)
+{
+ using namespace threshold_loop_functions;
+
+ const double gYu2 = Sqr(gYu);
+ const double gYd2 = Sqr(gYd);
+ const double g2u2 = Sqr(g2u);
+ const double g2d2 = Sqr(g2d);
+ const double r1 = m1 / mu;
+ const double r2 = m2 / mu;
+ const double mu2 = Sqr(mu);
+ const double scale2 = Sqr(scale);
+
+ ASSERT_NON_ZERO(scale, delta_gt_1loop_chi);
+ ASSERT_NON_ZERO(mu , delta_gt_1loop_chi);
+ ASSERT_NON_ZERO(m1 , delta_gt_1loop_chi);
+ ASSERT_NON_ZERO(m2 , delta_gt_1loop_chi);
+
+ const double delta_gt_chi =
+ -1./6.*gYu*gYd*f(r1)
+ -1./12.*(gYu2+gYd2)*(g(r1)+3*Log(mu2/scale2))
+ -0.5*g2u*g2d*f(r2)
+ -0.25*(g2u2+g2d2)*(g(r2)+3*Log(mu2/scale2));
+
+ return oneOver16PiSqr * delta_gt_chi;
+}
+
+namespace {
+ /// arXiv:1502.06525, Eq. (44)
+ double G(double x2, double q2)
+ {
+ if (is_zero(x2))
+ return 0.;
+
+ ASSERT_NON_ZERO(q2, G);
+
+ return x2 * (Log(x2/q2) - 1.);
+ }
+
+ /// arXiv:1502.06525, Eq. (A8)
+ double G1(double m12, double m22, double q2)
+ {
+ ASSERT_NON_ZERO(q2, G1);
+
+ if (is_equal(m12, m22)) {
+ ASSERT_NON_ZERO(m12, G1);
+ return Log(m12/q2);
+ }
+
+ return (G(m12,q2) - G(m22,q2)) / (m12 - m22);
+ }
+
+ /// arXiv:1502.06525, Eq. (A13)
+ double G2(double m12, double m22, double q2)
+ {
+ ASSERT_NON_ZERO(q2, G2);
+
+ if (is_equal(m12, m22)) {
+ ASSERT_NON_ZERO(m12, G2);
+ return 2*m12*Log(m12/q2) - m12;
+ }
+
+ return (m12*G(m12,q2) - m22*G(m22,q2)) / (m12 - m22);
+ }
+}
+
+/**
+ * Calculates the finite 1-loop threshold correction \f$\Delta m^2\f$
+ * (note the sign!) for the Higgs mass parameter \f$m^2\f$ from
+ * Higgsinos and gauginos (arXiv:1502.06525, Eq. (45)). Only the
+ * contribution from lines 4 and 5 are calculated. The other lines
+ * correspond to sfermions and the heavy Higgs and are ignored.
+ *
+ * @param parameters input parameters
+ *
+ * @return 1-loop threshold correction for Higgs mass parameter from
+ * Higgsinos and gauginos
+ */
+double delta_m2_1loop_chi(const Parameters& parameters)
+{
+ const double g2 = parameters.g2;
+ const double gY = parameters.g1 * Sqrt(0.6);
+ const double m1 = parameters.m1;
+ const double m2 = parameters.m2;
+ const double mu = parameters.mu;
+ const double scale = parameters.scale;
+ const double g22 = Sqr(g2);
+ const double gY2 = Sqr(gY);
+ const double m12 = Sqr(m1);
+ const double m22 = Sqr(m2);
+ const double mu2 = Sqr(mu);
+ const double scale2 = Sqr(scale);
+
+ const double minus_delta_m2 =
+ - 6*g22*G2(m22,mu2,scale2)
+ - 2*gY2*G2(m12,mu2,scale2)
+ - 12*g22*m2*mu*G1(m22,mu2,scale2)
+ - 4*gY2*m1*mu*G1(m12,mu2,scale2);
+
+ return - minus_delta_m2 * 0.5 * oneOver16PiSqr;
+}
+
+} // namespace splitmssm_thresholds
+} // namespace flexiblesusy
diff --git a/src/splitmssm_thresholds.hpp b/src/splitmssm_thresholds.hpp
new file mode 100644
index 000000000..7fdf57c74
--- /dev/null
+++ b/src/splitmssm_thresholds.hpp
@@ -0,0 +1,147 @@
+// ====================================================================
+// This file is part of FlexibleSUSY.
+//
+// FlexibleSUSY is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published
+// by the Free Software Foundation, either version 3 of the License,
+// or (at your option) any later version.
+//
+// FlexibleSUSY is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with FlexibleSUSY. If not, see
+// .
+// ====================================================================
+
+#ifndef SplitMSSM_FullMSSM_THRESHOLDS_H
+#define SplitMSSM_FullMSSM_THRESHOLDS_H
+
+#include
+
+/**
+ * @file splitmssm_thresholds.hpp
+ *
+ * Contains function declarations for threshold corrections of the
+ * MSSM to the Standard Model or the Split-MSSM from arXiv:1407.4081.
+ *
+ * Example for matching of the MSSM to the Standard Model:
+@code
+ Parameters pars;
+ // fill parameters ...
+
+ double lambda = lambda_tree_level(pars);
+
+ if (loopLevel > 0) {
+ lambda +=
+ + delta_lambda_1loop_reg(pars)
+ + delta_lambda_1loop_phi(pars)
+ + delta_lambda_1loop_chi_1(pars)
+ + delta_lambda_1loop_chi_2(pars);
+ }
+
+ if (loopLevel > 1)
+ lambda += delta_lambda_2loop_phi_HSS(pars);
+@endcode
+ *
+ * Example for matching of the MSSM to the Split-MSSM:
+@code
+ Parameters pars;
+ // fill parameters ...
+ // Note: g1 and g2 are defined in the Split-MSSM
+
+ double lambda_split = lambda_tree_level(pars);
+ double gYu = gYu_tree_level(pars);
+ double gYd = gYd_tree_level(pars);
+ double g2u = g2u_tree_level(pars);
+ double g2d = g2d_tree_level(pars);
+
+ if (loopLevel > 0) {
+ lambda_split +=
+ + delta_lambda_1loop_reg(pars)
+ + delta_lambda_1loop_phi(pars);
+ gYu += delta_gYu_1loop(pars);
+ gYd += delta_gYd_1loop(pars);
+ g2u += delta_g2u_1loop(pars);
+ g2d += delta_g2d_1loop(pars);
+ }
+
+ if (loopLevel > 1)
+ lambda_split += delta_lambda_2loop_phi(pars);
+@endcode
+ *
+ * Example for matching of the Split-MSSM to the Standard Model:
+@code
+ Parameters pars;
+ // fill parameters ...
+ // Note: parameters are defined in the Split-MSSM
+
+ double lambda_SM = lambda_split;
+
+ if (loopLevel > 0) {
+ lambda_SM += delta_lambda_1loop_chi_1(
+ scale, mu, lambda_split, gYu, gYd, g2u, g2d, m1, m2);
+ }
+@endcode
+ */
+
+namespace flexiblesusy {
+namespace splitmssm_thresholds {
+
+/**
+ * @class Parameters
+ * @brief Parameters for MSSM threshold corrections to the SM or Split-MSSM
+ *
+ * Contains the running MS-bar parameters of the EFT (either the SM or
+ * the Split-MSSM) and the runnign DR-bar parameters of the MSSM. See
+ * arXiv:1407.4081 for the parameter definition.
+ */
+struct Parameters {
+ Parameters();
+
+ double g1, g2, g3; ///< MS-bar gauge couplings in the EFT (GUT normalized)
+ double gt; ///< MS-bar top Yukawa coupling of the SM or Split-MSSM
+ double At; ///< DR-bar trilinear coupling for the stops in the MSSM
+ double mu; ///< bilinear Higgsino coupling
+ double mA; ///< mass of the heavy Higgs doublett
+ double m1; ///< bino mass parameter
+ double m2; ///< wino mass parameter
+ double tan_beta; ///< mixing angle of the heavy Higgs doublett in the MSSM
+ double scale; ///< renormalization scale
+ Eigen::Matrix mq2, mu2, md2, ml2, me2; ///< DR-bar squared soft-breaking sfermion mass parameters in the MSSM
+};
+
+std::ostream& operator<<(std::ostream&, const Parameters&);
+
+double lambda_tree_level(const Parameters&);
+double gYu_tree_level(const Parameters&);
+double gYd_tree_level(const Parameters&);
+double g2u_tree_level(const Parameters&);
+double g2d_tree_level(const Parameters&);
+
+double delta_lambda_1loop_reg(const Parameters&);
+double delta_lambda_1loop_phi(const Parameters&);
+double delta_lambda_1loop_chi_1(const Parameters&);
+double delta_lambda_1loop_chi_1(
+ double scale, double mu, double lambda, double gYu, double gYd,
+ double g2u, double g2d, double m1, double m2);
+double delta_lambda_1loop_chi_2(const Parameters&);
+double delta_lambda_1loop_chi_2(
+ double scale, double mu, double m2, double g1, double g2, double tan_beta);
+double delta_lambda_2loop_phi(const Parameters&);
+double delta_lambda_2loop_phi_HSS(const Parameters&);
+double delta_gYu_1loop(const Parameters&);
+double delta_gYd_1loop(const Parameters&);
+double delta_g2u_1loop(const Parameters&);
+double delta_g2d_1loop(const Parameters&);
+double delta_gt_1loop_chi(
+ double scale, double mu, double gYu, double gYd,
+ double g2u, double g2d, double m1, double m2);
+double delta_m2_1loop_chi(const Parameters&);
+
+} // namespace splitmssm_thresholds
+} // namespace flexiblesusy
+
+#endif