Skip to content

Commit

Permalink
generate fermion pole mass functions for the BSM model
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Jan 18, 2017
1 parent 500be51 commit e6d5e58
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 6 deletions.
53 changes: 53 additions & 0 deletions meta/FlexibleEFTHiggsMatching.m
Expand Up @@ -4,6 +4,9 @@
CalculateRunningUpQuarkMasses::usage = "";
CalculateRunningDownQuarkMasses::usage = "";
CalculateRunningDownLeptonMasses::usage = "";
CalculateMUpQuarkPole1L::usage = "";
CalculateMDownQuarkPole1L::usage = "";
CalculateMDownLeptonPole1L::usage = "";
FillSMFermionPoleMasses::usage = "";
SetBSMParameters::usage = "";

Expand Down Expand Up @@ -57,6 +60,56 @@
result
];

CalculateMFermionPole1L[name_String, GetList_, GetEntry_] :=
Module[{result = "", i, iStr, mq, mqFun},
If[Length[GetList[]] == 3,
For[i = 0, i < 3, i++,
mq = CConversion`RValueToCFormString[GetEntry[i + 1, True]];
iStr = ToString[i];
result = result <>
"\
if (i == " <> iStr <> ") {
const double p = model_0l.get_M" <> mq <> "();
const auto self_energy_1 = Re(model_0l.self_energy_" <> mq <> "_1(p));
const auto self_energy_PL = Re(model_0l.self_energy_" <> mq <> "_PL(p));
const auto self_energy_PR = Re(model_0l.self_energy_" <> mq <> "_PR(p));
const auto M_tree = model_0l.get_mass_matrix_" <> mq <> "();
const auto M_loop = M_tree - self_energy_1 - M_tree * (self_energy_PR + self_energy_PL);
m_pole = calculate_singlet_mass(M_loop);
}
"
];
,
mq = CConversion`RValueToCFormString[GetParticleFromDescription[name]];
result =
"\
const double p = model_0l.get_M" <> mq <> "(i);
const auto self_energy_1 = Re(model_0l.self_energy_" <> mq <> "_1(p));
const auto self_energy_PL = Re(model_0l.self_energy_" <> mq <> "_PL(p));
const auto self_energy_PR = Re(model_0l.self_energy_" <> mq <> "_PR(p));
const auto M_tree = model_0l.get_mass_matrix_" <> mq <> "();
const auto M_loop = (M_tree - self_energy_PR * M_tree
- M_tree * self_energy_PL - self_energy_1).eval();
" <> CConversion`CreateCType[CConversion`ArrayType[CConversion`realScalarCType,3]] <> " M_pole;
fs_svd(M_loop, M_pole);
m_pole = M_pole(i);"
];
result
];

CalculateMUpQuarkPole1L[] := CalculateMFermionPole1L["Up-Quarks" ,
TreeMasses`GetSMUpQuarks,
TreeMasses`GetUpQuark];
CalculateMDownQuarkPole1L[] := CalculateMFermionPole1L["Down-Quarks",
TreeMasses`GetSMDownQuarks,
TreeMasses`GetDownQuark];
CalculateMDownLeptonPole1L[] := CalculateMFermionPole1L["Leptons",
TreeMasses`GetSMChargedLeptons,
TreeMasses`GetDownLepton];

FillSMFermionPoleMasses[] :=
Module[{result = "", i, mq},
For[i = 0, i < 3, i++,
Expand Down
3 changes: 3 additions & 0 deletions meta/FlexibleSUSY.m
Expand Up @@ -1024,6 +1024,9 @@ corresponding tadpole is real or imaginary (only in models with CP
setRunningDownLeptonMasses = FlexibleEFTHiggsMatching`CalculateRunningDownLeptonMasses[];
setYukawas = ThresholdCorrections`SetDRbarYukawaCouplings[];
calculateMHiggsPoleOneMomentumIteration = FlexibleEFTHiggsMatching`CalculateMHiggsPoleOneMomentumIteration[SARAH`HiggsBoson];
calculateMUpQuarkPole1L = FlexibleEFTHiggsMatching`CalculateMUpQuarkPole1L[];
calculateMDownQuarkPole1L = FlexibleEFTHiggsMatching`CalculateMDownQuarkPole1L[];
calculateMDownLeptonPole1L = FlexibleEFTHiggsMatching`CalculateMDownLeptonPole1L[];
];
WriteOut`ReplaceInFiles[files,
{ "@alphaS1Lmatching@" -> IndentText[WrapLines[alphaS1Lmatching]],
Expand Down
12 changes: 6 additions & 6 deletions templates/standard_model_matching.cpp.in
Expand Up @@ -304,33 +304,33 @@ double calculate_MFu_pole_1loop(
unsigned i,
const @ModelName@_mass_eigenstates& model_0l)
{
double MFu_pole_i = 0.;
double m_pole = 0.;

@calculateMUpQuarkPole1L@

return MFu_pole_i;
return m_pole;
}

double calculate_MFd_pole_1loop(
unsigned i,
const @ModelName@_mass_eigenstates& model_0l)
{
double MFd_pole_i = 0.;
double m_pole = 0.;

@calculateMDownQuarkPole1L@

return MFd_pole_i;
return m_pole;
}

double calculate_MFe_pole_1loop(
unsigned i,
const @ModelName@_mass_eigenstates& model_0l)
{
double MFe_pole_i = 0.;
double m_pole = 0.;

@calculateMDownLeptonPole1L@

return MFe_pole_i;
return m_pole;
}

Eigen::Matrix<double,3,3> calculate_MFu_pole_1loop(const Standard_model& sm_0l)
Expand Down

0 comments on commit e6d5e58

Please sign in to comment.