From 478daaa43842dc940d88e6a5a0e17468e59e7814 Mon Sep 17 00:00:00 2001 From: Dylan Harries Date: Tue, 24 Jan 2017 10:08:38 +1030 Subject: [PATCH] Throw exception if model pointer is not set rather than using asserts --- ...semi_analytic_high_scale_constraint.cpp.in | 21 +++++--- ...semi_analytic_high_scale_constraint.hpp.in | 2 + .../semi_analytic_low_scale_constraint.cpp.in | 52 ++++++++----------- .../semi_analytic_low_scale_constraint.hpp.in | 1 + ...analytic_soft_parameters_constraint.cpp.in | 20 +++---- ...analytic_soft_parameters_constraint.hpp.in | 2 + ...semi_analytic_susy_scale_constraint.cpp.in | 20 +++---- ...semi_analytic_susy_scale_constraint.hpp.in | 2 + 8 files changed, 66 insertions(+), 54 deletions(-) diff --git a/templates/semi_analytic_high_scale_constraint.cpp.in b/templates/semi_analytic_high_scale_constraint.cpp.in index 6ac6a9ccb..a0a7e19bb 100644 --- a/templates/semi_analytic_high_scale_constraint.cpp.in +++ b/templates/semi_analytic_high_scale_constraint.cpp.in @@ -30,11 +30,12 @@ #include "threshold_loop_functions.hpp" #include "numerics2.hpp" -#include #include #include #include +namespace flexiblesusy { + #define DERIVEDPARAMETER(p) model->p() #define EXTRAPARAMETER(p) model->get_##p() #define INPUTPARAMETER(p) model->get_input().p @@ -66,8 +67,7 @@ void @ModelName@_high_scale_constraint::apply() { - assert(model && "Error: @ModelName@_high_scale_constraint::" - "apply():model pointer must not be zero"); + check_model_ptr(); @temporarySetting@ @@ -109,8 +109,7 @@ void @ModelName@_high_scale_constraint::clear() void @ModelName@_high_scale_constraint::initialize() { - assert(model && "@ModelName@_high_scale_constraint::" - "initialize(): model pointer is zero."); + check_model_ptr(); @scaleGuess@ scale = initial_scale_guess; @@ -118,8 +117,7 @@ void @ModelName@_high_scale_constraint::initialize() void @ModelName@_high_scale_constraint::update_scale() { - assert(model && "@ModelName@_high_scale_constraint::" - "update_scale(): model pointer is zero."); + check_model_ptr(); const double currentScale = model->get_scale(); const @ModelName@_soft_parameters beta_functions(model->calc_beta()); @@ -140,4 +138,13 @@ void @ModelName@_high_scale_constraint::update_scale() @restrictScale@ @updateSemiAnalyticConstraint@ + } + +void @ModelName@_high_scale_constraint::check_model_ptr() const +{ + if (!model) + throw SetupError("@ModelName@_high_scale_constraint: " + "model pointer is zero!"); } + +} // namespace flexiblesusy diff --git a/templates/semi_analytic_high_scale_constraint.hpp.in b/templates/semi_analytic_high_scale_constraint.hpp.in index 0d7bb7ad9..6ef3a45f3 100644 --- a/templates/semi_analytic_high_scale_constraint.hpp.in +++ b/templates/semi_analytic_high_scale_constraint.hpp.in @@ -59,6 +59,8 @@ private: double initial_scale_guess{0.}; @ModelName@* model{nullptr}; @semiAnalyticConstraint@ + + void check_model_ptr() const; }; } // namespace flexiblesusy diff --git a/templates/semi_analytic_low_scale_constraint.cpp.in b/templates/semi_analytic_low_scale_constraint.cpp.in index 2033a6c92..4b0e7ef30 100644 --- a/templates/semi_analytic_low_scale_constraint.cpp.in +++ b/templates/semi_analytic_low_scale_constraint.cpp.in @@ -30,7 +30,6 @@ #include "threshold_loop_functions.hpp" #include "weinberg_angle.hpp" -#include #include #include @@ -74,8 +73,7 @@ namespace flexiblesusy { void @ModelName@_low_scale_constraint::apply() { - assert(model && "Error: @ModelName@_low_scale_constraint::" - "apply():model pointer must not be zero"); + check_model_ptr(); @temporarySetting@ @@ -117,8 +115,7 @@ void @ModelName@_low_scale_constraint::clear() void @ModelName@_low_scale_constraint::initialize() { - assert(model && "@ModelName@_low_scale_constraint::" - "initialize(): model pointer is zero."); + check_model_ptr(); @scaleGuess@ scale = initial_scale_guess; @@ -138,8 +135,7 @@ void @ModelName@_low_scale_constraint::initialize() void @ModelName@_low_scale_constraint::update_scale() { - assert(model && "@ModelName@_low_scale_constraint::" - "update_scale(): model pointer is zero."); + check_model_ptr(); @calculateScale@ @restrictScale@ @@ -148,12 +144,13 @@ void @ModelName@_low_scale_constraint::update_scale() void @ModelName@_low_scale_constraint::calculate_threshold_corrections() { - assert(qedqcd.get_scale() == get_scale() && "Error: low-energy data" + check_model_ptr(); + + if (qedqcd.get_scale() != get_scale()) + throw SetupError("Error: low-energy data" " set is not defined at the same scale as the low-energy" " constraint. You need to run the low-energy data set to this" " scale!"); - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_threshold_corrections(): model pointer is zero"); const double alpha_em = qedqcd.displayAlpha(softsusy::ALPHA); const double alpha_s = qedqcd.displayAlpha(softsusy::ALPHAS); @@ -188,8 +185,7 @@ void @ModelName@_low_scale_constraint::calculate_threshold_correc double @ModelName@_low_scale_constraint::calculate_theta_w(double alpha_em_drbar) { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_theta_w(): model pointer is zero"); + check_model_ptr(); double theta_w = 0.; @@ -200,9 +196,7 @@ double @ModelName@_low_scale_constraint::calculate_theta_w(double void @ModelName@_low_scale_constraint::calculate_DRbar_gauge_couplings() { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_DRbar_gauge_couplings(): model pointer is zero"); - + check_model_ptr(); calculate_threshold_corrections(); @calculateGaugeCouplings@ @@ -226,8 +220,7 @@ void @ModelName@_low_scale_constraint::calculate_DRbar_gauge_coup double @ModelName@_low_scale_constraint::calculate_delta_alpha_em(double alphaEm) const { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_delta_alpha_em(): model pointer is zero"); + check_model_ptr(); const double currentScale = model->get_scale(); @calculateDeltaAlphaEm@ @@ -235,8 +228,7 @@ double @ModelName@_low_scale_constraint::calculate_delta_alpha_em double @ModelName@_low_scale_constraint::calculate_delta_alpha_s(double alphaS) const { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_delta_alpha_s(): model pointer is zero"); + check_model_ptr(); const double currentScale = model->get_scale(); @calculateDeltaAlphaS@ @@ -251,8 +243,7 @@ void @ModelName@_low_scale_constraint::calculate_DRbar_yukawa_cou void @ModelName@_low_scale_constraint::calculate_@UpYukawa@_DRbar() { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_@UpYukawa@_DRbar(): model pointer is zero"); + check_model_ptr(); Eigen::Matrix,3,3> upQuarksDRbar(ZEROMATRIXCOMPLEX(3,3)); upQuarksDRbar(0,0) = qedqcd.displayMass(softsusy::mUp); @@ -268,8 +259,7 @@ void @ModelName@_low_scale_constraint::calculate_@UpYukawa@_DRbar void @ModelName@_low_scale_constraint::calculate_@DownYukawa@_DRbar() { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_@DownYukawa@_DRbar(): model pointer is zero"); + check_model_ptr(); Eigen::Matrix,3,3> downQuarksDRbar(ZEROMATRIXCOMPLEX(3,3)); downQuarksDRbar(0,0) = qedqcd.displayMass(softsusy::mDown); @@ -285,8 +275,7 @@ void @ModelName@_low_scale_constraint::calculate_@DownYukawa@_DRb void @ModelName@_low_scale_constraint::calculate_@ElectronYukawa@_DRbar() { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_@ElectronYukawa@_DRbar(): model pointer is zero"); + check_model_ptr(); Eigen::Matrix,3,3> downLeptonsDRbar(ZEROMATRIXCOMPLEX(3,3)); downLeptonsDRbar(0,0) = qedqcd.displayPoleMel(); @@ -304,8 +293,7 @@ void @ModelName@_low_scale_constraint::calculate_@ElectronYukawa@ void @ModelName@_low_scale_constraint::calculate_MNeutrino_DRbar() { - assert(model && "@ModelName@_low_scale_constraint::" - "calculate_MNeutrino_DRbar(): model pointer is zero"); + check_model_ptr(); neutrinoDRbar.setZero(); neutrinoDRbar(0,0) = qedqcd.displayNeutrinoPoleMass(1); @@ -321,10 +309,16 @@ void @ModelName@_low_scale_constraint::calculate_MNeutrino_DRbar( */ double @ModelName@_low_scale_constraint::recalculate_mw_pole(double mw_pole) { - assert(model && "@ModelName@_low_scale_constraint::" - "recalculate_mw_pole(): model pointer is zero"); + check_model_ptr(); @recalculateMWPole@ } +void @ModelName@_low_scale_constraint::check_model_ptr() const +{ + if (!model) + throw SetupError("@ModelName@_low_scale_constraint: " + "model pointer is zero!"); +} + } // namespace flexiblesusy diff --git a/templates/semi_analytic_low_scale_constraint.hpp.in b/templates/semi_analytic_low_scale_constraint.hpp.in index a01f633b3..45e1c6737 100644 --- a/templates/semi_analytic_low_scale_constraint.hpp.in +++ b/templates/semi_analytic_low_scale_constraint.hpp.in @@ -84,6 +84,7 @@ private: void calculate_MNeutrino_DRbar(); double calculate_delta_alpha_em(double) const; double calculate_delta_alpha_s(double) const; + void check_model_ptr() const; double recalculate_mw_pole(double); void update_scale(); }; diff --git a/templates/semi_analytic_soft_parameters_constraint.cpp.in b/templates/semi_analytic_soft_parameters_constraint.cpp.in index f991bbf2b..98e50c623 100644 --- a/templates/semi_analytic_soft_parameters_constraint.cpp.in +++ b/templates/semi_analytic_soft_parameters_constraint.cpp.in @@ -28,7 +28,6 @@ #include "root_finder.hpp" #include "threshold_loop_functions.hpp" -#include #include namespace flexiblesusy { @@ -64,8 +63,7 @@ namespace flexiblesusy { void @ModelName@_soft_parameters_constraint::apply() { - assert(model && "Error: @ModelName@_soft_parameters_constraint::" - "apply():model pointer must not be zero"); + check_model_ptr(); @temporarySetting@ @@ -80,8 +78,7 @@ void @ModelName@_soft_parameters_constraint::apply() const @ModelName@_input_parameters& @ModelName@_soft_parameters_constraint::get_input_parameters() const { - assert(model && "Error: @ModelName@_soft_parameters_constraint::" - "get_input_parameters(): model pointer is zero."); + check_model_ptr(); return model->get_input(); } @@ -102,8 +99,7 @@ void @ModelName@_soft_parameters_constraint::clear() void @ModelName@_soft_parameters_constraint::initialize() { - assert(model && "@ModelName@_soft_parameters_constraint::" - "initialize(): model pointer is zero."); + check_model_ptr(); @scaleGuess@ scale = initial_scale_guess; @@ -112,11 +108,17 @@ void @ModelName@_soft_parameters_constraint::initialize() void @ModelName@_soft_parameters_constraint::update_scale() { - assert(model && "@ModelName@_soft_parameters_constraint::" - "update_scale(): model pointer is zero."); + check_model_ptr(); @calculateScale@ @restrictScale@ } +void @ModelName@_soft_parameters_constraint::check_model_ptr() const +{ + if (!model) + throw SetupError("@ModelName@_soft_parameters_constraint: " + "model pointer is zero!"); +} + } // namespace flexiblesusy diff --git a/templates/semi_analytic_soft_parameters_constraint.hpp.in b/templates/semi_analytic_soft_parameters_constraint.hpp.in index d55d1758c..879ab8002 100644 --- a/templates/semi_analytic_soft_parameters_constraint.hpp.in +++ b/templates/semi_analytic_soft_parameters_constraint.hpp.in @@ -62,6 +62,8 @@ private: double input_scale{0.}; @ModelName@* model{nullptr}; softsusy::QedQcd qedqcd{}; + + void check_model_ptr() const; }; } // namespace flexiblesusy diff --git a/templates/semi_analytic_susy_scale_constraint.cpp.in b/templates/semi_analytic_susy_scale_constraint.cpp.in index ddaa7c54b..57d453f1a 100644 --- a/templates/semi_analytic_susy_scale_constraint.cpp.in +++ b/templates/semi_analytic_susy_scale_constraint.cpp.in @@ -28,7 +28,6 @@ #include "root_finder.hpp" #include "threshold_loop_functions.hpp" -#include #include namespace flexiblesusy { @@ -65,8 +64,7 @@ namespace flexiblesusy { void @ModelName@_susy_scale_constraint::apply() { - assert(model && "Error: @ModelName@_susy_scale_constraint::" - "apply():model pointer must not be zero"); + check_model_ptr(); @temporarySetting@ @@ -81,8 +79,7 @@ void @ModelName@_susy_scale_constraint::apply() const @ModelName@_input_parameters& @ModelName@_susy_scale_constraint::get_input_parameters() const { - assert(model && "Error: @ModelName@_susy_scale_constraint::" - "get_input_parameters(): model pointer is zero."); + check_model_ptr(); return model->get_input(); } @@ -103,8 +100,7 @@ void @ModelName@_susy_scale_constraint::clear() void @ModelName@_susy_scale_constraint::initialize() { - assert(model && "@ModelName@_susy_scale_constraint::" - "initialize(): model pointer is zero."); + check_model_ptr(); @scaleGuess@ scale = initial_scale_guess; @@ -112,12 +108,18 @@ void @ModelName@_susy_scale_constraint::initialize() void @ModelName@_susy_scale_constraint::update_scale() { - assert(model && "@ModelName@_susy_scale_constraint::" - "update_scale(): model pointer is zero."); + check_model_ptr(); @calculateScale@ @restrictScale@ @updateSemiAnalyticConstraint@ } +void @ModelName@_susy_scale_constraint::check_model_ptr() const +{ + if (!model) + throw SetupError("@ModelName@_susy_scale_constraint: " + "model pointer is zero!"); +} + } // namespace flexiblesusy diff --git a/templates/semi_analytic_susy_scale_constraint.hpp.in b/templates/semi_analytic_susy_scale_constraint.hpp.in index b012809f9..8a3381574 100644 --- a/templates/semi_analytic_susy_scale_constraint.hpp.in +++ b/templates/semi_analytic_susy_scale_constraint.hpp.in @@ -61,6 +61,8 @@ private: @ModelName@* model{nullptr}; softsusy::QedQcd qedqcd{}; @semiAnalyticConstraint@ + + void check_model_ptr() const; }; } // namespace flexiblesusy