Skip to content

Commit

Permalink
adding support for IMMINPAR input block
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Feb 27, 2017
1 parent fb72ded commit 48336c9
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 2 deletions.
34 changes: 34 additions & 0 deletions doc/model_file.dox
Expand Up @@ -142,6 +142,40 @@ _Note_: Unspecified parameters are assumed to be zero.

_____________________________________________________________________

__Symbol__: `IMMINPAR`

__Default value__: `{}`

__Description__:

The `IMMINPAR` variable is a list of input parameters for the spectrum
generator, which is read of the `IMMINPAR` block of the SLHA input
file. The list assigned to the `IMMINPAR` variable must have the same
form as the `MINPAR` variable.

__Example__: In the CP-violating MSSM (`CMSSMCPV`) the `IMMINPAR` block
has the form

~~~~~~~~~~~~~~~~~~~~{.m}
IMMINPAR = {
{2, Imm12},
{5, ImAzero}
};
~~~~~~~~~~~~~~~~~~~~

In this case the input parameters can be given in the SLHA input file
as

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Block IMMINPAR
2 10 # Imm12
5 10 # ImAzero
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

_Note_: Unspecified parameters are assumed to be zero.

_____________________________________________________________________

__Symbol__: `IMEXTPAR`

__Default value__: `{}`
Expand Down
17 changes: 15 additions & 2 deletions meta/FlexibleSUSY.m
Expand Up @@ -124,6 +124,7 @@ FlexibleSUSY model file (FlexibleSUSY.m).
ExtraSLHAOutputBlocks = {};
FSExtraInputParameters = {};
FSAuxiliaryParameters = {};
IMMINPAR = {};
IMEXTPAR = {};

(* Standard Model input parameters (SLHA input parameters) *)
Expand Down Expand Up @@ -479,6 +480,9 @@ FlexibleSUSY model file (FlexibleSUSY.m).
If[Head[SARAH`EXTPAR] =!= List,
SARAH`EXTPAR = {};
];
If[Head[IMMINPAR] =!= List,
IMMINPAR = {};
];
If[Head[IMEXTPAR] =!= List,
IMEXTPAR = {};
];
Expand Down Expand Up @@ -1664,7 +1668,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, imextpar, extraSLHAInputParameters,
minpar, extpar, imminpar, imextpar, extraSLHAInputParameters,
fillSpectrumVectorWithSusyParticles = "",
fillSpectrumVectorWithSMParticles = "",
particleLaTeXNames = "",
Expand All @@ -1676,11 +1680,13 @@ corresponding tadpole is real or imaginary (only in models with CP
isSupersymmetricModel = "false",
isFlexibleEFTHiggs = "false",
fillInputParametersFromMINPAR = "", fillInputParametersFromEXTPAR = "",
fillInputParametersFromIMMINPAR = "",
fillInputParametersFromIMEXTPAR = "",
writeSLHAMassBlock = "", writeSLHAMixingMatricesBlocks = "",
writeSLHAModelParametersBlocks = "", writeSLHAPhasesBlocks = "",
writeSLHAMinparBlock = "", writeSLHAExtparBlock = "",
writeSLHAImExtparBlock = "", writeSLHAInputParameterBlocks = "",
writeSLHAImMinparBlock = "", writeSLHAImExtparBlock = "",
writeSLHAInputParameterBlocks = "",
readLesHouchesInputParameters, writeExtraSLHAOutputBlock = "",
readLesHouchesOutputParameters, readLesHouchesPhysicalParameters,
gaugeCouplingNormalizationDecls = "",
Expand All @@ -1692,11 +1698,13 @@ 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}];
imminpar = Cases[inputParameters, {p_, {"IMMINPAR", idx_}, ___} :> {idx, p}];
imextpar = Cases[inputParameters, {p_, {"IMEXTPAR", idx_}, ___} :> {idx, p}];
extraSLHAInputParameters = Complement[
inputParameters,
Cases[inputParameters, {_, {"MINPAR", _}, ___}],
Cases[inputParameters, {_, {"EXTPAR", _}, ___}],
Cases[inputParameters, {_, {"IMMINPAR", _}, ___}],
Cases[inputParameters, {_, {"IMEXTPAR", _}, ___}]
];
particleEnum = TreeMasses`CreateParticleEnum[particles];
Expand All @@ -1718,6 +1726,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"];
fillInputParametersFromIMMINPAR = Parameters`FillInputParametersFromTuples[imminpar, "IMMINPAR"];
fillInputParametersFromIMEXTPAR = Parameters`FillInputParametersFromTuples[imextpar, "IMEXTPAR"];
readLesHouchesInputParameters = WriteOut`ReadLesHouchesInputParameters[{First[#], #[[2]]}& /@ extraSLHAInputParameters];
readLesHouchesOutputParameters = WriteOut`ReadLesHouchesOutputParameters[];
Expand All @@ -1728,6 +1737,7 @@ corresponding tadpole is real or imaginary (only in models with CP
writeSLHAPhasesBlocks = WriteOut`WriteSLHAPhasesBlocks[];
writeSLHAMinparBlock = WriteOut`WriteSLHAMinparBlock[minpar];
writeSLHAExtparBlock = WriteOut`WriteSLHAExtparBlock[extpar];
writeSLHAImMinparBlock = WriteOut`WriteSLHAImMinparBlock[imminpar];
writeSLHAImExtparBlock = WriteOut`WriteSLHAImExtparBlock[imextpar];
writeSLHAInputParameterBlocks = WriteSLHAInputParameterBlocks[extraSLHAInputParameters];
writeExtraSLHAOutputBlock = WriteOut`WriteExtraSLHAOutputBlock[extraSLHAOutputBlocks];
Expand All @@ -1754,6 +1764,7 @@ corresponding tadpole is real or imaginary (only in models with CP
"@isFlexibleEFTHiggs@" -> isFlexibleEFTHiggs,
"@fillInputParametersFromMINPAR@" -> IndentText[fillInputParametersFromMINPAR],
"@fillInputParametersFromEXTPAR@" -> IndentText[fillInputParametersFromEXTPAR],
"@fillInputParametersFromIMMINPAR@" -> IndentText[fillInputParametersFromIMMINPAR],
"@fillInputParametersFromIMEXTPAR@" -> IndentText[fillInputParametersFromIMEXTPAR],
"@readLesHouchesInputParameters@" -> IndentText[readLesHouchesInputParameters],
"@readLesHouchesOutputParameters@" -> IndentText[readLesHouchesOutputParameters],
Expand All @@ -1764,6 +1775,7 @@ corresponding tadpole is real or imaginary (only in models with CP
"@writeSLHAPhasesBlocks@" -> IndentText[writeSLHAPhasesBlocks],
"@writeSLHAMinparBlock@" -> IndentText[writeSLHAMinparBlock],
"@writeSLHAExtparBlock@" -> IndentText[writeSLHAExtparBlock],
"@writeSLHAImMinparBlock@" -> IndentText[writeSLHAImMinparBlock],
"@writeSLHAImExtparBlock@" -> IndentText[writeSLHAImExtparBlock],
"@writeSLHAInputParameterBlocks@" -> IndentText[writeSLHAInputParameterBlocks],
"@writeExtraSLHAOutputBlock@" -> IndentText[writeExtraSLHAOutputBlock],
Expand Down Expand Up @@ -2311,6 +2323,7 @@ corresponding tadpole is real or imaginary (only in models with CP
inputParameters = Join[
DeleteDuplicates[{#[[2]], {"MINPAR", #[[1]]}, Parameters`GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[SARAH`MINPAR]],
DeleteDuplicates[{#[[2]], {"EXTPAR", #[[1]]}, Parameters`GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[SARAH`EXTPAR]],
DeleteDuplicates[{#[[2]], {"IMMINPAR", #[[1]]}, Parameters`GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[IMMINPAR]],
DeleteDuplicates[{#[[2]], {"IMEXTPAR", #[[1]]}, Parameters`GuessInputParameterType[#[[2]]]}& /@ Utils`ForceJoin[IMEXTPAR]]
];

Expand Down
9 changes: 9 additions & 0 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="";
WriteSLHAImMinparBlock::usage="";
WriteSLHAImExtparBlock::usage="";
WriteSLHAMassBlock::usage="";
WriteSLHAMixingMatricesBlocks::usage="";
Expand Down Expand Up @@ -219,6 +220,14 @@
StringJoin[WriteParameterTuple[#, "extpar"]& /@ extpar] <>
"slha_io.set_block(extpar);\n";

WriteSLHAImMinparBlock[{}] := "";

WriteSLHAImMinparBlock[imminpar_List] :=
"std::ostringstream imminpar;\n\n" <>
"imminpar << \"Block IMMINPAR\\n\";\n" <>
StringJoin[WriteParameterTuple[#, "imminpar"]& /@ imminpar] <>
"slha_io.set_block(imminpar);\n";

WriteSLHAImExtparBlock[{}] := "";

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

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

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

@writeSLHAInputParameterBlocks@
Expand Down Expand Up @@ -300,12 +311,17 @@ void @ModelName@_slha_io::fill(@ModelName@_input_parameters& input) const
return fill_extpar_tuple(input, key, value);
};

SLHA_io::Tuple_processor imminpar_processor = [&input, this] (int key, double value) {
return fill_imminpar_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("IMMINPAR", imminpar_processor);
slha_io.read_block("IMEXTPAR", imextpar_processor);

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

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

void @ModelName@_slha_io::fill_imextpar_tuple(@ModelName@_input_parameters& input,
int key, double value)
{
Expand Down
2 changes: 2 additions & 0 deletions templates/slha_io.hpp.in
Expand Up @@ -102,6 +102,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_imminpar_tuple(@ModelName@_input_parameters&, int, double);
static void fill_imextpar_tuple(@ModelName@_input_parameters&, int, double);

template <class Model>
Expand All @@ -115,6 +116,7 @@ private:
bool print_imaginary_parts_of_majorana_mixings;

void set_extpar(const @ModelName@_input_parameters&);
void set_imminpar(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);
Expand Down

0 comments on commit 48336c9

Please sign in to comment.