Skip to content

Commit

Permalink
Add initial unit test for EWSB in the semi-analytic CMSSM
Browse files Browse the repository at this point in the history
  • Loading branch information
Dylan Harries committed Jan 26, 2017
1 parent ea2ce1d commit eb1d8cd
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 38 deletions.
3 changes: 3 additions & 0 deletions test/module.mk
Expand Up @@ -148,6 +148,7 @@ ifneq ($(findstring semi_analytic,$(SOLVERS)),)

ifeq ($(WITH_CMSSMSemiAnalytic), yes)
TEST_SRC += \
$(DIR)/test_CMSSMSemiAnalytic_ewsb.cpp \
$(DIR)/test_CMSSMSemiAnalytic_semi_analytic_solutions.cpp
endif

Expand Down Expand Up @@ -762,6 +763,8 @@ $(DIR)/test_NSM_low_scale_constraint.x: $(LIBNSM) $(LIBFLEXI) $(filter-out -%,$(

$(DIR)/test_VCMSSM_ewsb.x: $(LIBVCMSSM) $(LIBCMSSM) $(LIBFLEXI) $(LIBLEGACY) $(filter-out -%,$(LOOPFUNCLIBS))

$(DIR)/test_CMSSMSemiAnalytic_ewsb.x: $(LIBCMSSMSemiAnalytic) $(LIBFLEXI) $(LIBLEGACY) $(filter-out -%,$(LOOPFUNCLIBS))

$(DIR)/test_CMSSMSemiAnalytic_semi_analytic_solutions.x: $(LIBCMSSMSemiAnalytic) $(LIBFLEXI) $(LIBLEGACY) $(filter-out -%,$(LOOPFUNCLIBS))

# general test rule which links all libraries needed for a generated model
Expand Down
49 changes: 48 additions & 1 deletion test/test_CMSSMSemiAnalytic.hpp
Expand Up @@ -7,6 +7,53 @@
#include "wrappers.hpp"
#include "ew_input.hpp"

struct Boundary_values {
double m12{};
double Azero{};
double m0Sq{};
double BMu0{};
double Mu{};
};

void setup_high_scale_CMSSMSemiAnalytic_const(
flexiblesusy:: CMSSMSemiAnalytic_mass_eigenstates& model,
const Boundary_values& values)
{
model.set_TYu(model.get_Yu() * values.Azero);
model.set_TYd(model.get_Yd() * values.Azero);
model.set_TYe(model.get_Ye() * values.Azero);

model.set_mq2(values.m0Sq * UNITMATRIX(3));
model.set_mu2(values.m0Sq * UNITMATRIX(3));
model.set_md2(values.m0Sq * UNITMATRIX(3));
model.set_ml2(values.m0Sq * UNITMATRIX(3));
model.set_me2(values.m0Sq * UNITMATRIX(3));
model.set_mHd2(values.m0Sq);
model.set_mHu2(values.m0Sq);

model.set_MassB(values.m12);
model.set_MassWB(values.m12);
model.set_MassG(values.m12);

model.set_Mu(values.Mu);
model.set_BMu(values.BMu0);
}

void setup_high_scale_CMSSMSemiAnalytic(
flexiblesusy::CMSSMSemiAnalytic_mass_eigenstates& model,
Boundary_values& values)
{
using namespace flexiblesusy;

values.m12 = 300.0;
values.Azero = -200.;
values.m0Sq = Sqr(250);
values.BMu0 = -1.e4;
values.Mu = model.get_Mu();

setup_high_scale_CMSSMSemiAnalytic_const(model, values);
}

void setup_CMSSMSemiAnalytic_const(flexiblesusy::CMSSMSemiAnalytic_mass_eigenstates& m,
const flexiblesusy::CMSSMSemiAnalytic_input_parameters& input)
{
Expand All @@ -25,7 +72,7 @@ void setup_CMSSMSemiAnalytic_const(flexiblesusy::CMSSMSemiAnalytic_mass_eigensta
const double cosBeta = cos(atan(tanBeta));
const double M12 = input.m12;
const double m0 = input.m12;
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;
Expand Down
51 changes: 51 additions & 0 deletions test/test_CMSSMSemiAnalytic_ewsb.cpp
@@ -0,0 +1,51 @@
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE test_CMSSMSemiAnalytic_ewsb

#include <boost/test/unit_test.hpp>

#include "test_CMSSMSemiAnalytic.hpp"
#include "CMSSMSemiAnalytic_semi_analytic_ewsb_solver.hpp"
#include "CMSSMSemiAnalytic_semi_analytic_solutions.hpp"

using namespace flexiblesusy;

BOOST_AUTO_TEST_CASE( test_CMSSMSemiAnalytic_ewsb_tree_level_solution )
{
const double precision = 1.0e-5;
CMSSMSemiAnalytic_input_parameters input;
CMSSMSemiAnalytic_mass_eigenstates model(input);
setup_CMSSMSemiAnalytic(model, input);

const double high_scale = 2.e16;
model.run_to(high_scale);

Boundary_values values;
setup_high_scale_CMSSMSemiAnalytic(model, values);

CMSSMSemiAnalytic_semi_analytic_solutions solns;
solns.set_input_scale(high_scale);
solns.set_output_scale(Electroweak_constants::MZ);
solns.set_AzeroBasis(values.Azero);
solns.set_m12Basis(values.m12);
solns.set_m0SqBasis(values.m0Sq);
solns.set_BMu0Basis(values.BMu0);
solns.set_MuBasis(values.Mu);

solns.calculate_coefficients(model);

model.run_to(Electroweak_constants::MZ);

CMSSMSemiAnalytic_ewsb_solver<Semi_analytic> ewsb_solver;
ewsb_solver.set_loop_order(0);
ewsb_solver.set_semi_analytic_solutions(&solns);
model.set_ewsb_solver(&ewsb_solver);

std::cout << "initially, m0Sq = " << model.get_m0Sq() << '\n';
model.set_ewsb_iteration_precision(precision);
const int error = model.solve_ewsb_tree_level();
std::cout << "finally, m0Sq = " << model.get_m0Sq() << '\n';
BOOST_CHECK_EQUAL(error, 0);

BOOST_CHECK_SMALL(model.get_ewsb_eq_hh_1(), precision);
BOOST_CHECK_SMALL(model.get_ewsb_eq_hh_2(), precision);
}
37 changes: 0 additions & 37 deletions test/test_CMSSMSemiAnalytic_semi_analytic_solutions.cpp
Expand Up @@ -9,37 +9,6 @@

using namespace flexiblesusy;

struct Boundary_values {
double m12{};
double Azero{};
double m0Sq{};
double BMu0{};
double Mu{};
};

void setup_high_scale_CMSSMSemiAnalytic(
CMSSMSemiAnalytic_mass_eigenstates& model, const Boundary_values& values)
{
model.set_TYu(model.get_Yu() * values.Azero);
model.set_TYd(model.get_Yd() * values.Azero);
model.set_TYe(model.get_Ye() * values.Azero);

model.set_mq2(values.m0Sq * UNITMATRIX(3));
model.set_mu2(values.m0Sq * UNITMATRIX(3));
model.set_md2(values.m0Sq * UNITMATRIX(3));
model.set_ml2(values.m0Sq * UNITMATRIX(3));
model.set_me2(values.m0Sq * UNITMATRIX(3));
model.set_mHd2(values.m0Sq);
model.set_mHu2(values.m0Sq);

model.set_MassB(values.m12);
model.set_MassWB(values.m12);
model.set_MassG(values.m12);

model.set_Mu(values.Mu);
model.set_BMu(values.BMu0);
}

BOOST_AUTO_TEST_CASE( test_CMSSMSemiAnalytic_coefficients )
{
CMSSMSemiAnalytic_input_parameters input;
Expand All @@ -50,12 +19,6 @@ BOOST_AUTO_TEST_CASE( test_CMSSMSemiAnalytic_coefficients )
model.run_to(high_scale);

Boundary_values values;
values.m12 = 300.0;
values.Azero = -200.;
values.m0Sq = Sqr(250);
values.BMu0 = -1.e4;
values.Mu = model.get_Mu();

setup_high_scale_CMSSMSemiAnalytic(model, values);

CMSSMSemiAnalytic_semi_analytic_solutions solns;
Expand Down

0 comments on commit eb1d8cd

Please sign in to comment.