Skip to content

Commit

Permalink
allow user to add 3L QCD corrections to Mt pole in non-SUSY models
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Aug 13, 2016
1 parent 42cf4d0 commit 5e0bca1
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 15 deletions.
24 changes: 17 additions & 7 deletions meta/LoopMasses.m
Expand Up @@ -66,7 +66,7 @@
AddMtPoleQCDCorrections[2, expr_] := "\
double qcd_2l = 0.;
if (pole_mass_loop_order > 1 && TOP_2LOOP_CORRECTION_QCD > 0) {
if (pole_mass_loop_order > 1 && TOP_POLE_QCD_CORRECTION > 0) {
const double currentScale = get_scale();
qcd_2l = " <> CConversion`RValueToCFormString[expr] <> ";
}
Expand All @@ -75,7 +75,7 @@
AddMtPoleQCDCorrections[3, expr_] := "\
double qcd_3l = 0.;
if (pole_mass_loop_order > 2 && TOP_2LOOP_CORRECTION_QCD > 1) {
if (pole_mass_loop_order > 2 && TOP_POLE_QCD_CORRECTION > 1) {
const double currentScale = get_scale();
qcd_3l = " <> CConversion`RValueToCFormString[expr] <> ";
}
Expand Down Expand Up @@ -110,23 +110,28 @@
_String, _String, _String, momentum_String, type_] :=
Module[{massName,
topSelfEnergyFunctionS, topSelfEnergyFunctionPL, topSelfEnergyFunctionPR,
qcdOneLoop, qcdTwoLoop
qcdOneLoop, qcdTwoLoop, qcdThreeLoop
},
massName = ToValidCSymbolString[FlexibleSUSY`M[particle]];
topSelfEnergyFunctionS = SelfEnergies`CreateHeavySelfEnergyFunctionName[particle[1]];
topSelfEnergyFunctionPL = SelfEnergies`CreateHeavySelfEnergyFunctionName[particle[PL]];
topSelfEnergyFunctionPR = SelfEnergies`CreateHeavySelfEnergyFunctionName[particle[PR]];
qcdOneLoop = N[-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDOneLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]];
qcdTwoLoop = N[Expand[(-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDTwoLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]) /. Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]]];
qcdThreeLoop = If[FlexibleSUSY`FSRenormalizationScheme === FlexibleSUSY`MSbar,
Simplify @ N[ThreeLoopQCD`GetMTopPoleOverMTopMSbar[{0,0,0,1}, particle, Global`currentScale] /.
Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]],
0];
AddMtPoleQCDCorrections[1, qcdOneLoop] <> "\n" <>
AddMtPoleQCDCorrections[2, qcdTwoLoop] <> "
AddMtPoleQCDCorrections[2, qcdTwoLoop] <> "\n" <>
AddMtPoleQCDCorrections[3, qcdThreeLoop] <> "
const double p = " <> momentum <> ";
const " <> CreateCType[type] <> " self_energy_1 = " <> CastIfReal[topSelfEnergyFunctionS <> "(p)",type] <> ";
const " <> CreateCType[type] <> " self_energy_PL = " <> CastIfReal[topSelfEnergyFunctionPL <> "(p)",type] <> ";
const " <> CreateCType[type] <> " self_energy_PR = " <> CastIfReal[topSelfEnergyFunctionPR <> "(p)",type] <> ";
const auto M_loop = " <> massMatrixName <> "\
- self_energy_1 - " <> massMatrixName <> " * (self_energy_PL + self_energy_PR)\
- " <> massMatrixName <> " * (qcd_1l + qcd_2l);\n
- " <> massMatrixName <> " * (qcd_1l + qcd_2l + qcd_3l);\n
PHYSICAL(" <> massName <> ") = calculate_singlet_mass(M_loop);\n"
];

Expand Down Expand Up @@ -479,8 +484,13 @@ be set to the (positive) tree-level mass. M_tree
thirdGenMass = TreeMasses`GetThirdGenerationMass[particle];
qcdOneLoop = N[-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDOneLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]];
qcdTwoLoop = N[Expand[(-TwoLoopQCD`GetDeltaMPoleOverMRunningQCDTwoLoop[particle, Global`currentScale, FlexibleSUSY`FSRenormalizationScheme]) /. Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]]];
qcdThreeLoop = If[FlexibleSUSY`FSRenormalizationScheme === FlexibleSUSY`MSbar,
Simplify @ N[ThreeLoopQCD`GetMTopPoleOverMTopMSbar[{0,0,0,1}, particle, Global`currentScale] /.
Log[m_/Global`currentScale^2] :> -Log[Global`currentScale^2/m]],
0];
qcdCorrections = AddMtPoleQCDCorrections[1, qcdOneLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n" <>
AddMtPoleQCDCorrections[2, qcdTwoLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n";
AddMtPoleQCDCorrections[2, qcdTwoLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n" <>
AddMtPoleQCDCorrections[3, qcdThreeLoop /. FlexibleSUSY`M[particle] -> thirdGenMass] <> "\n";
];
selfEnergyFunctionS = SelfEnergies`CreateSelfEnergyFunctionName[particle[1]];
selfEnergyFunctionPL = SelfEnergies`CreateSelfEnergyFunctionName[particle[PL]];
Expand Down Expand Up @@ -518,7 +528,7 @@ be set to the (positive) tree-level mass. M_tree
If[topTwoLoop,
selfEnergyMatrixCType <> " delta_M(- self_energy_PR * M_tree " <>
"- M_tree * self_energy_PL - self_energy_1);\n" <>
"delta_M(2,2) -= M_tree(2,2) * (qcd_1l + qcd_2l);\n"
"delta_M(2,2) -= M_tree(2,2) * (qcd_1l + qcd_2l + qcd_3l);\n"
,
"const " <> selfEnergyMatrixCType <> " delta_M(- self_energy_PR * M_tree " <>
"- M_tree * self_energy_PL - self_energy_1);\n"
Expand Down
8 changes: 4 additions & 4 deletions src/spectrum_generator_settings.cpp
Expand Up @@ -63,7 +63,7 @@ void Spectrum_generator_settings::set(Settings o, double value)
* | higgs_2loop_correction_at_at | 0, 1 | 1 (= enabled) |
* | higgs_2loop_correction_atau_atau | 0, 1 | 1 (= enabled) |
* | force_output | 0 (no) or 1 (yes) | 0 (= no) |
* | top_2loop_corrections_qcd | 0, 1 | 1 (= enabled) |
* | top_pole_qcd_corrections | 0 (1L), 1 (2L), 2 (3L) | 1 (= 2L QCD) |
* | beta_zero_threshold | any positive double | 1.0e-11 |
* | calculate_observables | 0 (no) or 1 (yes) | 0 (= no) |
* | force_positive_masses | 0 (no) or 1 (yes) | 0 (= no) |
Expand All @@ -84,7 +84,7 @@ void Spectrum_generator_settings::reset()
values[higgs_2loop_correction_at_at] = 1.;
values[higgs_2loop_correction_atau_atau] = 1.;
values[calculate_sm_masses] = 0.; // 0 = false
values[top_2loop_corrections_qcd] = 1.;
values[top_pole_qcd_corrections] = 1.;
values[beta_zero_threshold] = 1.0e-11;
values[calculate_observables] = 0;
values[force_positive_masses] = 0;
Expand All @@ -98,7 +98,7 @@ Two_loop_corrections Spectrum_generator_settings::get_two_loop_corrections() con
two_loop_corrections.higgs_ab_as = get(higgs_2loop_correction_ab_as);
two_loop_corrections.higgs_at_at = get(higgs_2loop_correction_at_at);
two_loop_corrections.higgs_atau_atau = get(higgs_2loop_correction_atau_atau);
two_loop_corrections.top_qcd = get(top_2loop_corrections_qcd);
two_loop_corrections.top_qcd = get(top_pole_qcd_corrections);

return two_loop_corrections;
}
Expand All @@ -110,7 +110,7 @@ void Spectrum_generator_settings::set_two_loop_corrections(
set(higgs_2loop_correction_ab_as, two_loop_corrections.higgs_ab_as);
set(higgs_2loop_correction_at_at, two_loop_corrections.higgs_at_at);
set(higgs_2loop_correction_atau_atau, two_loop_corrections.higgs_atau_atau);
set(top_2loop_corrections_qcd, two_loop_corrections.top_qcd);
set(top_pole_qcd_corrections, two_loop_corrections.top_qcd);
}

} // namespace flexiblesusy
2 changes: 1 addition & 1 deletion src/spectrum_generator_settings.hpp
Expand Up @@ -47,7 +47,7 @@ class Spectrum_generator_settings {
higgs_2loop_correction_at_at, ///< [10] Higgs 2-loop correction O(alpha_t alpha_t + alpha_t alpha_b + alpha_b alpha_b)
higgs_2loop_correction_atau_atau, ///< [11] Higgs 2-loop correction O(alpha_tau alpha_tau)
force_output, ///< [12] force output
top_2loop_corrections_qcd, ///< [13] Top-quark 2-loop QCD corrections
top_pole_qcd_corrections, ///< [13] Top-quark pole mass QCD corrections
beta_zero_threshold, ///< [14] beta function zero threshold
calculate_observables, ///< [15] calculate observables (a_muon, ...)
force_positive_masses, ///< [16] force positive masses of majoran fermions
Expand Down
4 changes: 2 additions & 2 deletions src/two_loop_corrections.hpp
Expand Up @@ -34,10 +34,10 @@ struct Two_loop_corrections {
, higgs_ab_as(true)
, higgs_at_at(true)
, higgs_atau_atau(true)
, top_qcd(true)
, top_qcd(1)
{}
bool higgs_at_as, higgs_ab_as, higgs_at_at, higgs_atau_atau;
bool top_qcd;
unsigned top_qcd; ///< top pole mass QCD corrections
};

} // namespace flexiblesusy
Expand Down
2 changes: 1 addition & 1 deletion templates/mass_eigenstates.cpp.in
Expand Up @@ -73,7 +73,7 @@ using namespace @ModelName@_info;
#define HIGGS_2LOOP_CORRECTION_AB_AS two_loop_corrections.higgs_ab_as
#define HIGGS_2LOOP_CORRECTION_AT_AT two_loop_corrections.higgs_at_at
#define HIGGS_2LOOP_CORRECTION_ATAU_ATAU two_loop_corrections.higgs_atau_atau
#define TOP_2LOOP_CORRECTION_QCD two_loop_corrections.top_qcd
#define TOP_POLE_QCD_CORRECTION two_loop_corrections.top_qcd
#define HIGGS_3LOOP_CORRECTION_AT_AS_AS 1

CLASSNAME::@ModelName@_mass_eigenstates(const @ModelName@_input_parameters& input_)
Expand Down

0 comments on commit 5e0bca1

Please sign in to comment.