Skip to content

Commit

Permalink
adapting NMSSM tests so they pass
Browse files Browse the repository at this point in the history
Note: The default NMSSM parameter point contains tachyons.  In that
case FS's A0() functions return a different result from SOFTSUSY.
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Mar 21, 2018
1 parent 257606f commit bedcd47
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 35 deletions.
4 changes: 2 additions & 2 deletions test/test_NMSSM.hpp
Expand Up @@ -28,12 +28,12 @@ void setup_NMSSM_const(NMSSM<Two_scale>& m, NmssmSoftsusy& s, const NMSSM_input_
const double cosBeta = cos(atan(tanBeta));
const double M12 = input.m12;
const double m0 = input.m0;
const double a0 = input.Azero + 100;
const double a0 = input.Azero;
const double root2 = sqrt(2.0);
const double vev = 246.0;
const double vu = vev * sinBeta;
const double vd = vev * cosBeta;
const double vS = 1000.;
const double vS = input.m0;
const double susyMu = 0;
const double BMu = 0;
const double scale = Electroweak_constants::MZ;
Expand Down
37 changes: 24 additions & 13 deletions test/test_NMSSM_ewsb.cpp
Expand Up @@ -67,22 +67,31 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_ewsb_tree_level_via_soft_higgs_masses )
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_3(), 1.0e-09);
}

BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_tadpoles )
NMSSM_input_parameters make_input()
{
NMSSM_input_parameters input;
input.m0 = 250.; // avoids tree-level tachyons
input.m0 = 200.;
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
input.TanBeta = 2.;
input.Azero = 10.;
input.LambdaInput = 0.1;
input.SignvS = 1;

return input;
}

BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_tadpoles )
{
const NMSSM_input_parameters input = make_input();
NMSSM<Two_scale> m(input);
NmssmSoftsusy s;
setup_NMSSM_const(m, s, input);

s.calcDrBarPars();
m.calculate_DRbar_masses();

BOOST_REQUIRE(!m.get_problems().have_running_tachyon());

const double mt = s.displayDrBarPars().mt;
const double sinthDRbar = s.calcSinthdrbar();
const double vd = m.get_vd();
Expand All @@ -101,6 +110,14 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_tadpoles )
BOOST_CHECK_CLOSE(vu, s.displayHvev()*Sin(ArcTan(s.displayTanb())), 1.0e-11);
BOOST_CHECK_CLOSE(vS, s.displaySvev(), 1.0e-11);

BOOST_CHECK_CLOSE(m.get_Lambdax(), s.displayLambda(), 1.0e-11);
BOOST_CHECK_CLOSE(m.get_Kappa() , s.displayKappa() , 1.0e-11);
BOOST_CHECK_CLOSE(m.get_g1() , s.displayGaugeCoupling(1), 1.0e-11);
BOOST_CHECK_CLOSE(m.get_g2() , s.displayGaugeCoupling(2), 1.0e-11);
BOOST_CHECK_CLOSE(m.get_TLambdax() , s.displayTrialambda() , 1.0e-11);
BOOST_CHECK_SMALL(s.displaySusyMu(), 1.0e-15);
BOOST_CHECK_SMALL(s.displayMupr() , 1.0e-15);

BOOST_CHECK_SMALL(Im(tadpole_hh_1), 1.0e-12);
BOOST_CHECK_SMALL(Im(tadpole_hh_2), 1.0e-12);
BOOST_CHECK_SMALL(Im(tadpole_hh_3), 1.0e-12);
Expand All @@ -113,7 +130,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_tadpoles )
BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_ewsb )
{
NMSSM_input_parameters input;
input.m0 = 250.; // avoids tree-level tachyons
input.m0 = 250.;
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
Expand Down Expand Up @@ -176,13 +193,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_ewsb )

BOOST_AUTO_TEST_CASE( test_NMSSM_two_loop_tadpoles )
{
NMSSM_input_parameters input;
input.m0 = 250.; // avoids tree-level tachyons
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
input.LambdaInput = 0.1;
input.SignvS = 1;
const NMSSM_input_parameters input = make_input();
NMSSM<Two_scale> m(input);
NmssmSoftsusy s;
setup_NMSSM_const(m, s, input);
Expand Down Expand Up @@ -232,7 +243,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_two_loop_tadpoles )
BOOST_AUTO_TEST_CASE( test_NMSSM_two_loop_ewsb )
{
NMSSM_input_parameters input;
input.m0 = 300.; // avoids tree-level tachyons
input.m0 = 300.;
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
Expand Down
45 changes: 27 additions & 18 deletions test/test_NMSSM_low_scale_constraint.cpp
Expand Up @@ -47,18 +47,25 @@ BOOST_AUTO_TEST_CASE( test_delta_alpha )
BOOST_CHECK_CLOSE_FRACTION(delta_alpha_s_fs , delta_alpha_s_ss , 1.0e-12);
}

BOOST_AUTO_TEST_CASE( test_low_energy_constraint )
NMSSM_input_parameters make_input()
{
NMSSM<Two_scale> m;
m.set_thresholds(2);
NmssmSoftsusy s;
NMSSM_input_parameters input;
input.m0 = 250.; // avoids tree-level tachyons
input.m0 = 200.;
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
input.TanBeta = 2.;
input.Azero = 10.;
input.LambdaInput = 0.1;
input.SignvS = 1;

return input;
}

BOOST_AUTO_TEST_CASE( test_low_energy_constraint )
{
NMSSM<Two_scale> m;
m.set_thresholds(2);
NmssmSoftsusy s;
const NMSSM_input_parameters input = make_input();
QedQcd qedqcd;
qedqcd.setPoleMt(175.); // non-default
qedqcd.setMass(mBottom, 4.3); // non-default
Expand All @@ -85,15 +92,15 @@ BOOST_AUTO_TEST_CASE( test_low_energy_constraint )
const double fs_mt = m.calculate_MFu_DRbar(qedqcd.displayPoleMt(), 2);
const double fs_mb = m.calculate_MFd_DRbar(qedqcd.displayMass(mBottom), 2);
const double fs_me = m.calculate_MFe_DRbar(qedqcd.displayMass(mTau), 2);
const double fs_MZ = m.calculate_MVZ_DRbar(Electroweak_constants::MZ);
const double fs_MZ = AbsSqrt(m.calculate_M2VZ_DRbar(Electroweak_constants::MZ));
const double fs_old_vd = m.get_vd();
const double fs_old_vu = m.get_vu();
// const double fs_old_vev = Sqrt(Sqr(fs_old_vu) + Sqr(fs_old_vd));
const double fs_new_vd = (2*fs_MZ)/(Sqrt(0.6*Sqr(g1) + Sqr(g2))*Sqrt(1 + Sqr(TanBeta)));
const double fs_new_vu = (2*fs_MZ*TanBeta)/(Sqrt(0.6*Sqr(g1) + Sqr(g2))*Sqrt(1 + Sqr(TanBeta)));
const double fs_new_vev = Sqrt(Sqr(fs_new_vu) + Sqr(fs_new_vd));

BOOST_CHECK_CLOSE_FRACTION(fs_mt, ss_mt, 9.5e-05);
BOOST_CHECK_CLOSE_FRACTION(fs_mt, ss_mt, 1.0e-04);
BOOST_CHECK_CLOSE_FRACTION(fs_mb, ss_mb, 1.0e-10);
BOOST_CHECK_CLOSE_FRACTION(fs_me, ss_me, 2.1e-04);
BOOST_CHECK_CLOSE_FRACTION(fs_MZ, ss_MZ, 5.0e-10);
Expand Down Expand Up @@ -128,18 +135,20 @@ BOOST_AUTO_TEST_CASE( test_low_energy_constraint )
// Yukawa couplings. We use the old vev (= combination of vu, vd
// from the last run) to calculate the Yukawa couplings.

const double eps = 0.02;

BOOST_TEST_MESSAGE("testing diagonal yukawa elements");
BOOST_CHECK_CLOSE_FRACTION(m.get_Yu()(0,0), s.displayYukawaMatrix(YU)(1,1), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yd()(0,0), s.displayYukawaMatrix(YD)(1,1), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Ye()(0,0), s.displayYukawaMatrix(YE)(1,1), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yu()(0,0), s.displayYukawaMatrix(YU)(1,1), eps);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yd()(0,0), s.displayYukawaMatrix(YD)(1,1), eps);
BOOST_CHECK_CLOSE_FRACTION(m.get_Ye()(0,0), s.displayYukawaMatrix(YE)(1,1), eps);

BOOST_CHECK_CLOSE_FRACTION(m.get_Yu()(1,1), s.displayYukawaMatrix(YU)(2,2), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yd()(1,1), s.displayYukawaMatrix(YD)(2,2), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Ye()(1,1), s.displayYukawaMatrix(YE)(2,2), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yu()(1,1), s.displayYukawaMatrix(YU)(2,2), eps);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yd()(1,1), s.displayYukawaMatrix(YD)(2,2), eps);
BOOST_CHECK_CLOSE_FRACTION(m.get_Ye()(1,1), s.displayYukawaMatrix(YE)(2,2), eps);

BOOST_CHECK_CLOSE_FRACTION(m.get_Yu()(2,2), s.displayYukawaMatrix(YU)(3,3), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yd()(2,2), s.displayYukawaMatrix(YD)(3,3), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Ye()(2,2), s.displayYukawaMatrix(YE)(3,3), 0.005);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yu()(2,2), s.displayYukawaMatrix(YU)(3,3), eps);
BOOST_CHECK_CLOSE_FRACTION(m.get_Yd()(2,2), s.displayYukawaMatrix(YD)(3,3), eps);
BOOST_CHECK_CLOSE_FRACTION(m.get_Ye()(2,2), s.displayYukawaMatrix(YE)(3,3), eps);

BOOST_TEST_MESSAGE("testing running VEV");
const double running_vev = Sqrt(Sqr(m.get_vu()) + Sqr(m.get_vd()));
Expand Down
2 changes: 1 addition & 1 deletion test/test_NMSSM_one_loop_spectrum.cpp
Expand Up @@ -86,7 +86,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_pole_masses )
input.m0 = 250.;
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
input.Azero = -400.;
input.LambdaInput = 0.1;
input.SignvS = 1;
NMSSM<Two_scale> m;
Expand Down
4 changes: 3 additions & 1 deletion test/test_NMSSM_tree_level_spectrum.cpp
Expand Up @@ -19,12 +19,14 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_tree_level_masses )
input.m0 = 250.;
input.m12 = 200.;
input.TanBeta = 10.;
input.Azero = -500.;
input.Azero = -400.;
input.LambdaInput = 0.1;
input.SignvS = 1;
NMSSM<Two_scale> m;
NmssmSoftsusy s;
setup_NMSSM_const(m, s, input);
m.set_vS(1000.);
s.setSvev(1000.);

m.calculate_DRbar_masses();
s.calcDrBarPars();
Expand Down

0 comments on commit bedcd47

Please sign in to comment.