Skip to content

Commit

Permalink
support IMEXTPAR input list
Browse files Browse the repository at this point in the history
which is needed for SLHA-2.
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Dec 13, 2016
1 parent f965daf commit 89f994b
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 20 deletions.
21 changes: 17 additions & 4 deletions meta/FlexibleSUSY.m
Expand Up @@ -119,6 +119,7 @@ FlexibleSUSY model file (FlexibleSUSY.m).
PotentialLSPParticles = {};
ExtraSLHAOutputBlocks = {};
FSExtraInputParameters = {};
IMEXTPAR = {};

(* Standard Model input parameters (SLHA input parameters) *)
(* {parameter, {"block", entry}, type} *)
Expand Down Expand Up @@ -473,6 +474,9 @@ FlexibleSUSY model file (FlexibleSUSY.m).
If[Head[SARAH`EXTPAR] =!= List,
SARAH`EXTPAR = {};
];
If[Head[IMEXTPAR] =!= List,
IMEXTPAR = {};
];
If[Head[FlexibleSUSY`TreeLevelEWSBSolution] =!= List,
FlexibleSUSY`TreeLevelEWSBSolution = {};
];
Expand Down Expand Up @@ -1604,7 +1608,7 @@ corresponding tadpole is real or imaginary (only in models with CP
WriteUtilitiesClass[massMatrices_List, betaFun_List, inputParameters_List,
extraSLHAOutputBlocks_List, files_List] :=
Module[{k, particles, susyParticles, smParticles,
minpar, extpar, extraSLHAInputParameters,
minpar, extpar, imextpar, extraSLHAInputParameters,
fillSpectrumVectorWithSusyParticles = "",
fillSpectrumVectorWithSMParticles = "",
particleLaTeXNames = "",
Expand All @@ -1616,9 +1620,11 @@ corresponding tadpole is real or imaginary (only in models with CP
isSupersymmetricModel = "false",
isFlexibleEFTHiggs = "false",
fillInputParametersFromMINPAR = "", fillInputParametersFromEXTPAR = "",
fillInputParametersFromIMEXTPAR = "",
writeSLHAMassBlock = "", writeSLHAMixingMatricesBlocks = "",
writeSLHAModelParametersBlocks = "", writeSLHAPhasesBlocks = "",
writeSLHAMinparBlock = "", writeSLHAExtparBlock = "", writeSLHAInputParameterBlocks = "",
writeSLHAMinparBlock = "", writeSLHAExtparBlock = "",
writeSLHAImExtparBlock = "", writeSLHAInputParameterBlocks = "",
readLesHouchesInputParameters, writeExtraSLHAOutputBlock = "",
readLesHouchesOutputParameters, readLesHouchesPhysicalParameters,
gaugeCouplingNormalizationDecls = "",
Expand All @@ -1630,10 +1636,12 @@ corresponding tadpole is real or imaginary (only in models with CP
smParticles = Complement[particles, susyParticles];
minpar = Cases[inputParameters, {p_, {"MINPAR", idx_}, ___} :> {idx, p}];
extpar = Cases[inputParameters, {p_, {"EXTPAR", idx_}, ___} :> {idx, p}];
imextpar = Cases[inputParameters, {p_, {"IMEXTPAR", idx_}, ___} :> {idx, p}];
extraSLHAInputParameters = Complement[
inputParameters,
Cases[inputParameters, {_, {"MINPAR", _}, ___}],
Cases[inputParameters, {_, {"EXTPAR", _}, ___}]
Cases[inputParameters, {_, {"EXTPAR", _}, ___}],
Cases[inputParameters, {_, {"IMEXTPAR", _}, ___}]
];
particleEnum = TreeMasses`CreateParticleEnum[particles];
particleMassEnum = TreeMasses`CreateParticleMassEnum[particles];
Expand All @@ -1654,6 +1662,7 @@ corresponding tadpole is real or imaginary (only in models with CP
isFlexibleEFTHiggs = If[FlexibleSUSY`FlexibleEFTHiggs === True, "true", "false"];
fillInputParametersFromMINPAR = Parameters`FillInputParametersFromTuples[minpar, "MINPAR"];
fillInputParametersFromEXTPAR = Parameters`FillInputParametersFromTuples[extpar, "EXTPAR"];
fillInputParametersFromIMEXTPAR = Parameters`FillInputParametersFromTuples[imextpar, "IMEXTPAR"];
readLesHouchesInputParameters = WriteOut`ReadLesHouchesInputParameters[{First[#], #[[2]]}& /@ extraSLHAInputParameters];
readLesHouchesOutputParameters = WriteOut`ReadLesHouchesOutputParameters[];
readLesHouchesPhysicalParameters = WriteOut`ReadLesHouchesPhysicalParameters["LOCALPHYSICAL", "DEFINE_PHYSICAL_PARAMETER"];
Expand All @@ -1663,6 +1672,7 @@ corresponding tadpole is real or imaginary (only in models with CP
writeSLHAPhasesBlocks = WriteOut`WriteSLHAPhasesBlocks[];
writeSLHAMinparBlock = WriteOut`WriteSLHAMinparBlock[minpar];
writeSLHAExtparBlock = WriteOut`WriteSLHAExtparBlock[extpar];
writeSLHAImExtparBlock = WriteOut`WriteSLHAImExtparBlock[imextpar];
writeSLHAInputParameterBlocks = WriteSLHAInputParameterBlocks[extraSLHAInputParameters];
writeExtraSLHAOutputBlock = WriteOut`WriteExtraSLHAOutputBlock[extraSLHAOutputBlocks];
numberOfDRbarBlocks = WriteOut`GetNumberOfDRbarBlocks[];
Expand All @@ -1688,6 +1698,7 @@ corresponding tadpole is real or imaginary (only in models with CP
"@isFlexibleEFTHiggs@" -> isFlexibleEFTHiggs,
"@fillInputParametersFromMINPAR@" -> IndentText[fillInputParametersFromMINPAR],
"@fillInputParametersFromEXTPAR@" -> IndentText[fillInputParametersFromEXTPAR],
"@fillInputParametersFromIMEXTPAR@" -> IndentText[fillInputParametersFromIMEXTPAR],
"@readLesHouchesInputParameters@" -> IndentText[readLesHouchesInputParameters],
"@readLesHouchesOutputParameters@" -> IndentText[readLesHouchesOutputParameters],
"@readLesHouchesPhysicalParameters@" -> IndentText[readLesHouchesPhysicalParameters],
Expand All @@ -1697,6 +1708,7 @@ corresponding tadpole is real or imaginary (only in models with CP
"@writeSLHAPhasesBlocks@" -> IndentText[writeSLHAPhasesBlocks],
"@writeSLHAMinparBlock@" -> IndentText[writeSLHAMinparBlock],
"@writeSLHAExtparBlock@" -> IndentText[writeSLHAExtparBlock],
"@writeSLHAImExtparBlock@" -> IndentText[writeSLHAImExtparBlock],
"@writeSLHAInputParameterBlocks@" -> IndentText[writeSLHAInputParameterBlocks],
"@writeExtraSLHAOutputBlock@" -> IndentText[writeExtraSLHAOutputBlock],
"@gaugeCouplingNormalizationDecls@"-> IndentText[gaugeCouplingNormalizationDecls],
Expand Down Expand Up @@ -2140,7 +2152,8 @@ corresponding tadpole is real or imaginary (only in models with CP
(* collect input parameters from MINPAR and EXTPAR lists *)
inputParameters = Join[
DeleteDuplicates[{#[[2]], {"MINPAR", #[[1]]}, GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[SARAH`MINPAR]],
DeleteDuplicates[{#[[2]], {"EXTPAR", #[[1]]}, GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[SARAH`EXTPAR]]
DeleteDuplicates[{#[[2]], {"EXTPAR", #[[1]]}, GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[SARAH`EXTPAR]],
DeleteDuplicates[{#[[2]], {"IMEXTPAR", #[[1]]}, GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[IMEXTPAR]]
];

Parameters`SetInputParameters[inputParameters];
Expand Down
33 changes: 17 additions & 16 deletions meta/WriteOut.m
Expand Up @@ -7,6 +7,7 @@
PrintParameters::usage="Creates parameter printout statements";
PrintInputParameters::usage="Creates input parameter printout statements";
WriteSLHAExtparBlock::usage="";
WriteSLHAImExtparBlock::usage="";
WriteSLHAMassBlock::usage="";
WriteSLHAMixingMatricesBlocks::usage="";
WriteSLHAModelParametersBlocks::usage="";
Expand Down Expand Up @@ -212,26 +213,26 @@
WriteSLHAExtparBlock[{}] := "";

WriteSLHAExtparBlock[extpar_List] :=
Module[{result, body = ""},
(body = body <> WriteParameterTuple[#, "extpar"])& /@ extpar;
result = "std::ostringstream extpar;\n\n" <>
"extpar << \"Block EXTPAR\\n\";\n" <>
body <>
"slha_io.set_block(extpar);\n";
Return[result];
];
"std::ostringstream extpar;\n\n" <>
"extpar << \"Block EXTPAR\\n\";\n" <>
StringJoin[WriteParameterTuple[#, "extpar"]& /@ extpar] <>
"slha_io.set_block(extpar);\n";

WriteSLHAImExtparBlock[{}] := "";

WriteSLHAImExtparBlock[imextpar_List] :=
"std::ostringstream imextpar;\n\n" <>
"imextpar << \"Block IMEXTPAR\\n\";\n" <>
StringJoin[WriteParameterTuple[#, "imextpar"]& /@ imextpar] <>
"slha_io.set_block(imextpar);\n";

WriteSLHAMinparBlock[{}] := "";

WriteSLHAMinparBlock[minpar_List] :=
Module[{result, body = ""},
(body = body <> WriteParameterTuple[#, "minpar"])& /@ minpar;
result = "std::ostringstream minpar;\n\n" <>
"minpar << \"Block MINPAR\\n\";\n" <>
body <>
"slha_io.set_block(minpar);\n";
Return[result];
];
"std::ostringstream minpar;\n\n" <>
"minpar << \"Block MINPAR\\n\";\n" <>
StringJoin[WriteParameterTuple[#, "minpar"]& /@ minpar] <>
"slha_io.set_block(minpar);\n";

WriteSLHAInputParameterBlocks[{}] := "";

Expand Down
22 changes: 22 additions & 0 deletions templates/slha_io.cpp.in
Expand Up @@ -70,6 +70,16 @@ void @ModelName@_slha_io::set_extpar(const @ModelName@_input_parameters& input)
@writeSLHAExtparBlock@
}

/**
* Stores the IMEXTPAR input parameters in the SLHA object.
*
* @param input struct of input parameters
*/
void @ModelName@_slha_io::set_imextpar(const @ModelName@_input_parameters& input)
{
@writeSLHAImExtparBlock@
}

/**
* Stores the MODSEL input parameters in the SLHA object.
*
Expand Down Expand Up @@ -99,6 +109,7 @@ void @ModelName@_slha_io::set_input(const @ModelName@_input_parameters& input)
{
set_minpar(input);
set_extpar(input);
set_imextpar(input);

@writeSLHAInputParameterBlocks@
}
Expand Down Expand Up @@ -288,8 +299,13 @@ void @ModelName@_slha_io::fill(@ModelName@_input_parameters& input) const
return fill_extpar_tuple(input, key, value);
};

SLHA_io::Tuple_processor imextpar_processor = [&input, this] (int key, double value) {
return fill_imextpar_tuple(input, key, value);
};

slha_io.read_block("MINPAR", minpar_processor);
slha_io.read_block("EXTPAR", extpar_processor);
slha_io.read_block("IMEXTPAR", imextpar_processor);

@readLesHouchesInputParameters@
}
Expand Down Expand Up @@ -356,6 +372,12 @@ void @ModelName@_slha_io::fill_extpar_tuple(@ModelName@_input_parameters& input,
@fillInputParametersFromEXTPAR@
}

void @ModelName@_slha_io::fill_imextpar_tuple(@ModelName@_input_parameters& input,
int key, double value)
{
@fillInputParametersFromIMEXTPAR@
}

/**
* Reads pole masses and mixing matrices from a SLHA output file to be filled.
*/
Expand Down
2 changes: 2 additions & 0 deletions templates/slha_io.hpp.in
Expand Up @@ -101,6 +101,7 @@ public:

static void fill_minpar_tuple(@ModelName@_input_parameters&, int, double);
static void fill_extpar_tuple(@ModelName@_input_parameters&, int, double);
static void fill_imextpar_tuple(@ModelName@_input_parameters&, int, double);

template <class Model>
static void fill_slhaea(SLHAea::Coll&, const @ModelName@_slha<Model>&, const softsusy::QedQcd&, const @ModelName@_scales&, const @ModelName@_observables&);
Expand All @@ -113,6 +114,7 @@ private:
bool print_imaginary_parts_of_majorana_mixings;

void set_extpar(const @ModelName@_input_parameters&);
void set_imextpar(const @ModelName@_input_parameters&);
void set_minpar(const @ModelName@_input_parameters&);
void set_mass(const @ModelName@_physical&, bool);
void set_mixing_matrices(const @ModelName@_physical&, bool);
Expand Down

0 comments on commit 89f994b

Please sign in to comment.