def getMinBiasCache(name="MinBiasCache", **kwargs): from Digitization.DigitizationFlags import digitizationFlags from AthenaCommon.BeamFlags import jobproperties kwargs.setdefault('CollPerXing', (digitizationFlags.numberOfLowPtMinBias() + digitizationFlags.numberOfHighPtMinBias())) kwargs.setdefault('FractionOfCache1Collisions', (digitizationFlags.numberOfLowPtMinBias() / (digitizationFlags.numberOfLowPtMinBias() + digitizationFlags.numberOfHighPtMinBias()))) from Digitization import PileUpEventType kwargs.setdefault('PileUpEventType', PileUpEventType.MinimumBias ) # may need to have a separate type in the future if (digitizationFlags.doXingByXingPileUp() or digitizationFlags.SignalPatternForSteppingCache.statusOn): kwargs.setdefault('Cache1ReadDownscaleFactor', 1) kwargs.setdefault('Cache1EventSelector', getService('LowPtMinBiasEventSelector')) kwargs.setdefault('Cache2ReadDownscaleFactor', 1) kwargs.setdefault('Cache2EventSelector', getService('HighPtMinBiasEventSelector')) kwargs.setdefault( 'OccupationFraction', float(digitizationFlags.bunchSpacing.get_Value()) / float(jobproperties.Beam.bunchSpacing.get_Value())) kwargs.setdefault('RndmGenSvc', digitizationFlags.rndmSvc()) kwargs.setdefault('RndmStreamName', "PileUpCollXingStream") return CfgMgr.SplitBkgStreamsCache(name, **kwargs)
def getLowPtMinBiasCache(name="LowPtMinBiasCache", **kwargs): from Digitization.DigitizationFlags import digitizationFlags from AthenaCommon.BeamFlags import beamFlags kwargs.setdefault('CollPerXing', digitizationFlags.numberOfLowPtMinBias() ) from Digitization import PileUpEventType kwargs.setdefault('PileUpEventType', PileUpEventType.MinimumBias ) # may need to have a separate type in the future if (digitizationFlags.doXingByXingPileUp() or digitizationFlags.SignalPatternForSteppingCache.statusOn): kwargs.setdefault('ReadDownscaleFactor', 1 ) kwargs.setdefault('EventSelector', getService('LowPtMinBiasEventSelector') ) kwargs.setdefault('OccupationFraction', float(digitizationFlags.bunchSpacing.get_Value())/float(beamFlags.bunchSpacing.get_Value()) ) kwargs.setdefault('RndmGenSvc', digitizationFlags.rndmSvc() ) kwargs.setdefault('RndmStreamName', "PileUpCollXingStream" ) #Use BkgStreamsStepCaches when using the StepArrayBM and BkgStreamsCache otherwise if digitizationFlags.SignalPatternForSteppingCache.statusOn: return CfgMgr.BkgStreamsStepCache(name, **kwargs) else: return CfgMgr.BkgStreamsCache(name, **kwargs)
PileUpEventLoopMgr = Service("PileUpEventLoopMgr") pupStream = "PileUpCollXingStream" from PileUpComps.PileUpCompsConf import BkgStreamsCache from Digitization import PileUpEventType from EventSelectorAthenaPool.EventSelectorAthenaPoolConf import EventSelectorAthenaPool from Digitization.DigitizationFlags import digitizationFlags PileUpEventLoopMgr.OrigSelector = "EventSelector" minBiasCache = BkgStreamsCache("MinBiasCache") if hasattr(digitizationFlags, 'numberOfNDMinBias'): minBiasCache.CollPerXing = digitizationFlags.numberOfNDMinBias() elif hasattr(digitizationFlags, 'numberOfLowPtMinBias'): minBiasCache.CollPerXing = digitizationFlags.numberOfLowPtMinBias() else: raise AttributeError( "These job options require digitization jobproperties not present in this release! This job will crash." ) minBiasCache.RndmGenSvc = digitizationFlags.rndmSvc() minBiasCache.RndmStreamName = pupStream minBiasCache.PileUpEventType = PileUpEventType.MinimumBias minBiasCache.ReadDownscaleFactor = 10 # read one new event every event from EventSelectorAthenaPool.EventSelectorAthenaPoolConf import EventSelectorAthenaPool minBiasEvtSel = EventSelectorAthenaPool("minBiasEventSelector") if hasattr(digitizationFlags, 'NDMinBiasInputCols'): minBiasEvtSel.InputCollections = digitizationFlags.NDMinBiasInputCols() elif hasattr(digitizationFlags, 'LowPtMinBiasInputCols'): minBiasEvtSel.InputCollections = digitizationFlags.LowPtMinBiasInputCols() else: raise AttributeError(