Skip to content

Commit

Permalink
relax test pecision on fulfilled EWSB conditions
Browse files Browse the repository at this point in the history
This relaxation is necessary for the new EWSB solving mechanism, where
the EWSB conditions are minimized by the solvers running on a *copy*
of the model object.

The cause of the slightly different EWSB solution is, that the
tree-level mass spectrum is calculated after the EWSB output
parameters have been set.  In other words: The old EWSB algorithm
(where the solvers do not run on a *copy* of the object, but on the
object itself, using the this pointer) leads to the same modified EWSB
solution if one calculates the tree-level spectrum right after the
EWSB output parameters have been set (after solve() has been called).

The changes are minimal if one keeps in mind that the EWSB equations
are of the dimension GeV^3.
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Oct 6, 2016
1 parent 43698a6 commit 8e71e49
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 28 deletions.
2 changes: 1 addition & 1 deletion test/test_CMSSM.hpp
Expand Up @@ -63,7 +63,7 @@ void ensure_n_loop_ewsb(CMSSM<Two_scale>& m, int loop_level)

if (loop_level == 1) {
TEST_CLOSE(m.get_ewsb_eq_hh_1() - m.tadpole_hh(0).real(), 0.0, 0.05);
TEST_CLOSE(m.get_ewsb_eq_hh_2() - m.tadpole_hh(1).real(), 0.0, 0.004);
TEST_CLOSE(m.get_ewsb_eq_hh_2() - m.tadpole_hh(1).real(), 0.0, 0.15);
}
}

Expand Down
6 changes: 3 additions & 3 deletions test/test_CMSSMCPV_ewsb.cpp
Expand Up @@ -108,10 +108,10 @@ BOOST_AUTO_TEST_CASE( test_CMSSMCPV_ewsb_one_loop )
// this reason, tadpole[2] is not exactly zero, even if tadpole[3]
// is exactly zero.

BOOST_CHECK_SMALL(Abs(tadpole[0]), 0.003); // fixed by EWSB
BOOST_CHECK_SMALL(Abs(tadpole[1]), 0.0005); // fixed by EWSB
BOOST_CHECK_SMALL(Abs(tadpole[0]), 0.05); // fixed by EWSB
BOOST_CHECK_SMALL(Abs(tadpole[1]), 0.03); // fixed by EWSB
BOOST_CHECK_SMALL(Abs(tadpole[2]), 4.);
BOOST_CHECK_SMALL(Abs(tadpole[3]), precision); // fixed by EWSB
BOOST_CHECK_SMALL(Abs(tadpole[3]), 0.0004); // fixed by EWSB
}

BOOST_AUTO_TEST_CASE( test_CMSSMCPV_tree_level_tadpoles )
Expand Down
16 changes: 8 additions & 8 deletions test/test_CMSSM_model.cpp
Expand Up @@ -1240,8 +1240,8 @@ void test_ewsb_1loop(CMSSM<Two_scale> model, MssmSoftsusy softSusy)

// one-loop
model.solve_ewsb_one_loop();
TEST_CLOSE(model.get_ewsb_eq_hh_1() - model.tadpole_hh(0).real(), 0.0, 0.006);
TEST_CLOSE(model.get_ewsb_eq_hh_2() - model.tadpole_hh(1).real(), 0.0, 0.006);
TEST_CLOSE(model.get_ewsb_eq_hh_1() - model.tadpole_hh(0).real(), 0.0, 0.02);
TEST_CLOSE(model.get_ewsb_eq_hh_2() - model.tadpole_hh(1).real(), 0.0, 0.05);

softsusy::numRewsbLoops = 1;
softSusy.rewsb(signMu, softSusy.displayDrBarPars().mt, pars);
Expand Down Expand Up @@ -1279,9 +1279,9 @@ void test_ewsb_2loop(CMSSM<Two_scale> model, MssmSoftsusy softSusy)
const auto two_loop_tadpole(model.tadpole_hh_2loop());

TEST_CLOSE(model.get_ewsb_eq_hh_1() - model.tadpole_hh(0).real()
- two_loop_tadpole[0], 0.0, 0.007);
- two_loop_tadpole[0], 0.0, 0.03);
TEST_CLOSE(model.get_ewsb_eq_hh_2() - model.tadpole_hh(1).real()
- two_loop_tadpole[1], 0.0, 0.001);
- two_loop_tadpole[1], 0.0, 0.06);

softsusy::numRewsbLoops = 2;
softSusy.rewsb(signMu, softSusy.displayDrBarPars().mt, pars);
Expand Down Expand Up @@ -1390,13 +1390,13 @@ void test_ewsb_solvers(CMSSM<Two_scale> model, MssmSoftsusy softSusy)
// The newton method does not provide a precise root for this
// point. However, the values for Mu and BMu are close
// enough to the values from Softsusy, see below.
test_precision = 0.01;
test_precision = 0.02;
break;
case 4:
test_precision = 0.006;
test_precision = 0.05;
break;
default:
test_precision = precision;
test_precision = 1.1 * precision;
break;
}

Expand Down Expand Up @@ -1455,7 +1455,7 @@ void compare_self_energy_CP_even_higgs(CMSSM<Two_scale> model,
hh_ss = softSusy.displayPhys().mh0;
hh_fs = model.get_physical().Mhh;

TEST_CLOSE(hh_ss(1), hh_fs(0), 7.0e-7);
TEST_CLOSE(hh_ss(1), hh_fs(0), 4.0e-6);
TEST_CLOSE(hh_ss(2), hh_fs(1), 2.0e-6);
}

Expand Down
15 changes: 3 additions & 12 deletions test/test_CMSSM_susy_scale_constraint.cpp
Expand Up @@ -24,18 +24,9 @@ BOOST_AUTO_TEST_CASE( test_susy_scale_constraint )
CMSSM_susy_scale_constraint<Two_scale> constraint(&m, qedqcd);
constraint.apply();

double tadpole[2];

tadpole[0] = m.get_ewsb_eq_hh_1() - Re(m.tadpole_hh(0));
tadpole[1] = m.get_ewsb_eq_hh_2() - Re(m.tadpole_hh(1));

if (m.get_ewsb_loop_order() > 1) {
const auto two_loop_tadpole(m.tadpole_hh_2loop());
tadpole[0] -= two_loop_tadpole[0];
tadpole[1] -= two_loop_tadpole[1];
}
const auto tadpole = m.tadpole_equations();

// check that EWSB eqs. are fulfilled
BOOST_CHECK_SMALL(std::fabs(tadpole[0]), 0.3);
BOOST_CHECK_SMALL(std::fabs(tadpole[1]), 0.1);
BOOST_CHECK_SMALL(std::fabs(tadpole[0]), 1.0);
BOOST_CHECK_SMALL(std::fabs(tadpole[1]), 2.3);
}
2 changes: 1 addition & 1 deletion test/test_NMSSM.hpp
Expand Up @@ -151,7 +151,7 @@ void ensure_n_loop_ewsb(NMSSM<Two_scale>& m, int loop_level)
} else if (loop_level == 2) {
const auto two_loop_tadpole(m.tadpole_hh_2loop());
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_1() - Re(m.tadpole_hh(0)) - two_loop_tadpole[0], 1.5);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(m.tadpole_hh(1)) - two_loop_tadpole[1], 0.06);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(m.tadpole_hh(1)) - two_loop_tadpole[1], 0.7);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_3() - Re(m.tadpole_hh(2)) - two_loop_tadpole[2], 18.0);
}
}
Expand Down
4 changes: 2 additions & 2 deletions test/test_NMSSM_ewsb.cpp
Expand Up @@ -151,7 +151,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_one_loop_ewsb )
BOOST_CHECK_SMALL(Im(tadpole_hh_3), 1.0e-12);

BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_1() - Re(tadpole_hh_1), 0.9);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(tadpole_hh_2), 0.07);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(tadpole_hh_2), 0.4);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_3() - Re(tadpole_hh_3), 17.0);

softsusy::numRewsbLoops = 1;
Expand Down Expand Up @@ -273,7 +273,7 @@ BOOST_AUTO_TEST_CASE( test_NMSSM_two_loop_ewsb )
BOOST_CHECK_SMALL(Im(tadpole_hh_3), 1.0e-12);

BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_1() - Re(tadpole_hh_1) - two_loop_tadpole[0], 1.5);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(tadpole_hh_2) - two_loop_tadpole[1], 0.06);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_2() - Re(tadpole_hh_2) - two_loop_tadpole[1], 0.7);
BOOST_CHECK_SMALL(m.get_ewsb_eq_hh_3() - Re(tadpole_hh_3) - two_loop_tadpole[2], 18.0);

softsusy::numRewsbLoops = 2;
Expand Down
2 changes: 1 addition & 1 deletion test/test_NMSSM_susy_scale_constraint.cpp
Expand Up @@ -61,6 +61,6 @@ BOOST_AUTO_TEST_CASE( test_susy_scale_constraint )

// check that tree-level EWSB eqs. are fulfilled
BOOST_CHECK_LT(std::fabs(tadpole[0]), 0.66);
BOOST_CHECK_LT(std::fabs(tadpole[1]), 0.03);
BOOST_CHECK_LT(std::fabs(tadpole[1]), 0.3);
BOOST_CHECK_LT(std::fabs(tadpole[2]), 23.0);
}

0 comments on commit 8e71e49

Please sign in to comment.