Skip to content

Commit

Permalink
Merge branch 'feature-2.0' into feature-2.0-tower-1L-nologs
Browse files Browse the repository at this point in the history
Conflicts:
	templates/standard_model_matching.cpp.in
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Jan 7, 2017
2 parents 691a017 + 4f5a6d0 commit 722b6ba
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 48 deletions.
16 changes: 14 additions & 2 deletions meta/FlexibleEFTHiggsMatching.m
@@ -1,7 +1,9 @@
BeginPackage["FlexibleEFTHiggsMatching`", {"CConversion`", "TreeMasses`", "LoopMasses`", "Constraint`", "ThresholdCorrections`", "Parameters`"}];

CallSMPoleMassFunctions::usage = "";
CalculateRunningFermionMasses::usage = "";
CalculateRunningUpQuarkMasses::usage = "";
CalculateRunningDownQuarkMasses::usage = "";
CalculateRunningDownLeptonMasses::usage = "";
FillSMFermionPoleMasses::usage = "";

Begin["`Private`"];
Expand All @@ -18,7 +20,7 @@
result
];

CalculateRunningFermionMasses[] :=
CalculateRunningUpQuarkMasses[] :=
Module[{result = "", i, iStr, mq, mqFun},
For[i = 0, i < 3, i++,
iStr = ToString[i];
Expand All @@ -29,6 +31,11 @@
"sm.get_physical().MFu(" <> iStr <> ") - " <>
"model.get_physical().M" <> mq <> " + model.get_M" <> mqFun <> ";\n";
];
result
];

CalculateRunningDownQuarkMasses[] :=
Module[{result = "", i, iStr, mq, mqFun},
For[i = 0, i < 3, i++,
iStr = ToString[i];
mq = mqFun = CConversion`RValueToCFormString[TreeMasses`GetDownQuark[i + 1, True]];
Expand All @@ -38,6 +45,11 @@
"sm.get_physical().MFd(" <> iStr <> ") - " <>
"model.get_physical().M" <> mq <> " + model.get_M" <> mqFun <> ";\n";
];
result
];

CalculateRunningDownLeptonMasses[] :=
Module[{result = "", i, iStr, mq, mqFun},
For[i = 0, i < 3, i++,
iStr = ToString[i];
mq = mqFun = CConversion`RValueToCFormString[TreeMasses`GetDownLepton[i + 1, True]];
Expand Down
31 changes: 17 additions & 14 deletions meta/FlexibleSUSY.m
Expand Up @@ -989,31 +989,34 @@ corresponding tadpole is real or imaginary (only in models with CP

WriteMatchingClass[susyScaleMatching_List, files_List] :=
Module[{scheme = GetRenormalizationScheme[], userMatching = "",
gauge1Linit = "", alphaS1Lmatching = "", alphaEM1Lmatching = "",
setRunningFermionMasses = "", setYukawas = "",
alphaS1Lmatching = "", alphaEM1Lmatching = "",
setRunningUpQuarkMasses = "", setRunningDownQuarkMasses = "",
setRunningDownLeptonMasses = "", setYukawas = "",
callAllSMPoleMassFunctions = "",
callAllSMPoleMassFunctionsThreads = ""},
If[FlexibleSUSY`FlexibleEFTHiggs === True,
If[Head[susyScaleMatching] === List,
userMatching = Constraint`ApplyConstraints[susyScaleMatching];
];
gauge1Linit = Parameters`CreateLocalConstRefs[
ThresholdCorrections`CalculateColorCoupling[scheme] +
ThresholdCorrections`CalculateElectromagneticCoupling[scheme]];
alphaS1Lmatching = "delta_alpha_s = alpha_s/(2.*Pi)*(" <>
CConversion`RValueToCFormString[ThresholdCorrections`CalculateColorCoupling[scheme]] <> ");\n";
alphaEM1Lmatching = "delta_alpha_em = alpha_em/(2.*Pi)*(" <>
CConversion`RValueToCFormString[ThresholdCorrections`CalculateElectromagneticCoupling[scheme]] <> ");\n";
setRunningFermionMasses = FlexibleEFTHiggsMatching`CalculateRunningFermionMasses[];
alphaS1Lmatching = Parameters`CreateLocalConstRefs[ThresholdCorrections`CalculateColorCoupling[scheme]] <> "\n" <>
"delta_alpha_s += alpha_s/(2.*Pi)*(" <>
CConversion`RValueToCFormString[ThresholdCorrections`CalculateColorCoupling[scheme]] <> ");\n";
alphaEM1Lmatching = Parameters`CreateLocalConstRefs[ThresholdCorrections`CalculateElectromagneticCoupling[scheme]] <> "\n" <>
"delta_alpha_em += alpha_em/(2.*Pi)*(" <>
CConversion`RValueToCFormString[ThresholdCorrections`CalculateElectromagneticCoupling[scheme]] <> ");\n";
setRunningUpQuarkMasses = FlexibleEFTHiggsMatching`CalculateRunningUpQuarkMasses[];
setRunningDownQuarkMasses = FlexibleEFTHiggsMatching`CalculateRunningDownQuarkMasses[];
setRunningDownLeptonMasses = FlexibleEFTHiggsMatching`CalculateRunningDownLeptonMasses[];
setYukawas = ThresholdCorrections`SetDRbarYukawaCouplings[];
callAllSMPoleMassFunctions = FlexibleEFTHiggsMatching`CallSMPoleMassFunctions[FlexibleSUSY`FSEigenstates, False];
callAllSMPoleMassFunctionsThreads = FlexibleEFTHiggsMatching`CallSMPoleMassFunctions[FlexibleSUSY`FSEigenstates, True];
];
WriteOut`ReplaceInFiles[files,
{ "@gauge1Linit@" -> IndentText[WrapLines[gauge1Linit]],
"@alphaS1Lmatching@" -> IndentText[WrapLines[alphaS1Lmatching]],
"@alphaEM1Lmatching@" -> IndentText[WrapLines[alphaEM1Lmatching]],
"@setRunningFermionMasses@" -> IndentText[setRunningFermionMasses],
{ "@alphaS1Lmatching@" -> IndentText[IndentText[WrapLines[alphaS1Lmatching]]],
"@alphaEM1Lmatching@" -> IndentText[IndentText[WrapLines[alphaEM1Lmatching]]],
"@setRunningUpQuarkMasses@" -> IndentText[IndentText[setRunningUpQuarkMasses]],
"@setRunningDownQuarkMasses@" -> IndentText[IndentText[setRunningDownQuarkMasses]],
"@setRunningDownLeptonMasses@" -> IndentText[IndentText[setRunningDownLeptonMasses]],
"@setYukawas@" -> IndentText[WrapLines[setYukawas]],
"@applyUserMatching@" -> IndentText[IndentText[WrapLines[userMatching]]],
"@callAllSMPoleMassFunctions@" -> IndentText[callAllSMPoleMassFunctions],
Expand Down
150 changes: 119 additions & 31 deletions templates/standard_model_matching.cpp.in
Expand Up @@ -193,7 +193,7 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model_tree_lev
model.set_@strongCoupling@(sm.get_g3()*standard_model_info::normalization_g3/@ModelName@_info::normalization_@strongCoupling@);

{
@ModelName@_mass_eigenstates* MODEL = &model;
auto MODEL = &model;
const double VEV = sm.get_v();

@applyUserMatching@
Expand All @@ -203,11 +203,9 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model_tree_lev
Eigen::Matrix<double, 3, 3> downQuarksDRbar = ZEROMATRIX(3,3);
Eigen::Matrix<double, 3, 3> downLeptonsDRbar = ZEROMATRIX(3,3);

for (unsigned gen = 0; gen < 3; gen++) {
upQuarksDRbar(gen, gen) = sm.get_MFu(gen);
downQuarksDRbar(gen, gen) = sm.get_MFd(gen);
downLeptonsDRbar(gen, gen) = sm.get_MFe(gen);
}
upQuarksDRbar.diagonal() = sm.get_MFu();
downQuarksDRbar.diagonal() = sm.get_MFd();
downLeptonsDRbar.diagonal() = sm.get_MFe();

@setYukawas@

Expand Down Expand Up @@ -259,6 +257,113 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model(
sm.get_physical().clear();
}

namespace {

double calculate_delta_alpha_em(double alpha_em, const @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
const double currentScale = model.get_scale();
double delta_alpha_em = 0.;

if (loop_order > 0) {
@alphaEM1Lmatching@
}

return delta_alpha_em;
}

double calculate_delta_alpha_s(double alpha_s, const @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
const double currentScale = model.get_scale();
double delta_alpha_s = 0.;

if (loop_order > 0) {
@alphaS1Lmatching@
}

return delta_alpha_s;
}

Eigen::Matrix<double,3,3> calculate_MFu_DRbar(const Standard_model& sm, const @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
Eigen::Matrix<double,3,3> upQuarksDRbar = ZEROMATRIX(3,3);

if (loop_order == 0) {
upQuarksDRbar.diagonal() = sm.get_MFu();
} else {
@setRunningUpQuarkMasses@
}

return upQuarksDRbar;
}

Eigen::Matrix<double,3,3> calculate_MFd_DRbar(const Standard_model& sm, const @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
Eigen::Matrix<double,3,3> downQuarksDRbar = ZEROMATRIX(3,3);

if (loop_order == 0) {
downQuarksDRbar.diagonal() = sm.get_MFd();
} else {
@setRunningDownQuarkMasses@
}

return downQuarksDRbar;
}

Eigen::Matrix<double,3,3> calculate_MFe_DRbar(const Standard_model& sm, const @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
Eigen::Matrix<double,3,3> downLeptonsDRbar = ZEROMATRIX(3,3);

if (loop_order == 0) {
downLeptonsDRbar.diagonal() = sm.get_MFe();
} else {
@setRunningDownLeptonMasses@
}

return downLeptonsDRbar;
}

double calculate_MW_DRbar(const Standard_model& sm, @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
double mw = 0.;

if (loop_order == 0) {
mw = sm.get_MVWp();
} else {
const double mw2 = Sqr(sm.get_physical().MVWp) - Sqr(model.get_physical().M@VectorW_0@) + Sqr(model.get_M@VectorW(0)@);

if (mw2 < 0.)
model.get_problems().flag_running_tachyon(@ModelName@_info::@VectorW@);
else
model.get_problems().unflag_running_tachyon(@ModelName@_info::@VectorW@);

mw = AbsSqrt(mw2);
}

return mw;
}

double calculate_MZ_DRbar(const Standard_model& sm, @ModelName@_mass_eigenstates& model, unsigned loop_order = 1)
{
double mz = 0.;

if (loop_order == 0) {
mz = sm.get_MVZ();
} else {
const double mz2 = Sqr(sm.get_physical().MVZ) - Sqr(model.get_physical().M@VectorZ_0@) + Sqr(model.get_M@VectorZ(0)@);

if (mz2 < 0.)
model.get_problems().flag_running_tachyon(@ModelName@_info::@VectorZ@);
else
model.get_problems().unflag_running_tachyon(@ModelName@_info::@VectorZ@);

mz = AbsSqrt(mz2);
}

return mz;
}

} // anonymous namespace

/**
* Calculates the gauge and Yukawa couplings and the SM-like VEV in
* the @ModelName@ at the current loop level from the known Standard
Expand All @@ -267,10 +372,6 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model(
void @ModelName@_standard_model_matching::match_low_to_high_scale_model(
@ModelName@_mass_eigenstates& model, Standard_model& sm)
{
Eigen::Matrix<double, 3, 3> upQuarksDRbar = ZEROMATRIX(3,3);
Eigen::Matrix<double, 3, 3> downQuarksDRbar = ZEROMATRIX(3,3);
Eigen::Matrix<double, 3, 3> downLeptonsDRbar = ZEROMATRIX(3,3);

model.calculate_DRbar_masses();
model.solve_ewsb();

Expand All @@ -280,31 +381,18 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model(
const double alpha_em = Sqr(sm.get_g1() * sm.get_g2() * standard_model_info::normalization_g1 * standard_model_info::normalization_g2)
/(4. * Pi * (Sqr(sm.get_g1()*standard_model_info::normalization_g1) + Sqr(sm.get_g2()*standard_model_info::normalization_g2)));
const double alpha_s = Sqr(sm.get_g3() * standard_model_info::normalization_g3)/(4. * Pi);
const double currentScale = sm.get_scale();
double delta_alpha_em = 0., delta_alpha_s = 0.;

@gauge1Linit@
@alphaEM1Lmatching@
const double delta_alpha_em = calculate_delta_alpha_em(alpha_em, model);
const double delta_alpha_s = calculate_delta_alpha_s(alpha_s, model, 0);

calculate_SM_pole_masses(model, sm);

// running W, Z masses (via 1L matching)
const double mW2_1L = Sqr(sm.get_physical().MVWp) - Sqr(model.get_physical().M@VectorW_0@) + Sqr(model.get_M@VectorW(0)@);
const double mZ2_1L = Sqr(sm.get_physical().MVZ) - Sqr(model.get_physical().M@VectorZ_0@) + Sqr(model.get_M@VectorZ(0)@);

if (mZ2_1L < 0.)
model.get_problems().flag_running_tachyon(@ModelName@_info::@VectorZ@);
else
model.get_problems().unflag_running_tachyon(@ModelName@_info::@VectorZ@);
const double mW2_1L = Sqr(calculate_MW_DRbar(sm, model));
const double mZ2_1L = Sqr(calculate_MZ_DRbar(sm, model));

if (mW2_1L < 0.)
model.get_problems().flag_running_tachyon(@ModelName@_info::@VectorW@);
else
model.get_problems().unflag_running_tachyon(@ModelName@_info::@VectorW@);

upQuarksDRbar.diagonal() = sm.get_MFu();
downQuarksDRbar.diagonal() = sm.get_MFd();
downLeptonsDRbar.diagonal() = sm.get_MFe();
const Eigen::Matrix<double, 3, 3> upQuarksDRbar = calculate_MFu_DRbar(sm, model, 0);
const Eigen::Matrix<double, 3, 3> downQuarksDRbar = calculate_MFd_DRbar(sm, model, 0);
const Eigen::Matrix<double, 3, 3> downLeptonsDRbar = calculate_MFe_DRbar(sm, model, 0);

// define and apply 1L-matched gauge parameters
const double g1_1L = AbsSqrt(4. * Pi * alpha_em * (1. + delta_alpha_em) * mZ2_1L / mW2_1L) / @ModelName@_info::normalization_@hyperchargeCoupling@;
Expand All @@ -316,7 +404,7 @@ void @ModelName@_standard_model_matching::match_low_to_high_scale_model(
model.set_@strongCoupling@(g3_1L);

{
@ModelName@_mass_eigenstates* MODEL = &model;
auto MODEL = &model;
const double VEV = 2. * AbsSqrt(mZ2_1L/(Sqr(g1_1L*@ModelName@_info::normalization_@hyperchargeCoupling@) + Sqr(g2_1L*@ModelName@_info::normalization_@leftCoupling@)));

@applyUserMatching@
Expand Down
1 change: 0 additions & 1 deletion test/test_namespace_collisions.cpp
@@ -1,6 +1,5 @@
#include <complex>
#include "wrappers.hpp"
#include "rge.h"

using namespace flexiblesusy;

Expand Down

0 comments on commit 722b6ba

Please sign in to comment.