Skip to content

Commit

Permalink
adding SMtower testing model used as a consistency check
Browse files Browse the repository at this point in the history
It checks whether the SM model yields the same as the SMtower, where
the SM is matched to the SM at the high scale.
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Jul 25, 2016
1 parent a217f17 commit 62a10ed
Show file tree
Hide file tree
Showing 5 changed files with 239 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Expand Up @@ -41,6 +41,7 @@ model_files/complexMSSM export-ignore
model_files/cCMSSM export-ignore
model_files/CMSSMCPV export-ignore
model_files/NMSSMCPV export-ignore
model_files/SMtower export-ignore

models/fmssm export-ignore
models/fmssmn export-ignore
Expand Down
64 changes: 64 additions & 0 deletions model_files/SMtower/FlexibleSUSY.m.in
@@ -0,0 +1,64 @@

FSModelName = "@CLASSNAME@";
FSEigenstates = SARAH`EWSB;
FSDefaultSARAHModel = SM;
OnlyLowEnergyFlexibleSUSY = True;
SMTower = True;

(* SM input parameters *)

MINPAR = { {1, LambdaIN} };
EXTPAR = { {0, Qin} };

EWSBOutputParameters = { mu2 };

SUSYScale = Qin;

SUSYScaleFirstGuess = Qin;

SUSYScaleInput = {
{\[Lambda], LambdaIN}
};

LowScale = LowEnergyConstant[MT];

LowScaleFirstGuess = LowEnergyConstant[MT];

LowScaleInput = {
{v, 2 MZDRbar / Sqrt[GUTNormalization[g1]^2 g1^2 + g2^2]},
{Yu, Automatic},
{Yd, Automatic},
{Ye, Automatic},
FSSolveEWSBFor[EWSBOutputParameters]
};

InitialGuessAtLowScale = {
{v, LowEnergyConstant[vev]},
{Yu, Automatic},
{Yd, Automatic},
{Ye, Automatic}
};

SUSYScaleUserMatching = {
{v, vev}
};

SMParticles = {
Electron, TopQuark, BottomQuark,
VectorP, VectorZ, VectorG, VectorW, Neutrino,
Hp, Ah, (* goldstones *)
hh (* Higgs *)
};

UseSM3LoopRGEs = True;
UseHiggs2LoopSM = True;

DefaultPoleMassPrecision = HighPrecision;
HighPoleMassPrecision = {hh};
MediumPoleMassPrecision = {};
LowPoleMassPrecision = {};

SARAH`ParameterDefinitions = Append[
Cases[SARAH`ParameterDefinitions, {p_ /; p =!= SARAH`\[Lambda], ___}],
{SARAH`\[Lambda], { Description -> "SM Higgs Selfcouplings" } }
];
41 changes: 41 additions & 0 deletions model_files/SMtower/LesHouches.in.SMtower
@@ -0,0 +1,41 @@
Block MODSEL # Select model
# 12 1000 # parameter output scale (GeV)
Block FlexibleSUSY
0 1.000000000e-04 # precision goal
1 0 # max. iterations (0 = automatic)
2 0 # algorithm (0 = two_scale, 1 = lattice)
3 1 # calculate SM pole masses
4 2 # pole mass loop order
5 2 # EWSB loop order
6 3 # beta-functions loop order
7 2 # threshold corrections loop order
8 1 # Higgs 2-loop corrections O(alpha_t alpha_s)
9 0 # Higgs 2-loop corrections O(alpha_b alpha_s)
10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2)
11 0 # Higgs 2-loop corrections O(alpha_tau^2)
12 0 # force output
13 1 # Top quark 2-loop corrections QCD
14 1.000000000e-11 # beta-function zero threshold
15 0 # calculate observables (a_muon, ...)
Block SMINPUTS # Standard Model inputs
1 1.279340000e+02 # alpha^(-1) SM MSbar(MZ)
2 1.166370000e-05 # G_Fermi
3 1.176000000e-01 # alpha_s(MZ) SM MSbar
4 9.118760000e+01 # MZ(pole)
5 4.200000000e+00 # mb(mb) SM MSbar
6 1.733400000e+02 # mtop(pole)
7 1.777000000e+00 # mtau(pole)
8 0.000000000e+00 # mnu3(pole)
9 80.404 # MW pole
11 5.109989020e-04 # melectron(pole)
12 0.000000000e+00 # mnu1(pole)
13 1.056583570e-01 # mmuon(pole)
14 0.000000000e+00 # mnu2(pole)
21 4.750000000e-03 # md(2 GeV) MS-bar
22 2.400000000e-03 # mu(2 GeV) MS-bar
23 1.040000000e-01 # ms(2 GeV) MS-bar
24 1.270000000e+00 # mc(mc) MS-bar
Block MINPAR # Input parameters
1 0.192 # Lambda(Qin)
Block EXTPAR # Input parameters
0 1000 # input scale Qin
132 changes: 132 additions & 0 deletions test/test_SMtower.sh
@@ -0,0 +1,132 @@
#!/bin/sh

BASEDIR=$(dirname $0)
MODELDIR=${BASEDIR}/../models

. "$BASEDIR/test.sh"

# prints SLHA block
print_slha_block_awk='
BEGIN {
is_block = 0;
if (block == "") {
print "Error: block name not defined";
print " Please define the block name with -v block=<block-name>";
exit 1
}
}
{
pattern = "^block[[:blank:]]*" tolower(block) "([^[:graph:]].*)?$";
not_pattern = "^block[[:blank:]]*.*$";
if (tolower($0) ~ pattern) {
is_block = 1
} else if (tolower($0) ~ not_pattern) {
is_block = 0
};
if (is_block)
print $0
}
'

# prints block entry
# expects block entry keys in the form x or x:y or x:y:z etc.
print_block_entry_awk='
{
len = split(keys,k,":");
matches = 1;
for (i in k) {
if ($(i) != k[i])
matches = 0
}
if (matches == 1)
print $(len + 1)
}
'

input="
Block MODSEL # Select model
# 12 1000 # parameter output scale (GeV)
Block FlexibleSUSY
0 1.000000000e-04 # precision goal
1 0 # max. iterations (0 = automatic)
2 0 # algorithm (0 = two_scale, 1 = lattice)
3 1 # calculate SM pole masses
4 1 # pole mass loop order
5 1 # EWSB loop order
6 3 # beta-functions loop order
7 2 # threshold corrections loop order
8 1 # Higgs 2-loop corrections O(alpha_t alpha_s)
9 0 # Higgs 2-loop corrections O(alpha_b alpha_s)
10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2)
11 0 # Higgs 2-loop corrections O(alpha_tau^2)
12 0 # force output
13 1 # Top quark 2-loop corrections QCD
14 1.000000000e-11 # beta-function zero threshold
15 0 # calculate observables (a_muon, ...)
Block SMINPUTS # Standard Model inputs
1 1.279340000e+02 # alpha^(-1) SM MSbar(MZ)
2 1.166370000e-05 # G_Fermi
3 1.176000000e-01 # alpha_s(MZ) SM MSbar
4 9.118760000e+01 # MZ(pole)
5 4.200000000e+00 # mb(mb) SM MSbar
6 1.733400000e+02 # mtop(pole)
7 1.777000000e+00 # mtau(pole)
8 0.000000000e+00 # mnu3(pole)
9 80.404 # MW pole
11 5.109989020e-04 # melectron(pole)
12 0.000000000e+00 # mnu1(pole)
13 1.056583570e-01 # mmuon(pole)
14 0.000000000e+00 # mnu2(pole)
21 4.750000000e-03 # md(2 GeV) MS-bar
22 2.400000000e-03 # mu(2 GeV) MS-bar
23 1.040000000e-01 # ms(2 GeV) MS-bar
24 1.270000000e+00 # mc(mc) MS-bar
Block MINPAR # Input parameters
1 0.192 # Lambda(Qin)
Block EXTPAR # Input parameters
0 1000 # input scale Qin
1 173.34 # scale QEWSB
"

run_sg() {
local SG="$1"
local slha_input="$2"
local slha_output=
local block=
local value=
local output_block=MASS
local output_entry=25

# run the spectrum generator
slha_output=$(echo "$slha_input" | $SG --slha-input-file=- 2>/dev/null)

block=$(echo "$slha_output" | awk -v block="$output_block" "$print_slha_block_awk")
value=$(echo "$block" | awk -v keys="$output_entry" "$print_block_entry_awk" | tail -n 1)

[ "x$value" = "x" ] && value="-"

echo $value
}

error=0

MhSM=$(run_sg "$MODELDIR/SM/run_SM.x" "$input")
MhSMtower=$(run_sg "$MODELDIR/SMtower/run_SMtower.x" "$input")

echo "Mh in the SM : $MhSM"
echo "Mh in the SMtower: $MhSMtower"

CHECK_EQUAL_FRACTION "$MhSM" "$MhSMtower" "0.0001" || error=$(expr $error + 1)

if [ "x$error" != "x0" ] ; then
echo "Test FAILED: There were $error errors."
else
echo "All tests passed."
fi

exit $error
1 change: 1 addition & 0 deletions test/test_run_all_spectrum_generators.sh
Expand Up @@ -74,6 +74,7 @@ SM,_DEFAULT_,0
cSM,${DEFAULT_SM_INPUT},0
SMEWSBAtMZ,${DEFAULT_SM_INPUT},0
SMHighPrecision,${DEFAULT_SM_INPUT},0
SMtower,_DEFAULT_,0
SMSSM,_DEFAULT_,0
SplitMSSM,_DEFAULT_,0
SSM,_DEFAULT_,0
Expand Down

0 comments on commit 62a10ed

Please sign in to comment.