From eea3d3a7afef6f3f3f42a21fbb94a38140548e49 Mon Sep 17 00:00:00 2001 From: Andre Sailer <andre.philippe.sailer@cern.ch> Date: Fri, 4 Mar 2016 17:09:51 +0000 Subject: [PATCH] DDSim: Add logic to add help for non-property helper variables, add logic to add choices for all helper options --- DDSim/DD4hepSimulation.py | 3 ++- DDSim/Helper/ConfigHelper.py | 10 ++++++++-- DDSim/Helper/Gun.py | 4 ++++ DDSim/Helper/Output.py | 7 +++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/DDSim/DD4hepSimulation.py b/DDSim/DD4hepSimulation.py index b27dba242..23ebac58c 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 03a27801b..540fbeeeb 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 bbeff4616..6c33c2ffc 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 93aed3281..747e4c540 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 -- GitLab