diff --git a/README b/README index 553403b26..ac1980c3b 100644 --- a/README +++ b/README @@ -19,7 +19,7 @@ Requirements * C++ compiler (g++ >= 4.7.2 or clang++ >= 3.1 or icpc >= 12.1) * Fortran compiler (gfortran, ifort) * Mathematica (version 7.0 or higher) - * SARAH (version 4.0.4 or higher) http://sarah.hepforge.org + * SARAH (version 4.10.2 or higher) http://sarah.hepforge.org * Boost (version 1.37.0 or higher) http://www.boost.org * Eigen 3 (version 3.1 or higher) http://eigen.tuxfamily.org * GNU scientific library http://www.gnu.org/software/gsl/ diff --git a/configure b/configure index a5c810351..759259eee 100755 --- a/configure +++ b/configure @@ -239,8 +239,8 @@ required_mathematica_version="7" # required SARAH version required_sarah_major="4" -required_sarah_minor="0" -required_sarah_patch="4" +required_sarah_minor="10" +required_sarah_patch="2" required_sarah_version="${required_sarah_major}.${required_sarah_minor}.${required_sarah_patch}" SARAH_VERSION="unknown" SARAH_MAJOR="0" diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index bd9a9aaa7..d9f0b53a7 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -109,6 +109,7 @@ FlexibleSUSY model file (FlexibleSUSY.m). MZMSbar; MWMSbar; EDRbar; +EMSbar; ThetaWDRbar; SCALE; THRESHOLD; diff --git a/model_files/CMSSMNoFV/FlexibleSUSY.m.in b/model_files/CMSSMNoFV/FlexibleSUSY.m.in index b3b8dd34e..d27a3241a 100644 --- a/model_files/CMSSMNoFV/FlexibleSUSY.m.in +++ b/model_files/CMSSMNoFV/FlexibleSUSY.m.in @@ -197,8 +197,3 @@ SMParticles = { Fu, Fd, Fc, Fs, Ft, Fb, Fe, Fm, Ftau, Fve, Fvm, Fvt, gG, gP, gZ, gWm, gWmC }; - -SA`Casimir[Ss, SARAH`color] = 4/3; -SA`Casimir[Sc, SARAH`color] = 4/3; -SA`Casimir[Sb, SARAH`color] = 4/3; -SA`Casimir[St, SARAH`color] = 4/3; diff --git a/model_files/MSSMNoFV/FlexibleSUSY.m.in b/model_files/MSSMNoFV/FlexibleSUSY.m.in index f1c1a0238..21ed47e51 100644 --- a/model_files/MSSMNoFV/FlexibleSUSY.m.in +++ b/model_files/MSSMNoFV/FlexibleSUSY.m.in @@ -224,8 +224,3 @@ SMParticles = { VectorP, VectorZ, VectorG, VectorW, Fu, Fd, Fc, Fs, Ft, Fb, Fe, Fm, Ftau, Fve, Fvm, Fvt }; - -SA`Casimir[Ss, SARAH`color] = 4/3; -SA`Casimir[Sc, SARAH`color] = 4/3; -SA`Casimir[Sb, SARAH`color] = 4/3; -SA`Casimir[St, SARAH`color] = 4/3; diff --git a/model_files/MSSMNoFVSLHA2/FlexibleSUSY.m.in b/model_files/MSSMNoFVSLHA2/FlexibleSUSY.m.in index fbf40d2cd..258c5968d 100644 --- a/model_files/MSSMNoFVSLHA2/FlexibleSUSY.m.in +++ b/model_files/MSSMNoFVSLHA2/FlexibleSUSY.m.in @@ -176,8 +176,3 @@ SMParticles = { VectorP, VectorZ, VectorG, VectorW, Fu, Fd, Fc, Fs, Ft, Fb, Fe, Fm, Ftau, Fve, Fvm, Fvt }; - -SA`Casimir[Ss, SARAH`color] = 4/3; -SA`Casimir[Sc, SARAH`color] = 4/3; -SA`Casimir[Sb, SARAH`color] = 4/3; -SA`Casimir[St, SARAH`color] = 4/3; diff --git a/model_files/MSSMNoFVatMGUT/FlexibleSUSY.m.in b/model_files/MSSMNoFVatMGUT/FlexibleSUSY.m.in index 8ed5b98fb..4dfbc3913 100644 --- a/model_files/MSSMNoFVatMGUT/FlexibleSUSY.m.in +++ b/model_files/MSSMNoFVatMGUT/FlexibleSUSY.m.in @@ -218,8 +218,3 @@ SMParticles = { VectorP, VectorZ, VectorG, VectorW, Fu, Fd, Fc, Fs, Ft, Fb, Fe, Fm, Ftau, Fve, Fvm, Fvt }; - -SA`Casimir[Ss, SARAH`color] = 4/3; -SA`Casimir[Sc, SARAH`color] = 4/3; -SA`Casimir[Sb, SARAH`color] = 4/3; -SA`Casimir[St, SARAH`color] = 4/3; diff --git a/model_files/MSSMNoFVtower/FlexibleSUSY.m.in b/model_files/MSSMNoFVtower/FlexibleSUSY.m.in index 2b6350b2c..de9aa5023 100644 --- a/model_files/MSSMNoFVtower/FlexibleSUSY.m.in +++ b/model_files/MSSMNoFVtower/FlexibleSUSY.m.in @@ -234,8 +234,3 @@ SMParticles = { VectorP, VectorZ, VectorG, VectorW, Fu, Fd, Fc, Fs, Ft, Fb, Fe, Fm, Ftau, Fve, Fvm, Fvt }; - -SA`Casimir[Ss, SARAH`color] = 4/3; -SA`Casimir[Sc, SARAH`color] = 4/3; -SA`Casimir[Sb, SARAH`color] = 4/3; -SA`Casimir[St, SARAH`color] = 4/3; diff --git a/src/wrappers.hpp b/src/wrappers.hpp index 8269c6c0b..c98eef872 100644 --- a/src/wrappers.hpp +++ b/src/wrappers.hpp @@ -43,7 +43,7 @@ namespace flexiblesusy { static constexpr double Pi = M_PI; -static constexpr double oneOver16PiSqr = 1./(16. * M_PI * M_PI); +static constexpr double oneOver16PiSqr = 1./(16. * Pi * Pi); static constexpr double oneLoop = oneOver16PiSqr; static constexpr double twoLoop = oneOver16PiSqr * oneOver16PiSqr; static constexpr double threeLoop = oneOver16PiSqr * oneOver16PiSqr * oneOver16PiSqr; diff --git a/templates/librarylink.cpp.in b/templates/librarylink.cpp.in index 08b1fafec..63b56678c 100644 --- a/templates/librarylink.cpp.in +++ b/templates/librarylink.cpp.in @@ -690,6 +690,7 @@ void Model_data_impl::calculate_spectrum() scales.HighScale = spectrum_generator.get_high_scale(); scales.SUSYScale = spectrum_generator.get_susy_scale(); scales.LowScale = spectrum_generator.get_low_scale(); + scales.pole_mass_scale = spectrum_generator.get_pole_mass_scale(); } /******************************************************************/ @@ -697,7 +698,7 @@ void Model_data_impl::calculate_spectrum() template void Model_data_impl::calculate_model_observables() { - observables = calculate_observables(std::get<0>(models), qedqcd, physical_input); + observables = calculate_observables(std::get<0>(models), qedqcd, physical_input, scales.pole_mass_scale); } /******************************************************************/ diff --git a/templates/observables.cpp.in b/templates/observables.cpp.in index 5dad100ca..9f2cb90db 100644 --- a/templates/observables.cpp.in +++ b/templates/observables.cpp.in @@ -77,6 +77,17 @@ void @ModelName@_observables::set(const Eigen::ArrayXd& vec) @setObservables@ } +@ModelName@_observables calculate_observables(const @ModelName@_mass_eigenstates& model, + const softsusy::QedQcd& qedqcd, + const Physical_input& physical_input, + double scale) +{ + auto model_at_scale = model; + model_at_scale.run_to(scale); + + return calculate_observables(model_at_scale, qedqcd, physical_input); +} + @ModelName@_observables calculate_observables(const @ModelName@_mass_eigenstates& model, const softsusy::QedQcd& qedqcd, const Physical_input& physical_input) diff --git a/templates/observables.hpp.in b/templates/observables.hpp.in index 9ec275b10..6e4ed5221 100644 --- a/templates/observables.hpp.in +++ b/templates/observables.hpp.in @@ -46,7 +46,13 @@ struct @ModelName@_observables { @observablesDef@ }; -@ModelName@_observables calculate_observables(const @ModelName@_mass_eigenstates&, const softsusy::QedQcd&, const Physical_input&); +@ModelName@_observables calculate_observables( + const @ModelName@_mass_eigenstates&, const softsusy::QedQcd&, + const Physical_input&); + +@ModelName@_observables calculate_observables( + const @ModelName@_mass_eigenstates&, const softsusy::QedQcd&, + const Physical_input&, double scale); } // namespace flexiblesusy diff --git a/templates/run.cpp.in b/templates/run.cpp.in index 7fa2f4169..cf86ff4b0 100644 --- a/templates/run.cpp.in +++ b/templates/run.cpp.in @@ -83,10 +83,11 @@ int run_solver(flexiblesusy::@ModelName@_slha_io& slha_io, scales.HighScale = spectrum_generator.get_high_scale(); scales.SUSYScale = spectrum_generator.get_susy_scale(); scales.LowScale = spectrum_generator.get_low_scale(); + scales.pole_mass_scale = spectrum_generator.get_pole_mass_scale(); @ModelName@_observables observables; if (spectrum_generator_settings.get(Spectrum_generator_settings::calculate_observables)) - observables = calculate_observables(std::get<0>(models), qedqcd, physical_input); + observables = calculate_observables(std::get<0>(models), qedqcd, physical_input, scales.pole_mass_scale); const bool show_result = !problems.have_problem() || spectrum_generator_settings.get(Spectrum_generator_settings::force_output); diff --git a/templates/run_cmd_line.cpp.in b/templates/run_cmd_line.cpp.in index 1b902403d..7baa744b2 100644 --- a/templates/run_cmd_line.cpp.in +++ b/templates/run_cmd_line.cpp.in @@ -94,9 +94,10 @@ int run_solver(const @ModelName@_input_parameters& input) scales.HighScale = spectrum_generator.get_high_scale(); scales.SUSYScale = spectrum_generator.get_susy_scale(); scales.LowScale = spectrum_generator.get_low_scale(); + scales.pole_mass_scale = spectrum_generator.get_pole_mass_scale(); const auto observables = calculate_observables( - model, qedqcd, physical_input); + model, qedqcd, physical_input, scales.pole_mass_scale); // SLHA output SLHAea::Coll slhaea(@ModelName@_slha_io::fill_slhaea( diff --git a/templates/slha_io.hpp.in b/templates/slha_io.hpp.in index da137a0eb..d9a337656 100644 --- a/templates/slha_io.hpp.in +++ b/templates/slha_io.hpp.in @@ -60,8 +60,8 @@ template class @ModelName@; struct @ModelName@_scales { - @ModelName@_scales() : HighScale(0.), SUSYScale(0.), LowScale(0.) {} - double HighScale, SUSYScale, LowScale; + double HighScale{0.}, SUSYScale{0.}, LowScale{0.}; + double pole_mass_scale{0.}; }; class @ModelName@_slha_io { diff --git a/templates/standard_model_two_scale_high_scale_initial_guesser.cpp.in b/templates/standard_model_two_scale_high_scale_initial_guesser.cpp.in index 1ba4cd435..376376bbf 100644 --- a/templates/standard_model_two_scale_high_scale_initial_guesser.cpp.in +++ b/templates/standard_model_two_scale_high_scale_initial_guesser.cpp.in @@ -113,9 +113,9 @@ void @ModelName@_standard_model_initial_guesser::guess_eft_parameters // guess gauge couplings at mt const auto alpha_sm(leAtMt.getGaugeMu(mtpole, sinThetaW2)); - eft->set_g1(sqrt(4.0 * M_PI * alpha_sm(0))); - eft->set_g2(sqrt(4.0 * M_PI * alpha_sm(1))); - eft->set_g3(sqrt(4.0 * M_PI * alpha_sm(2))); + eft->set_g1(sqrt(4.0 * Pi * alpha_sm(0))); + eft->set_g2(sqrt(4.0 * Pi * alpha_sm(1))); + eft->set_g3(sqrt(4.0 * Pi * alpha_sm(2))); eft->set_scale(mtpole); eft->set_v(246.22); diff --git a/templates/standard_model_two_scale_low_scale_initial_guesser.cpp.in b/templates/standard_model_two_scale_low_scale_initial_guesser.cpp.in index 93ac34607..8e0d051de 100644 --- a/templates/standard_model_two_scale_low_scale_initial_guesser.cpp.in +++ b/templates/standard_model_two_scale_low_scale_initial_guesser.cpp.in @@ -107,9 +107,9 @@ void @ModelName@_standard_model_initial_guesser::guess_eft_parameters // guess gauge couplings at mt const auto alpha_sm(leAtMt.getGaugeMu(mtpole, sinThetaW2)); - eft->set_g1(sqrt(4.0 * M_PI * alpha_sm(0))); - eft->set_g2(sqrt(4.0 * M_PI * alpha_sm(1))); - eft->set_g3(sqrt(4.0 * M_PI * alpha_sm(2))); + eft->set_g1(sqrt(4.0 * Pi * alpha_sm(0))); + eft->set_g2(sqrt(4.0 * Pi * alpha_sm(1))); + eft->set_g3(sqrt(4.0 * Pi * alpha_sm(2))); eft->set_scale(mtpole); eft->set_v(246.22); diff --git a/templates/two_scale_low_scale_constraint.cpp.in b/templates/two_scale_low_scale_constraint.cpp.in index 712320b81..72ecd9f50 100644 --- a/templates/two_scale_low_scale_constraint.cpp.in +++ b/templates/two_scale_low_scale_constraint.cpp.in @@ -53,10 +53,12 @@ namespace flexiblesusy { #define SCALE model->get_scale() #define MODEL model #define MODELCLASSNAME @ModelName@ -#define MWMSbar mWrun -#define MWDRbar mWrun -#define MZMSbar mZrun -#define MZDRbar mZrun +#define MWMSbar mW_run +#define MWDRbar mW_run +#define MZMSbar mZ_run +#define MZDRbar mZ_run +#define EDRbar e_run +#define EMSbar e_run #define CKM ckm #define PMNS pmns #define THETAW theta_w @@ -138,10 +140,10 @@ void @ModelName@_low_scale_constraint::clear() ckm.setIdentity(); pmns.setIdentity(); neutrinoDRbar.setZero(); - mWrun = 0.; - mZrun = 0.; + mW_run = 0.; + mZ_run = 0.; AlphaS = 0.; - EDRbar = 0.; + e_run = 0.; ThetaWDRbar = 0.; new_g1 = 0.; new_g2 = 0.; @@ -159,10 +161,10 @@ void @ModelName@_low_scale_constraint::initialize() ckm = qedqcd.get_complex_ckm(); pmns = qedqcd.get_complex_pmns(); neutrinoDRbar = Eigen::Matrix::Zero(); - mWrun = 0.; - mZrun = 0.; + mW_run = 0.; + mZ_run = 0.; AlphaS = 0.; - EDRbar = 0.; + e_run = 0.; ThetaWDRbar = 0.; new_g1 = 0.; new_g2 = 0.; @@ -206,16 +208,16 @@ void @ModelName@_low_scale_constraint::calculate_threshold_correction const double e_drbar = Sqrt(4.0 * Pi * alpha_em_drbar); // interface variables - mZrun = mz_pole; - mWrun = mw_pole; + mZ_run = mz_pole; + mW_run = mw_pole; if (model->get_thresholds()) { - mZrun = model->calculate_M@VectorZ@_DRbar(mz_pole); - mWrun = model->calculate_M@VectorW@_DRbar(mw_pole); + mZ_run = model->calculate_M@VectorZ@_DRbar(mz_pole); + mW_run = model->calculate_M@VectorW@_DRbar(mw_pole); } AlphaS = alpha_s_drbar; - EDRbar = e_drbar; + e_run = e_drbar; ThetaWDRbar = calculate_theta_w(alpha_em_drbar); } diff --git a/templates/two_scale_low_scale_constraint.hpp.in b/templates/two_scale_low_scale_constraint.hpp.in index 3e39e322e..770df6c39 100644 --- a/templates/two_scale_low_scale_constraint.hpp.in +++ b/templates/two_scale_low_scale_constraint.hpp.in @@ -61,10 +61,10 @@ private: Eigen::Matrix,3,3> ckm{Eigen::Matrix,3,3>::Identity()}; Eigen::Matrix,3,3> pmns{Eigen::Matrix,3,3>::Identity()}; Eigen::Matrix neutrinoDRbar{Eigen::Matrix::Zero()}; - double mWrun{0.}; - double mZrun{0.}; + double mW_run{0.}; + double mZ_run{0.}; double AlphaS{0.}; - double EDRbar{0.}; + double e_run{0.}; double ThetaWDRbar{0.}; double new_g1{0.}, new_g2{0.}, new_g3{0.}; double self_energy_w_at_mw{0.};