Skip to content
Snippets Groups Projects
Commit 5851e55a authored by John Derek Chapman's avatar John Derek Chapman Committed by Graeme Stewart
Browse files

python/DigitizationFlags.py (rndmSeedList): add checkForExistingSeed method...

python/DigitizationFlags.py (rndmSeedList): add checkForExistingSeed method (as in simFlags) to allow checks on whether a seed already exists. python/DigitizationConfigDb.py, python/DigiAlgConfig.py - added configuration of variations of SplitNoMergePileUpToolsAlg with all combinations of full and fast digitization. ATLASSIM-2071. Tagging: Digitization-01-16-00 (Digitization-01-16-00)

	* python/DigitizationFlags.py (rndmSeedList): add
	checkForExistingSeed method (as in simFlags) to allow checks on
	whether a seed already exists.
	* python/DigitizationConfigDb.py, python/DigiAlgConfig.py - added
	configuration of variations of SplitNoMergePileUpToolsAlg with all
	combinations of full and fast digitization. ATLASSIM-2071
	* Tagging: Digitization-01-16-00

2015-08-07  John Chapman  <John.Chapman@cern.ch>

	* share/Digitization.py - switch off overlay task in DetFlags if
	present.

	* Tagging: Digitization-01-15-00

2015-06-22  Robert Harrington <roberth@cern.ch>

	* python/DigitizationConfigDb.py, python/DigiAlgConfig.py - added
	configuration of SplitNoMergePileUpToolsAlg. ATLASSIM-2071
...
(Long ChangeLog diff - truncated)
parent 5c8db188
No related branches found
No related tags found
No related merge requests found
......@@ -128,6 +128,82 @@ def getSplitInDetPileUpTools():
PileUpToolsList += [ "TRTDigitizationToolPU" ]
return PileUpToolsList
def getSplitNoMergeInDetPileUpTools():
""" This is for testing the fast chain with full digitization in split PU mode without
merging pileup
"""
from AthenaCommon.DetFlags import DetFlags
PileUpToolsList = []
if DetFlags.digitize.BCM_on():
PileUpToolsList += [ "BCM_DigitizationTool" ]
if DetFlags.digitize.pixel_on():
PileUpToolsList += [ "PixelDigitizationTool" ]
PileUpToolsList += [ "PixelDigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.SCT_on():
PileUpToolsList += [ "SCT_DigitizationTool" ]
PileUpToolsList += [ "SCT_DigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.TRT_on():
PileUpToolsList += [ "TRTDigitizationTool" ]
PileUpToolsList += [ "TRTDigitizationToolSplitNoMergePU" ]
return PileUpToolsList
def getSplitNoMergeSFInDetPileUpTools():
""" This is for testing the fast chain with full digitization in split PU mode without
merging pileup
"""
from AthenaCommon.DetFlags import DetFlags
PileUpToolsList = []
if DetFlags.digitize.BCM_on():
PileUpToolsList += [ "BCM_DigitizationTool" ]
if DetFlags.digitize.pixel_on():
PileUpToolsList += [ "PixelDigitizationTool" ]
PileUpToolsList += [ "PixelFastDigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.SCT_on():
PileUpToolsList += [ "SCT_DigitizationTool" ]
PileUpToolsList += [ "SCT_FastDigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.TRT_on():
PileUpToolsList += [ "TRTDigitizationTool" ]
PileUpToolsList += [ "TRTFastDigitizationToolSplitNoMergePU" ]
return PileUpToolsList
def getSplitNoMergeFSInDetPileUpTools():
""" This is for testing the fast chain with full digitization in split PU mode without
merging pileup
"""
from AthenaCommon.DetFlags import DetFlags
PileUpToolsList = []
if DetFlags.digitize.BCM_on():
PileUpToolsList += [ "BCM_DigitizationTool" ]
if DetFlags.digitize.pixel_on():
PileUpToolsList += [ "PixelFastDigitizationTool" ]
PileUpToolsList += [ "PixelDigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.SCT_on():
PileUpToolsList += [ "SCT_FastDigitizationTool" ]
PileUpToolsList += [ "SCT_DigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.TRT_on():
PileUpToolsList += [ "TRTFastDigitizationTool" ]
PileUpToolsList += [ "TRTDigitizationToolSplitNoMergePU" ]
return PileUpToolsList
def getSplitNoMergeFFInDetPileUpTools():
""" This is for testing the fast chain with full digitization in split PU mode without
merging pileup
"""
from AthenaCommon.DetFlags import DetFlags
PileUpToolsList = []
if DetFlags.digitize.BCM_on():
PileUpToolsList += [ "BCM_DigitizationTool" ]
if DetFlags.digitize.pixel_on():
PileUpToolsList += [ "PixelFastDigitizationTool" ]
PileUpToolsList += [ "PixelFastDigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.SCT_on():
PileUpToolsList += [ "SCT_FastDigitizationTool" ]
PileUpToolsList += [ "SCT_FastDigitizationToolSplitNoMergePU" ]
if DetFlags.digitize.TRT_on():
PileUpToolsList += [ "TRTFastDigitizationTool" ]
PileUpToolsList += [ "TRTFastDigitizationToolSplitNoMergePU" ]
return PileUpToolsList
def getStandardCaloPileUpTools():
from AthenaCommon.DetFlags import DetFlags
PileUpToolsList = []
......@@ -234,6 +310,70 @@ def getSplitPileUpToolsList():
PileUpToolsList += [ "MergeRecoTimingObjTool" ]
return PileUpToolsList
def getSplitNoMergePileUpToolsList():
PileUpToolsList = []
## Truth information
PileUpToolsList += getStandardTruthPileUpTools()
## Forward Detector Digitization
PileUpToolsList += getStandardForwardPileUpTools()
## Inner Detector Digitization - non-standard
PileUpToolsList += getSplitNoMergeInDetPileUpTools()
## Calo Digitization
PileUpToolsList += getStandardCaloPileUpTools()
## Muon System Digitization
PileUpToolsList += getStandardMuonPileUpTools()
## RecoTimingObj
PileUpToolsList += [ "MergeRecoTimingObjTool" ]
return PileUpToolsList
def getSplitNoMergeSFPileUpToolsList():
PileUpToolsList = []
## Truth information
PileUpToolsList += getStandardTruthPileUpTools()
## Forward Detector Digitization
PileUpToolsList += getStandardForwardPileUpTools()
## Inner Detector Digitization - non-standard
PileUpToolsList += getSplitNoMergeSFInDetPileUpTools()
## Calo Digitization
PileUpToolsList += getStandardCaloPileUpTools()
## Muon System Digitization
PileUpToolsList += getStandardMuonPileUpTools()
## RecoTimingObj
PileUpToolsList += [ "MergeRecoTimingObjTool" ]
return PileUpToolsList
def getSplitNoMergeFSPileUpToolsList():
PileUpToolsList = []
## Truth information
PileUpToolsList += getStandardTruthPileUpTools()
## Forward Detector Digitization
PileUpToolsList += getStandardForwardPileUpTools()
## Inner Detector Digitization - non-standard
PileUpToolsList += getSplitNoMergeFSInDetPileUpTools()
## Calo Digitization
PileUpToolsList += getStandardCaloPileUpTools()
## Muon System Digitization
PileUpToolsList += getStandardMuonPileUpTools()
## RecoTimingObj
PileUpToolsList += [ "MergeRecoTimingObjTool" ]
return PileUpToolsList
def getSplitNoMergeFFPileUpToolsList():
PileUpToolsList = []
## Truth information
PileUpToolsList += getStandardTruthPileUpTools()
## Forward Detector Digitization
PileUpToolsList += getStandardForwardPileUpTools()
## Inner Detector Digitization - non-standard
PileUpToolsList += getSplitNoMergeFFInDetPileUpTools()
## Calo Digitization
PileUpToolsList += getStandardCaloPileUpTools()
## Muon System Digitization
PileUpToolsList += getStandardMuonPileUpTools()
## RecoTimingObj
PileUpToolsList += [ "MergeRecoTimingObjTool" ]
return PileUpToolsList
def getStandardPileUpToolsAlg(name="StandardPileUpToolsAlg", **kwargs):
kwargs.setdefault('PileUpTools', getStandardPileUpToolsList() )
from Digitization.DigitizationFlags import digitizationFlags
......@@ -283,3 +423,23 @@ def getStandardInTimeOnlyTruthPileUpToolsAlg(name="StandardInTimeOnlyTruthPileUp
else:
from PileUpComps.PileUpCompsConf import DigitizationAlg
return DigitizationAlg(name, **kwargs)
def getSplitNoMergePileUpToolsAlg(name="SplitNoMergePileUpToolsAlg", **kwargs):
kwargs.setdefault('PileUpTools', getSplitNoMergePileUpToolsList() )
from PileUpComps.PileUpCompsConf import DigitizationAlg
return DigitizationAlg(name, **kwargs)
def getSplitNoMergeSFPileUpToolsAlg(name="SplitNoMergeSFPileUpToolsAlg", **kwargs):
kwargs.setdefault('PileUpTools', getSplitNoMergeSFPileUpToolsList() )
from PileUpComps.PileUpCompsConf import DigitizationAlg
return DigitizationAlg(name, **kwargs)
def getSplitNoMergeFSPileUpToolsAlg(name="SplitNoMergeFSPileUpToolsAlg", **kwargs):
kwargs.setdefault('PileUpTools', getSplitNoMergeFSPileUpToolsList() )
from PileUpComps.PileUpCompsConf import DigitizationAlg
return DigitizationAlg(name, **kwargs)
def getSplitNoMergeFFPileUpToolsAlg(name="SplitNoMergeFFPileUpToolsAlg", **kwargs):
kwargs.setdefault('PileUpTools', getSplitNoMergeFFPileUpToolsList() )
from PileUpComps.PileUpCompsConf import DigitizationAlg
return DigitizationAlg(name, **kwargs)
......@@ -29,12 +29,9 @@ addAlgorithm("Digitization.DigiAlgConfig.getFastPileUpToolsAlg" , "FastPile
addAlgorithm("Digitization.DigiAlgConfig.getSplitPileUpToolsAlg" , "SplitPileUpToolsAlg")
addAlgorithm("Digitization.DigiAlgConfig.getStandardSignalOnlyTruthPileUpToolsAlg" , "StandardSignalOnlyTruthPileUpToolsAlg")
addAlgorithm("Digitization.DigiAlgConfig.getStandardInTimeOnlyTruthPileUpToolsAlg" , "StandardInTimeOnlyTruthPileUpToolsAlg")
addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergePileUpToolsAlg" , "SplitNoMergePileUpToolsAlg")
addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeSFPileUpToolsAlg" , "SplitNoMergeSFPileUpToolsAlg")
addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeFSPileUpToolsAlg" , "SplitNoMergeFSPileUpToolsAlg")
addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeFFPileUpToolsAlg" , "SplitNoMergeFFPileUpToolsAlg")
addService("Digitization.PileUpMergeSvcConfig.getPileUpMergeSvc" , "PileUpMergeSvc")
## addTool("Digitization.PileUpMergeSvcConfig.getALFARange" , "ALFARange" )
## addTool("Digitization.PileUpMergeSvcConfig.getTRTRange" , "TRTRange")
## addTool("Digitization.PileUpMergeSvcConfig.getLArRangeEM" , "LArRangeEM")
## addTool("Digitization.PileUpMergeSvcConfig.getLArRangeHEC" , "LArRangeHEC")
## addTool("Digitization.PileUpMergeSvcConfig.getLArRangeFCAL" , "LArRangeFCAL")
## addTool("Digitization.PileUpMergeSvcConfig.getsTgcRange" , "sTgcRange")
## addTool("Digitization.PileUpMergeSvcConfig.getMmRange" , "MmRange")
......@@ -40,6 +40,16 @@ class rndmSeedList(JobProperty):
allowedTypes=['list']
StoredValue= []
def checkForExistingSeed(self, name):
"""Ensure that each stream is only initialized once"""
found = False
seedlist = self.get_Value()
for iseed in seedlist:
found = iseed.startswith(name+" ")
if found:
break
return found
def addSeed( self, name, seed1, seed2 ):
"""Add seeds to internal seedlist. Seeds will be incremented by offset values
"""
......@@ -50,12 +60,7 @@ class rndmSeedList(JobProperty):
logDigitizationFlags.info("Adding Digitization random number seed '" + newseed + "'")
#ensure each stream only initialized once
found = False
for iseed in seedlist:
found = iseed.startswith(name+" ")
if found:
break
found = self.checkForExistingSeed(name)
if found:
logDigitizationFlags.error ("Initialization values for random number stream " + name + " already exist!")
else:
......
......@@ -24,8 +24,12 @@ def getRunLumiInfoFragment(jobnumber,task,maxEvents):
else:
hiMaxEvents=int((maxEvents-1)/2)
loMaxEvents=int((maxEvents+1)/2)
hi_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu'],reverse=True),hiMaxEvents)
lo_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu']),loMaxEvents)
hi_mu_frag=[]
lo_mu_frag=[]
if hiMaxEvents > 0:
hi_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu'],reverse=True),hiMaxEvents)
if loMaxEvents > 0:
lo_mu_frag=getFragment(jobnumber,sorted(task,key=lambda job: job['mu']),loMaxEvents)
return sorted(sum([hi_mu_frag,lo_mu_frag],[]),key=lambda job: job['run'])
def getFragment(jobnumber,task,maxEvents):
......
......@@ -49,6 +49,11 @@ else :
DetFlags.Truth_setOn()
DetFlags.LVL1_setOn()
checkOverlay = getattr(DetFlags, 'overlay', None)
if checkOverlay is not None:
DetFlags.overlay.all_setOff()
else:
logDigitization_flags.warning( 'DetFlags.overlay is not supported in this release' )
DetFlags.simulate.all_setOff()
DetFlags.makeRIO.all_setOff()
DetFlags.writeBS.all_setOff()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment