From 4fc73eaf493f1511ef27a03eccd65425f55fe26a Mon Sep 17 00:00:00 2001
From: Andre Sailer <andre.philippe.sailer@cern.ch>
Date: Fri, 9 Oct 2015 17:07:06 +0000
Subject: [PATCH] DDSim: add configuration for random generator
---
DDSim/DD4hepSimulation.py | 17 +++++++++++++++++
DDSim/Helper/Output.py | 9 +++++++++
DDSim/Helper/Random.py | 13 +++++++++++++
3 files changed, 39 insertions(+)
create mode 100644 DDSim/Helper/Random.py
diff --git a/DDSim/DD4hepSimulation.py b/DDSim/DD4hepSimulation.py
index caf11cb3e..089f840a3 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 a4e71efe7..f55c799ae 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 000000000..6f3102628
--- /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
--
GitLab