diff --git a/DDSim/DD4hepSimulation.py b/DDSim/DD4hepSimulation.py index b27dba242196b3ad4c8743510796a538108b3df2..23ebac58ca1c9b2c1dd1322f2d132a41b32be332 100644 --- a/DDSim/DD4hepSimulation.py +++ b/DDSim/DD4hepSimulation.py @@ -490,7 +490,8 @@ class DD4hepSimulation(object): action="store", dest="%s.%s" % (name, var), default = valAndDoc[0], - help = valAndDoc[1] + help = valAndDoc[1], + choices = valAndDoc[2], # type = type(val), ) diff --git a/DDSim/Helper/ConfigHelper.py b/DDSim/Helper/ConfigHelper.py index 03a27801b1536cd0cabb0f3bf59e4efa832b226e..540fbeeeb1606616d7770cb3b7cb85839b786265 100644 --- a/DDSim/Helper/ConfigHelper.py +++ b/DDSim/Helper/ConfigHelper.py @@ -19,12 +19,18 @@ class ConfigHelper( object ): allVars = vars(self) for var,val in allVars.iteritems(): if not var.startswith('_'): - finalVars[var] = (val,'') + helpName = "_%s_HELP" % var + optName = "_%s_OPTIONS" % var + doc = getattr(self, helpName) if hasattr(self, helpName) else '' + choices = getattr(self, optName) if hasattr(self, optName) else None + finalVars[var] = (val, doc, choices) # now get things defined with @property props = [(p, getattr(type(self),p)) for p in dir(type(self)) if isinstance(getattr(type(self),p),property)] for propName, prop in props: - finalVars[propName] = (getattr(self, propName), prop.__doc__) + optName = "_%s_OPTIONS" % propName + choices = getattr(self, optName) if hasattr(self, optName) else None + finalVars[propName] = (getattr(self, propName), prop.__doc__, choices) return finalVars diff --git a/DDSim/Helper/Gun.py b/DDSim/Helper/Gun.py index bbeff4616c7c2bae9d20460d7b5cd60c66e65cf6..6c33c2ffcd67bfed546f772531a438a253b90851 100644 --- a/DDSim/Helper/Gun.py +++ b/DDSim/Helper/Gun.py @@ -13,10 +13,14 @@ class Gun( ConfigHelper ): self._position = (0.0,0.0,0.0) self._isotrop = False self._direction = (0,0,1) + + self._phiMin_HELP = "Minimal azimuthal angle for random distribution" self.phiMin = None self.phiMax = None self.thetaMin = None self.thetaMax = None + + self._distribution_OPTIONS = ['uniform', 'cos(theta)', 'eta', 'pseudorapidity', 'ffbar'] ## (1+cos^2 theta) self._distribution = None diff --git a/DDSim/Helper/Output.py b/DDSim/Helper/Output.py index 93aed328152fefe685ee253905fdebffcc92acf4..747e4c540c09272d4516f376378599ad459364bb 100644 --- a/DDSim/Helper/Output.py +++ b/DDSim/Helper/Output.py @@ -7,9 +7,16 @@ class Output( ConfigHelper ): """Configuration for the output levels of DDG4 components""" def __init__( self ): super(Output, self).__init__() + self._kernel_OPTIONS = (1,2,3,4,5,6,7,'VERBOSE','DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL', 'ALWAYS') self._kernel = outputLevel('INFO') + + self._part_OPTIONS = (1,2,3,4,5,6,7,'VERBOSE','DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL', 'ALWAYS') self._part = outputLevel('INFO') + + self._inputStage_OPTIONS = (1,2,3,4,5,6,7,'VERBOSE','DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL', 'ALWAYS') self._inputStage = outputLevel('INFO') + + self._random_OPTIONS = (1,2,3,4,5,6,7,'VERBOSE','DEBUG', 'INFO', 'WARNING', 'ERROR', 'FATAL', 'ALWAYS') self._random = outputLevel('FATAL') @property