Skip to content

Commit

Permalink
fill GM2Calc interface data struct from model parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Dec 20, 2015
1 parent 2350080 commit 0349ede
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 11 deletions.
65 changes: 63 additions & 2 deletions meta/Observables.m
Expand Up @@ -10,14 +10,75 @@
Begin["`Private`"];

CalculateObservable[obs_ /; obs === FlexibleSUSYObservable`aMuonGM2Calc, structName_String] :=
structName <> ".AMUGM2CALC = gm2calc_calculate_amu();\n";
structName <> ".AMUGM2CALC = gm2calc_calculate_amu(gm2calc_data);";

CalculateObservable[obs_ /; obs === FlexibleSUSYObservable`aMuonGM2CalcUncertainty, structName_String] :=
structName <> ".AMUGM2CALCUNCERTAINTY = gm2calc_calculate_amu_uncertainty();\n";
structName <> ".AMUGM2CALCUNCERTAINTY = gm2calc_calculate_amu_uncertainty(gm2calc_data);";

FillGM2CalcInterfaceData[struct_String] :=
Module[{filling,
pseudoscalar, smuon, muonsneutrino, chargino, neutralino,
mu, m1, m2, m3, mq2, mu2, md2, ml2, me2, tu, td, te},
pseudoscalar = Parameters`GetParticleFromDescription["Pseudo-Scalar Higgs"];
smuon = Parameters`GetParticleFromDescription["Smuon"];
muonsneutrino = Parameters`GetParticleFromDescription["Muon Sneutrino"];
chargino = Parameters`GetParticleFromDescription["Charginos"];
neutralino = Parameters`GetParticleFromDescription["Neutralinos"];
mu = Parameters`GetParameterFromDescription["Mu-parameter"];
m1 = Parameters`GetParameterFromDescription["Bino Mass parameter"];
m2 = Parameters`GetParameterFromDescription["Wino Mass parameter"];
m3 = Parameters`GetParameterFromDescription["Gluino Mass parameter"];
mq2 = Parameters`GetParameterFromDescription["Softbreaking left Squark Mass"];
mu2 = Parameters`GetParameterFromDescription["Softbreaking right Up-Squark Mass"];
md2 = Parameters`GetParameterFromDescription["Softbreaking right Down-Squark Mass"];
ml2 = Parameters`GetParameterFromDescription["Softbreaking left Slepton Mass"];
me2 = Parameters`GetParameterFromDescription["Softbreaking right Slepton Mass"];
tu = Parameters`GetParameterFromDescription["Trilinear-Up-Coupling"];
td = Parameters`GetParameterFromDescription["Trilinear-Down-Coupling"];
te = Parameters`GetParameterFromDescription["Trilinear-Lepton-Coupling"];
filling = \
struct <> ".MA0 = MODEL.get_physical()." <>
CConversion`RValueToCFormString[FlexibleSUSY`M[pseudoscalar][1]] <> ";\n" <>
struct <> ".MSvm = MODEL.get_physical()." <>
CConversion`RValueToCFormString[FlexibleSUSY`M[muonsneutrino]] <> ";\n" <>
struct <> ".MSm = MODEL.get_physical()." <>
CConversion`RValueToCFormString[FlexibleSUSY`M[smuon]] <> ";\n" <>
struct <> ".MCha = MODEL.get_physical()." <>
CConversion`RValueToCFormString[FlexibleSUSY`M[chargino]] <> ";\n" <>
struct <> ".MChi = MODEL.get_physical()." <>
CConversion`RValueToCFormString[FlexibleSUSY`M[neutralino]] <> ";\n" <>
struct <> ".scale = MODEL.get_scale();\n" <>
struct <> ".TB = MODEL.get_" <> CConversion`RValueToCFormString[SARAH`VEVSM2] <> "() / " <>
"MODEL.get_" <> CConversion`RValueToCFormString[SARAH`VEVSM1] <> "();\n" <>
struct <> ".Mu = MODEL.get_" <> CConversion`RValueToCFormString[mu] <> "();\n" <>
struct <> ".M1 = MODEL.get_" <> CConversion`RValueToCFormString[m1] <> "();\n" <>
struct <> ".M2 = MODEL.get_" <> CConversion`RValueToCFormString[m2] <> "();\n" <>
struct <> ".M3 = MODEL.get_" <> CConversion`RValueToCFormString[m3] <> "();\n" <>
struct <> ".mq2 = MODEL.get_" <> CConversion`RValueToCFormString[mq2] <> "();\n" <>
struct <> ".mu2 = MODEL.get_" <> CConversion`RValueToCFormString[mu2] <> "();\n" <>
struct <> ".md2 = MODEL.get_" <> CConversion`RValueToCFormString[md2] <> "();\n" <>
struct <> ".ml2 = MODEL.get_" <> CConversion`RValueToCFormString[ml2] <> "();\n" <>
struct <> ".me2 = MODEL.get_" <> CConversion`RValueToCFormString[me2] <> "();\n" <>
struct <> ".TYu = MODEL.get_" <> CConversion`RValueToCFormString[tu] <> "();\n" <>
struct <> ".TYd = MODEL.get_" <> CConversion`RValueToCFormString[td] <> "();\n" <>
struct <> ".TYe = MODEL.get_" <> CConversion`RValueToCFormString[te] <> "();\n";
"GM2Calc_data " <> struct <> ";\n" <> filling
];

FillInterfaceData[{}] := "";

FillInterfaceData[obs_List] :=
Module[{},
If[MemberQ[obs,FlexibleSUSYObservable`aMuonGM2Calc] ||
MemberQ[obs,FlexibleSUSYObservable`aMuonGM2CalcUncertainty],
FillGM2CalcInterfaceData["gm2calc_data"]
]
];

CalculateObservables[something_, structName_String] :=
Module[{observables},
observables = Cases[something, a_?(MemberQ[FlexibleSUSYObservable`FSObservables,#]&) :> a, {0, Infinity}];
FillInterfaceData[observables] <> "\n" <>
Utils`StringJoinWithSeparator[CalculateObservable[#,structName]& /@ observables, "\n"]
];

Expand Down
12 changes: 6 additions & 6 deletions src/gm2calc_interface.cpp
Expand Up @@ -75,9 +75,9 @@ gm2calc::MSSMNoFV_onshell setup(const GM2Calc_data& data)
model.set_md2(data.md2); // 2L
model.set_mu2(data.mu2); // 2L
model.set_me2(data.me2); // 2L
model.set_Au(data.Au); // 2L
model.set_Ad(data.Ad); // 2L
model.set_Ae(data.Ae); // 2L
model.set_TYu(data.TYu); // 2L
model.set_TYd(data.TYd); // 2L
model.set_TYe(data.TYe); // 2L

// convert DR-bar parameters to on-shell
model.convert_to_onshell();
Expand Down Expand Up @@ -123,9 +123,9 @@ void GM2Calc_data::initialize()
md2 = model.get_md2();
ml2 = model.get_ml2();
me2 = model.get_me2();
Au = model.get_Au();
Ad = model.get_Ad();
Ae = model.get_Ae();
TYu = model.get_TYu();
TYd = model.get_TYd();
TYe = model.get_TYe();
}

double gm2calc_calculate_amu(const GM2Calc_data& data)
Expand Down
6 changes: 3 additions & 3 deletions src/gm2calc_interface.hpp
Expand Up @@ -52,9 +52,9 @@ struct GM2Calc_data {
Eigen::Matrix<double,3,3> md2; ///< right-handed down-type squark mass parameters squared
Eigen::Matrix<double,3,3> ml2; ///< left-handed slepton mass parameters squared
Eigen::Matrix<double,3,3> me2; ///< right-handed down-type slepton mass parameters squared
Eigen::Matrix<double,3,3> Au; ///< up-type squark trilinear coupling
Eigen::Matrix<double,3,3> Ad; ///< down-type squark trilinear coupling
Eigen::Matrix<double,3,3> Ae; ///< down-type slepton trilinear coupling
Eigen::Matrix<double,3,3> TYu; ///< up-type squark trilinear coupling
Eigen::Matrix<double,3,3> TYd; ///< down-type squark trilinear coupling
Eigen::Matrix<double,3,3> TYe; ///< down-type slepton trilinear coupling
};

/// calculates amu using GM2Calc
Expand Down

0 comments on commit 0349ede

Please sign in to comment.