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 6e36048 + 7a4984c commit 4961ba5
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 41 deletions.
53 changes: 27 additions & 26 deletions meta/FlexibleSUSY.m
Expand Up @@ -476,32 +476,32 @@ FlexibleSUSY model file (FlexibleSUSY.m).
GUTNormalization[coupling_] :=
Parameters`GetGUTNormalization[coupling];

ParticleIndexRule[par_, name_String] := {
"@" <> name <> "@" -> ToValidCSymbolString[par],
"@" <> name <> "_" ~~ num___ ~~ "@" /; StringFreeQ[num, "@"] :>
ToValidCSymbolString[par] <> If[TreeMasses`GetDimension[par] > 1, "(" <> num <> ")", ""],
"@" <> name <> "(" ~~ num___ ~~ ")@" /; StringFreeQ[num, "@"] :>
ToValidCSymbolString[par] <> If[TreeMasses`GetDimension[par] > 1, "(" <> num <> ")", "()"]
};

GeneralReplacementRules[] :=
{ "@VectorZ@" -> ToValidCSymbolString[SARAH`VectorZ],
"@VectorZ_" ~~ num_ ~~ "@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`VectorZ] <> If[TreeMasses`GetDimension[SARAH`VectorZ] > 1, "(" <> num <> ")", ""],
"@VectorZ(" ~~ num_ ~~ ")@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`VectorZ] <> If[TreeMasses`GetDimension[SARAH`VectorZ] > 1, "(" <> num <> ")", "()"],
"@VectorP@" -> ToValidCSymbolString[SARAH`VectorP],
"@VectorW@" -> ToValidCSymbolString[SARAH`VectorW],
"@VectorW_" ~~ num_ ~~ "@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`VectorW] <> If[TreeMasses`GetDimension[SARAH`VectorW] > 1, "(" <> num <> ")", ""],
"@VectorW(" ~~ num_ ~~ ")@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`VectorW] <> If[TreeMasses`GetDimension[SARAH`VectorW] > 1, "(" <> num <> ")", "()"],
"@VectorG@" -> ToValidCSymbolString[SARAH`VectorG],
"@TopQuark@" -> ToValidCSymbolString[SARAH`TopQuark],
"@BottomQuark@" -> ToValidCSymbolString[SARAH`BottomQuark],
"@Electron@" -> ToValidCSymbolString[SARAH`Electron],
"@Neutrino@" -> ToValidCSymbolString[SARAH`Neutrino],
"@HiggsBoson@" -> ToValidCSymbolString[SARAH`HiggsBoson],
"@HiggsBoson_" ~~ num_ ~~ "@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`HiggsBoson] <> If[TreeMasses`GetDimension[SARAH`HiggsBoson] > 1, "(" <> num <> ")", ""],
"@HiggsBoson(" ~~ num_ ~~ ")@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`HiggsBoson] <> If[TreeMasses`GetDimension[SARAH`HiggsBoson] > 1, "(" <> num <> ")", "()"],
"@PseudoScalarBoson@" -> ToValidCSymbolString[SARAH`PseudoScalarBoson],
"@ChargedHiggs@" -> ToValidCSymbolString[SARAH`ChargedHiggs],
"@TopSquark@" -> ToValidCSymbolString[SARAH`TopSquark],
"@TopSquark_" ~~ num_ ~~ "@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`TopSquark] <> If[TreeMasses`GetDimension[SARAH`TopSquark] > 1, "(" <> num <> ")", ""],
"@BottomSquark@" -> ToValidCSymbolString[SARAH`BottomSquark],
"@BottomSquark_" ~~ num_ ~~ "@" /; IntegerQ[ToExpression[num]] :> ToValidCSymbolString[SARAH`BottomSquark] <> If[TreeMasses`GetDimension[SARAH`BottomSquark] > 1, "(" <> num <> ")", ""],
"@Sneutrino@" -> ToValidCSymbolString[SARAH`Sneutrino],
"@Selectron@" -> ToValidCSymbolString[SARAH`Selectron],
"@Gluino@" -> ToValidCSymbolString[SARAH`Gluino],
"@UpYukawa@" -> ToValidCSymbolString[SARAH`UpYukawa],
Join[
ParticleIndexRule[SARAH`VectorZ, "VectorZ"],
ParticleIndexRule[SARAH`VectorW, "VectorW"],
ParticleIndexRule[SARAH`VectorP, "VectorP"],
ParticleIndexRule[SARAH`VectorG, "VectorG"],
ParticleIndexRule[SARAH`TopQuark, "TopQuark"],
ParticleIndexRule[SARAH`BottomQuark, "BottomQuark"],
ParticleIndexRule[SARAH`Electron, "Electron"],
ParticleIndexRule[SARAH`Neutrino, "Neutrino"],
ParticleIndexRule[SARAH`HiggsBoson, "HiggsBoson"],
ParticleIndexRule[SARAH`PseudoScalarBoson, "PseudoScalarBoson"],
ParticleIndexRule[SARAH`ChargedHiggs, "ChargedHiggs"],
ParticleIndexRule[SARAH`TopSquark, "TopSquark"],
ParticleIndexRule[SARAH`Sneutrino, "Sneutrino"],
ParticleIndexRule[SARAH`Selectron, "Selectron"],
ParticleIndexRule[SARAH`Gluino, "Gluino"],
{ "@UpYukawa@" -> ToValidCSymbolString[SARAH`UpYukawa],
"@DownYukawa@" -> ToValidCSymbolString[SARAH`DownYukawa],
"@ElectronYukawa@" -> ToValidCSymbolString[SARAH`ElectronYukawa],
"@LeftUpMixingMatrix@" -> ToValidCSymbolString[SARAH`UpMatrixL],
Expand Down Expand Up @@ -540,7 +540,8 @@ FlexibleSUSY model file (FlexibleSUSY.m).
"@FlexibleSUSYVersion@" -> FS`Version,
"@HiggsGen@" -> ToValidCSymbolString[GetDimension[SARAH`HiggsBoson]],
"@FlexibleSUSYGitCommit@" -> FS`GitCommit
};
}
];


WriteRGEClass[betaFun_List, anomDim_List, files_List,
Expand Down
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 4961ba5

Please sign in to comment.