Skip to content

Commit

Permalink
Merge branch 'feature-SMtower' into feature-SMtower-2L
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Aug 15, 2016
2 parents 3c0491c + 2f3549f commit 6e36048
Showing 1 changed file with 50 additions and 40 deletions.
90 changes: 50 additions & 40 deletions templates/standard_model_matching.cpp.in
Expand Up @@ -39,6 +39,54 @@ namespace flexiblesusy {
#define SMPARAMETER(p) sm.get_##p()
#define INPUTPARAMETER(p) model.get_input().p

namespace {

class Loop_order_setter {
public:
Loop_order_setter(
Standard_model* sm_, @ModelName@_mass_eigenstates* model_, unsigned loop_order_)
: sm(sm_), model(model_), loop_order(loop_order_)
{
assert(sm);
assert(model);

// store old loop orders
model_pole_mass_order = model->get_pole_mass_loop_order();
model_ewsb_order = model->get_ewsb_loop_order();
sm_pole_mass_order = sm->get_pole_mass_loop_order();
sm_ewsb_order = sm->get_ewsb_loop_order();

// temporarily set loop order to `loop_order'
model->set_pole_mass_loop_order(loop_order);
model->set_ewsb_loop_order(loop_order);
sm->set_pole_mass_loop_order(loop_order);
sm->set_ewsb_loop_order(loop_order);
}

~Loop_order_setter() {
// reset loop order
model->set_pole_mass_loop_order(model_pole_mass_order);
model->set_ewsb_loop_order(model_ewsb_order);
sm->set_pole_mass_loop_order(sm_pole_mass_order);
sm->set_ewsb_loop_order(sm_ewsb_order);

model->calculate_DRbar_masses();
model->solve_ewsb();
sm->calculate_DRbar_masses();
sm->solve_ewsb();
}
private:
Standard_model* sm;
@ModelName@_mass_eigenstates* model;
unsigned loop_order; ///< temporary loop order
unsigned model_pole_mass_order; ///< old model pole mass loop order
unsigned model_ewsb_order; ///< old model EWSB loop order
unsigned sm_pole_mass_order; ///< old SM pole mass loop order
unsigned sm_ewsb_order; ///< old SM EWSB loop order
};

} // anonymous namespace

/**
* Calculates \f$\lambda(Q)\f$ at the tree level from the lightest
* CP-even Higgs boson mass of the @ModelName@.
Expand Down Expand Up @@ -66,31 +114,12 @@ void @ModelName@_standard_model_matching::match_high_to_low_scale_model(
}

// temporarily set loop order to `loop_order'
const unsigned model_pole_mass_order = model.get_pole_mass_loop_order();
const unsigned model_ewsb_order = model.get_ewsb_loop_order();
const unsigned sm_pole_mass_order = sm.get_pole_mass_loop_order();
const unsigned sm_ewsb_order = sm.get_ewsb_loop_order();

model.set_pole_mass_loop_order(loop_order);
model.set_ewsb_loop_order(loop_order);
sm.set_pole_mass_loop_order(loop_order);
sm.set_ewsb_loop_order(loop_order);
Loop_order_setter los(&sm, &model, loop_order);

match_high_to_low_scale_model(sm, model);

model.get_physical().clear();
sm.get_physical().clear();

// reset loop order
model.set_pole_mass_loop_order(model_pole_mass_order);
model.set_ewsb_loop_order(model_ewsb_order);
sm.set_pole_mass_loop_order(sm_pole_mass_order);
sm.set_ewsb_loop_order(sm_ewsb_order);

model.calculate_DRbar_masses();
model.solve_ewsb();
sm.calculate_DRbar_masses();
sm.solve_ewsb();
}


Expand Down Expand Up @@ -198,31 +227,12 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model(
}

// temporarily set loop order to `loop_order'
const unsigned model_pole_mass_order = model.get_pole_mass_loop_order();
const unsigned model_ewsb_order = model.get_ewsb_loop_order();
const unsigned sm_pole_mass_order = sm.get_pole_mass_loop_order();
const unsigned sm_ewsb_order = sm.get_ewsb_loop_order();

model.set_pole_mass_loop_order(loop_order);
model.set_ewsb_loop_order(loop_order);
sm.set_pole_mass_loop_order(loop_order);
sm.set_ewsb_loop_order(loop_order);
Loop_order_setter los(&sm, &model, loop_order);

match_low_to_high_scale_model(model, sm);

model.get_physical().clear();
sm.get_physical().clear();

// reset loop order
model.set_pole_mass_loop_order(model_pole_mass_order);
model.set_ewsb_loop_order(model_ewsb_order);
sm.set_pole_mass_loop_order(sm_pole_mass_order);
sm.set_ewsb_loop_order(sm_ewsb_order);

model.calculate_DRbar_masses();
model.solve_ewsb();
sm.calculate_DRbar_masses();
sm.solve_ewsb();
}

/**
Expand Down

0 comments on commit 6e36048

Please sign in to comment.