diff --git a/DDSim/DD4hepSimulation.py b/DDSim/DD4hepSimulation.py index caf11cb3e4912e0ac1c3ed87bf50e5e923a26839..089f840a3da96ea541d3cb2e9102a34588f422bd 100644 --- a/DDSim/DD4hepSimulation.py +++ b/DDSim/DD4hepSimulation.py @@ -37,6 +37,7 @@ from DDSim.Helper.Output import Output from DDSim.Helper.MagneticField import MagneticField from DDSim.Helper.ConfigHelper import ConfigHelper from DDSim.Helper.Action import Action +from DDSim.Helper.Random import Random import os import sys @@ -67,6 +68,7 @@ class DD4hepSimulation(object): ## objects for extended configuration option self.output = Output() + self.random = Random() self.gun = Gun() self.part = ParticleHandler() self.field = MagneticField() @@ -285,6 +287,11 @@ class DD4hepSimulation(object): actionList = [] + ##configure the random seed + rndm = DDG4.Action(kernel,'Geant4Random/R1') + self.__setupRandomGenerator(rndm) + rndm.initialize() + if self.enableGun: gun = DDG4.GeneratorAction(kernel,"Geant4ParticleGun/"+"Gun") self.__setGunOptions( gun ) @@ -434,6 +441,16 @@ class DD4hepSimulation(object): gun.isotrop = self.gun.isotrop gun.direction = self.gun.direction + def __setupRandomGenerator(self, rndm): + """set the properties for the random number generator""" + if self.random.seed is not None: + rndm.Seed = self.random.seed + rndm.Luxury = self.random.luxury + if self.random.type is not None: + rndm.Type = self.random.type + if self.output.random <= 3: + rndm.showStatus() + def __setMagneticFieldOptions(self, simple): """ create and configure the magnetic tracking setup """ field = simple.addConfig('Geant4FieldTrackingSetupAction/MagFieldTrackingSetup') diff --git a/DDSim/Helper/Output.py b/DDSim/Helper/Output.py index a4e71efe749330c23d327c1d4469e266ac0a95e3..f55c799ae78e65f9ba1e7fccbb2d366540ad764f 100644 --- a/DDSim/Helper/Output.py +++ b/DDSim/Helper/Output.py @@ -10,6 +10,7 @@ class Output( ConfigHelper ): self._kernel = outputLevel('INFO') self._part = outputLevel('INFO') self._inputStage = outputLevel('INFO') + self._random = outputLevel('FATAL') @property def inputStage( self ): @@ -34,3 +35,11 @@ class Output( ConfigHelper ): @part.setter def part(self, level): self._part = outputLevel(level) + + @property + def random( self ): + """Output level for Random Number Generator setup""" + return self._random + @random.setter + def random(self, level): + self._random = outputLevel(level) diff --git a/DDSim/Helper/Random.py b/DDSim/Helper/Random.py new file mode 100644 index 0000000000000000000000000000000000000000..6f3102628083141d5a4d118cb36f7e48b970a7b9 --- /dev/null +++ b/DDSim/Helper/Random.py @@ -0,0 +1,13 @@ +"""Helper object for random number generator objects""" + +from DDSim.Helper.ConfigHelper import ConfigHelper + +class Random (ConfigHelper): + """Properties for random number generator""" + def __init__ (self): + super(Random, self).__init__() + self.seed = None + self.type = None + self.luxury = 1 + self.replace_gRandom = True + self.file = None