"""Helper object for random number generator objects""" from DDSim.Helper.ConfigHelper import ConfigHelper class Random (ConfigHelper): """Properties for the 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 self._random = None self._enableEventSeed_HELP = "If True, calculate random seed for each event based on eventID and runID\n" \ "allows reproducibility even when SkippingEvents" self.enableEventSeed = False def initialize(self, DDG4, kernel, output): """ initialize the random generator :param DDG4: DDG4 module :param kernel: Geant4 kernel :param int output: output level :returns: Geant4Random instance """ if self._random: return self._random self._random = DDG4.Action(kernel,'Geant4Random/R1') if self.seed is not None: self._random.Seed = self.seed self._random.Luxury = self.luxury if self.type is not None: self._random.Type = self.type self._random.initialize() if self.seed is not None and self.enableEventSeed: self._eventseed = DDG4.RunAction(kernel,'Geant4EventSeed/EventSeeder1') ## Needs to be called after initilisation if output <= 3: self._random.showStatus() return self._random