1#ifndef PARAMETERROUTER_H
2#define PARAMETERROUTER_H
6#include <unordered_set>
47 static inline const std::map<ParameterType, std::unordered_set<BlockName>>
BLOCKS {
48 {
ParameterType::SM, {
"SMINPUTS",
"MASS",
"VCKMIN",
"UPMNSIN",
"UPMNS",
"VCKM",
"GAUGE"}},
49 {
ParameterType::BSM, {
"GAUGE",
"MASS",
"HMIX",
"ALPHA",
"MSOFT",
"NMIX",
"NMNMIX",
"UMIX",
"VMIX",
"NMAMIX",
"NMHMIX",
"NMSSMRUN",
"STOPMIX",
"SBOTMIX",
"STAUMIX",
"AU",
"AD",
"AE",
"YU",
"YD",
"YE",
"MINPAR"}},
51 {
ParameterType::WILSON, {
"FWCOEF",
"IMFWCOEF",
"EW_SCALE",
"B_SCALE",
"D_SCALE",
"K_SCALE",
"SCALE_NUIS"}},
52 {
ParameterType::DECAY, {
"B_Ks",
"B_ll",
"B_Xs",
"B_Dlnu",
"B_Dslnu",
"B_Xsll",
"B_Ksll",
"M0_Mix",
"B_phi",
"B_K",
"K_ll",
"K_pi",
"K_lnu",
"Lb_L"}},
123 static inline const std::map<BlockName, std::unordered_set<long>>
SM_RIGHTS {
124 {
"MASS", {1, 2, 3, 4, 11, 12, 13, 14, 15, 16, 21, 22, 24, 25}},
125 {
"GAUGE", {1, 2, 3}},
135 static inline const std::map<BlockName, std::unordered_set<long>>
THDM_RIGHTS {
136 {
"MASS", {25, 35, 36, 37}},
148 static inline const std::map<BlockName, std::unordered_set<long>>
SUSY_RIGHTS {
149 {
"MASS", {25, 35, 36, 37, 45, 46,
150 1000001, 1000002, 1000003, 1000004, 1000005, 1000006, 1000011, 1000012, 1000013, 1000014, 1000015, 1000016,
151 2000001, 2000002, 2000003, 2000004, 2000005, 2000006, 2000011, 2000013, 2000015,
152 1000021, 1000022, 1000023, 1000024, 1000025, 1000035, 1000037, 1000039, 1000045}},
153 {
"GAUGE", {1, 2, 3}},
Block identifier with alias support.
Provides utilities for identifying the type of parameter blocks/entries.
static std::unordered_set< BlockName > GetOwnedBlocks(ParameterType ptype)
Retrieves all blocks owned by a given ParameterType.
static ParameterType GetType(BlockName block, LhaID id)
Determines the ParameterType of a given (block, LhaID) pair.
Represents an identifier of a LHA element, possibly containing several sub-ids.
Contains the repartition of parameter blocks according to their ParameterType.
static std::unordered_set< BlockName > CUSTOM_BSM_BLOCKS
Runtime-registered blocks that should be treated as BSM blocks.
static void register_custom_bsm_blocks(const std::vector< BlockName > &blockNames)
Registers several runtime blocks as BSM-owned.
static const std::map< ParameterType, std::unordered_set< BlockName > > BLOCKS
Static map associating a ParameterType with a set of block names.
static std::unordered_set< BlockName > get_blocks(ParameterType type)
Returns the static blocks plus runtime BSM blocks when relevant.
static const std::unordered_set< BlockName > & custom_bsm_blocks()
Returns the registered runtime BSM blocks.
static bool is_custom_bsm_block(BlockName blockName)
Checks whether one block was registered dynamically as BSM-owned.
static void register_custom_bsm_block(BlockName blockName)
Registers one runtime block as BSM-owned.
static std::vector< BlockName > filter_custom_blocks(const std::vector< BlockName > &source)
Filters custom (non-standard) blocks from a source list.
Contains per-model access rights to parameters in shared blocks.
static const std::map< BlockName, std::unordered_set< long > > THDM_RIGHTS
Access rights for Two-Higgs-Doublet Model (THDM) parameters.
static const std::map< BlockName, std::unordered_set< long > > SUSY_RIGHTS
Access rights for Supersymmetric (SUSY) model parameters.
static const std::map< BlockName, std::unordered_set< long > > SM_RIGHTS
Access rights for Standard Model (SM) parameters.