diff --git a/DDSim/DD4hepSimulation.py b/DDSim/DD4hepSimulation.py index 48f9c8881b01afe6dfb3f7ffbb8f93b9580f057f..9f4dc710a0518da2d6bff6e3f26c5e0f3028bca1 100644 --- a/DDSim/DD4hepSimulation.py +++ b/DDSim/DD4hepSimulation.py @@ -44,6 +44,7 @@ from DDSim.Helper.Filter import Filter from DDSim.Helper.Physics import Physics from DDSim.Helper.GuineaPig import GuineaPig from DDSim.Helper.LCIO import LCIO +from DDSim.Helper.Meta import Meta import os import sys @@ -73,9 +74,6 @@ class DD4hepSimulation(object): self.vertexSigma = [0.0, 0.0, 0.0, 0.0] self.vertexOffset = [0.0, 0.0, 0.0, 0.0] self.enableDetailedShowerMode = False - self.eventParameters = [] - self.runNumberOffset = 0 - self.eventNumberOffset = 0 self._errorMessages = [] self._dumpParameter = False @@ -90,6 +88,7 @@ class DD4hepSimulation(object): self.action = Action() self.guineapig = GuineaPig() self.lcio = LCIO() + self.meta = Meta() self.filter = Filter() self.physics = Physics() @@ -197,15 +196,6 @@ class DD4hepSimulation(object): parser.add_argument("--dumpSteeringFile", action="store_true", dest="dumpSteeringFile", default=self._dumpSteeringFile, help="print an example steering file to stdout") - - parser.add_argument("--eventParameters", nargs='+', dest="eventParameters", action="store", default=[], - help="Event parameters to write in every event. Use C/F/I ids to specify parameter type. E.g parameterName/F=0.42 to set a float parameter" ) - - parser.add_argument("--runNumberOffset", action="store", dest="runNumberOffset", default=self.runNumberOffset, type=int, - help="The run number offset to write in slcio output file. E.g setting it to 42 will start counting runs from 42 instead of 0") - - parser.add_argument("--eventNumberOffset", action="store", dest="eventNumberOffset", default=self.eventNumberOffset, type=int, - help="The event number offset to write in slcio output file. E.g setting it to 42 will start counting events from 42 instead of 0") #output, or do something smarter with fullHelp only for example ConfigHelper.addAllHelper(self, parser) @@ -238,9 +228,6 @@ class DD4hepSimulation(object): self.enableDetailedShowerMode = parsed.enableDetailedShowerMode self.vertexOffset = parsed.vertexOffset self.vertexSigma = parsed.vertexSigma - self.eventParameters = parsed.eventParameters - self.runNumberOffset = parsed.runNumberOffset if parsed.runNumberOffset > 0 else 0 - self.eventNumberOffset = parsed.eventNumberOffset if parsed.eventNumberOffset > 0 else 0 self._consistencyChecks() @@ -346,9 +333,9 @@ class DD4hepSimulation(object): if self.outputFile.endswith(".slcio"): lcOut = simple.setupLCIOOutput('LcioOutput', self.outputFile) lcOut.RunHeader = self.__addParametersToRunHeader() - lcOut.EventParametersString, lcOut.EventParametersInt, lcOut.EventParametersFloat = self.__addParametersToEvent( self.eventParameters ) - lcOut.RunNumberOffset = self.runNumberOffset - lcOut.EventNumberOffset = self.eventNumberOffset + lcOut.EventParametersString, lcOut.EventParametersInt, lcOut.EventParametersFloat = self.__addParametersToEvent( self.meta.eventParameters ) + lcOut.RunNumberOffset = self.meta.runNumberOffset if self.meta.runNumberOffset > 0 else 0 + lcOut.EventNumberOffset = self.meta.eventNumberOffset if self.meta.eventNumberOffset > 0 else 0 elif self.outputFile.endswith(".root"): simple.setupROOTOutput('RootOutput', self.outputFile) @@ -643,41 +630,30 @@ class DD4hepSimulation(object): :param parameters: list of command line parameters to parse """ - print parameters stringParameters, intParameters, floatParameters, allParameters = {}, {}, {}, [] for p in parameters: parameterAndValue = p.split( "=", 1 ) - if len(parameterAndValue) is not 2: - self._errorMessages.append("ERROR: Couldn't decode event parameter '%s'" %(p)) + if len(parameterAndValue) != 2: raise SyntaxError("ERROR: Couldn't decode event parameter '%s'" %(p)) - continue parameterAndType = parameterAndValue[0].split( "/", 1 ) - if len(parameterAndType) is not 2: - self._errorMessages.append("ERROR: Couldn't decode event parameter '%s'" %(p)) + if len(parameterAndType) != 2: raise SyntaxError("ERROR: Couldn't decode event parameter '%s'" %(p)) - continue pname = parameterAndType[0] ptype = parameterAndType[1] pvalue = parameterAndValue[1] if ptype.lower() not in ["c", "f", "i"]: - self._errorMessages.append("ERROR: Event parameter '%s' with invalid type '%s'" %(pname, ptype)) raise ValueError("ERROR: Event parameter '%s' with invalid type '%s'" %(pname, ptype)) - continue if pname in allParameters: - self._errorMessages.append("ERROR: Event parameter '%s' specified twice" %(pname)) raise RuntimeError("ERROR: Event parameter '%s' specified twice" %(pname)) - continue - if not len(pvalue): - self._errorMessages.append("ERROR: Event parameter '%s' has empty value" %(pname)) + if not pvalue: raise RuntimeError("ERROR: Event parameter '%s' has empty value" %(pname)) - continue allParameters.append(pname) print "Event parameter '%s', type '%s', value='%s'"%(pname, ptype, pvalue) - if ptype.lower() is "c": + if ptype.lower() == "c": stringParameters[pname] = pvalue - elif ptype.lower() is "f": + elif ptype.lower() == "f": floatParameters[pname] = pvalue - elif ptype.lower() is "i": + elif ptype.lower() == "i": intParameters[pname] = pvalue return stringParameters, intParameters, floatParameters