Skip to content

Commit

Permalink
generalisation: allow usage of arbitrary CP-even Higgs mass entry
Browse files Browse the repository at this point in the history
in BSM model.  For example in the NMSSM, one can now use the 2nd Higgs
to be the SM-like one.  However, this makes only sense, if the SM can
still be regarded as the correct EFT, i.e. when

   hh(0) ~ hh(1) ~ M_SUSY

In this case one would integrate out all particles at M_SUSY, which is
close to the EW scale.
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Aug 15, 2016
1 parent 4309274 commit 7a4984c
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 15 deletions.
28 changes: 21 additions & 7 deletions templates/standard_model_matching.cpp.in
Expand Up @@ -90,12 +90,16 @@ private:
/**
* Calculates \f$\lambda(Q)\f$ at the tree level from the lightest
* CP-even Higgs boson mass of the @ModelName@.
*
* @param sm Standard Model
* @param model BSM model
* @param idx Higgs index (in mass ordered Higgs multiplet)
*/
void @ModelName@_standard_model_matching::match_high_to_low_scale_model_tree_level(
Standard_model& sm, @ModelName@_mass_eigenstates& model)
Standard_model& sm, @ModelName@_mass_eigenstates& model, unsigned idx)
{
model.calculate_DRbar_masses();
sm.set_Lambdax(Sqr(model.get_M@HiggsBoson(0)@/sm.get_v()));
sm.set_Lambdax(Sqr(model.get_M@HiggsBoson(idx)@/sm.get_v()));
sm.calculate_DRbar_masses();
}

Expand All @@ -104,19 +108,24 @@ void @ModelName@_standard_model_matching::match_high_to_low_scale_model_tree_lev
* Calculates \f$\lambda(Q)\f$ at the 1-loop level from the lightest
* CP-even Higgs boson mass of the @ModelName@ by requiring that the
* 1-loop Higgs pole masses are equal in both models.
*
* @param sm Standard Model
* @param model BSM model
* @param loop_order downwards matching loop order
* @param idx Higgs index (in mass ordered Higgs multiplet)
*/
void @ModelName@_standard_model_matching::match_high_to_low_scale_model(
Standard_model& sm, @ModelName@_mass_eigenstates& model, unsigned loop_order)
Standard_model& sm, @ModelName@_mass_eigenstates& model, unsigned loop_order, unsigned idx)
{
if (loop_order == 0) {
match_high_to_low_scale_model_tree_level(sm, model);
match_high_to_low_scale_model_tree_level(sm, model, idx);
return;
}

// temporarily set loop order to `loop_order'
Loop_order_setter los(&sm, &model, loop_order);

match_high_to_low_scale_model(sm, model);
match_high_to_low_scale_model(sm, model, idx);

model.get_physical().clear();
sm.get_physical().clear();
Expand All @@ -127,9 +136,13 @@ void @ModelName@_standard_model_matching::match_high_to_low_scale_model(
* Calculates \f$\lambda(Q)\f$ at the current loop level from the
* lightest CP-even Higgs boson mass of the @ModelName@ by requiring
* that the Higgs pole masses are equal in both models.
*
* @param sm Standard Model
* @param model BSM model
* @param idx Higgs index (in mass ordered Higgs multiplet)
*/
void @ModelName@_standard_model_matching::match_high_to_low_scale_model(
Standard_model& sm, @ModelName@_mass_eigenstates& model)
Standard_model& sm, @ModelName@_mass_eigenstates& model, unsigned idx)
{
model.calculate_DRbar_masses();
model.solve_ewsb();
Expand All @@ -139,7 +152,8 @@ void @ModelName@_standard_model_matching::match_high_to_low_scale_model(
sm.solve_ewsb();
sm.calculate_Mhh_pole();

sm.set_Lambdax((Sqr(model.get_physical().M@HiggsBoson_0@) - Sqr(sm.get_physical().Mhh) + Sqr(sm.get_Mhh()))/Sqr(sm.get_v()));
sm.set_Lambdax((Sqr(model.get_physical().M@HiggsBoson_idx@)
- Sqr(sm.get_physical().Mhh) + Sqr(sm.get_Mhh()))/Sqr(sm.get_v()));
}

/**
Expand Down
6 changes: 3 additions & 3 deletions templates/standard_model_matching.hpp.in
Expand Up @@ -33,12 +33,12 @@ namespace flexiblesusy {
class @ModelName@_standard_model_matching
{
public:
static void match_high_to_low_scale_model_tree_level(standard_model::Standard_model&, @ModelName@_mass_eigenstates&);
static void match_high_to_low_scale_model(standard_model::Standard_model&, @ModelName@_mass_eigenstates&, unsigned);
static void match_high_to_low_scale_model_tree_level(standard_model::Standard_model&, @ModelName@_mass_eigenstates&, unsigned);
static void match_high_to_low_scale_model(standard_model::Standard_model&, @ModelName@_mass_eigenstates&, unsigned, unsigned);
static void match_low_to_high_scale_model_tree_level(@ModelName@_mass_eigenstates&, standard_model::Standard_model&);
static void match_low_to_high_scale_model(@ModelName@_mass_eigenstates&, standard_model::Standard_model&, unsigned);
protected:
static void match_high_to_low_scale_model(standard_model::Standard_model&, @ModelName@_mass_eigenstates&);
static void match_high_to_low_scale_model(standard_model::Standard_model&, @ModelName@_mass_eigenstates&, unsigned);
static void match_low_to_high_scale_model(@ModelName@_mass_eigenstates&, standard_model::Standard_model&);
};

Expand Down
21 changes: 17 additions & 4 deletions templates/standard_model_two_scale_matching.cpp.in
Expand Up @@ -32,17 +32,20 @@ namespace flexiblesusy {
CLASSNAME::@ModelName@_standard_model_Matching()
: model(0), eft(0), constraint(0), scale(0.)
, loop_order_up(0), loop_order_down(0)
, higgs_idx(0)
{}

CLASSNAME::@ModelName@_standard_model_Matching(
standard_model::StandardModel<Two_scale>* low_,
@ModelName@<Two_scale>* high_,
Constraint<Two_scale>* constraint_,
unsigned loop_order_up_, unsigned loop_order_down_)
unsigned loop_order_up_, unsigned loop_order_down_,
unsigned higgs_idx_)
: model(high_)
, eft(low_)
, constraint(constraint_)
, scale(0.)
, higgs_idx(higgs_idx_)
{
set_loop_order_up(loop_order_up_);
set_loop_order_down(loop_order_down_);
Expand Down Expand Up @@ -79,9 +82,9 @@ void CLASSNAME::match_high_to_low_scale_model()
model->run_to(get_scale());

if (model->get_thresholds() && loop_order_down)
@ModelName@_standard_model_matching::match_high_to_low_scale_model(*eft, *model, loop_order_down);
@ModelName@_standard_model_matching::match_high_to_low_scale_model(*eft, *model, loop_order_down, higgs_idx);
else
@ModelName@_standard_model_matching::match_high_to_low_scale_model_tree_level(*eft, *model);
@ModelName@_standard_model_matching::match_high_to_low_scale_model_tree_level(*eft, *model, higgs_idx);
}

void CLASSNAME::match_low_to_high_scale_model()
Expand Down Expand Up @@ -110,7 +113,7 @@ void CLASSNAME::match_high_to_low_scale_model_tree_level()
eft->run_to(get_scale());
model->run_to(get_scale());

@ModelName@_standard_model_matching::match_high_to_low_scale_model_tree_level(*eft, *model);
@ModelName@_standard_model_matching::match_high_to_low_scale_model_tree_level(*eft, *model, higgs_idx);
}

void CLASSNAME::match_low_to_high_scale_model_tree_level()
Expand All @@ -126,6 +129,11 @@ void CLASSNAME::match_low_to_high_scale_model_tree_level()
@ModelName@_standard_model_matching::match_low_to_high_scale_model_tree_level(*model, *eft);
}

unsigned CLASSNAME::get_higgs_index() const
{
return higgs_idx;
}

unsigned CLASSNAME::get_loop_order_up() const
{
return loop_order_up;
Expand All @@ -136,6 +144,11 @@ unsigned CLASSNAME::get_loop_order_down() const
return loop_order_down;
}

void CLASSNAME::set_higgs_index(unsigned idx)
{
higgs_idx = idx;
}

void CLASSNAME::set_loop_order_up(unsigned loop_order_up_)
{
loop_order_up = loop_order_up_;
Expand Down
5 changes: 4 additions & 1 deletion templates/standard_model_two_scale_matching.hpp.in
Expand Up @@ -43,7 +43,7 @@ public:
@ModelName@_standard_model_Matching(standard_model::StandardModel<Two_scale>*,
@ModelName@<Two_scale>*,
Constraint<Two_scale>*,
unsigned, unsigned);
unsigned, unsigned, unsigned);

virtual ~@ModelName@_standard_model_Matching();

Expand All @@ -52,8 +52,10 @@ public:
virtual void match_high_to_low_scale_model();
virtual void match_low_to_high_scale_model();

unsigned get_higgs_index() const;
unsigned get_loop_order_up() const;
unsigned get_loop_order_down() const;
void set_higgs_index(unsigned);
void set_loop_order_up(unsigned);
void set_loop_order_down(unsigned);
void set_scale(double);
Expand All @@ -67,6 +69,7 @@ private:
Constraint<Two_scale>* constraint;
double scale;
unsigned loop_order_up, loop_order_down;
unsigned higgs_idx; ///< Higgs index
};

} // namespace flexiblesusy
Expand Down

0 comments on commit 7a4984c

Please sign in to comment.