From 241c7363977f609d9244564fffa32109bd32bae9 Mon Sep 17 00:00:00 2001 From: John Derek Chapman <chapman@hep.phy.cam.ac.uk> Date: Wed, 7 Sep 2016 14:26:23 +0200 Subject: [PATCH] python/DigitizationWriteMetaData.py (writeDigitizationMetadata): downgrade warning message to info. Tagging Digitization-02-00-12 (Digitization-02-00-12) * python/DigitizationWriteMetaData.py (writeDigitizationMetadata): downgrade warning message to info. * Tagging Digitization-02-00-12 2016-09-07 John Chapman <John.Chapman@cern.ch> * python/DigitizationFlags.py: add doBichselSimulation digitization flag - False by default. ATLPHYSVAL-430 * Tagging Digitization-02-00-11 2016-07-29 John Chapman <John.Chapman@cern.ch> * python/DigiAlgConfig.py (getStandardInDetPileUpTools): fix typo. ATLASSIM-3022 * Tagging Digitization-02-00-10 2016-07-28 John Chapman <John.Chapman@cern.ch> * python/DigiAlgConfig.py (getStandardInDetPileUpTools): add hook for PixelLightDigitizationTool obo Noemi Calace. ATLASSIM-3022. ... (Long ChangeLog diff - truncated) --- .../Digitization/python/DigiAlgConfig.py | 101 ++++++++---------- Simulation/Digitization/python/DigiOutput.py | 3 + .../python/DigitizationConfigDb.py | 6 ++ .../Digitization/python/DigitizationFlags.py | 13 ++- .../python/DigitizationReadMetaData.py | 2 +- .../python/DigitizationWriteMetaData.py | 4 +- .../python/PileUpMergeSvcConfig.py | 6 +- .../Digitization/share/ConfigDigitization.py | 2 + Simulation/Digitization/share/Digitization.py | 2 + 9 files changed, 77 insertions(+), 62 deletions(-) diff --git a/Simulation/Digitization/python/DigiAlgConfig.py b/Simulation/Digitization/python/DigiAlgConfig.py index 7945e063a648..721f0c15071c 100644 --- a/Simulation/Digitization/python/DigiAlgConfig.py +++ b/Simulation/Digitization/python/DigiAlgConfig.py @@ -1,27 +1,23 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration from AthenaCommon import CfgMgr -from AthenaCommon import CfgGetter # import getService, getPrivateTool + +##################################### +## Test PileUpTool methods ## +##################################### def getTestPileUpTool(name="TestPileUpTool", **kwargs): + from AthenaCommon.Constants import * kwargs.setdefault('OutputLevel', VERBOSE ) kwargs.setdefault('FirstXing', -300 ) kwargs.setdefault('LastXing', +300 ) - return CfgGetter.TestPileUpTool(name, **kwargs) - - -def getTestPileUpToolsAlg(name="TestPileUpToolsAlg", **kwargs): - PileUpToolsList = [ "TestPileUpTool" ] - kwargs.setdefault('PileupTools', PileUpToolsList ) - from PileUpComps.PileUpCompsConf import PileUpToolsAlg - return PileUpToolsAlg(name, **kwargs) - + return CfgMgr.TestPileUpTool(name, **kwargs) -def getTestDigitizationAlg(name="TestDigitizationAlg", **kwargs): - PileUpToolsList = [ "TestPileUpTool" ] - kwargs.setdefault('PileupTools', PileUpToolsList ) - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) +def getTestFilterPileUpTool(name="TestFilterPileUpTool", **kwargs): + from AthenaCommon.Constants import * + kwargs.setdefault('OutputLevel', INFO ) + kwargs.setdefault('DoFiltering', True ) + return getTestPileUpTool(name, **kwargs) ##################################### ## PileUpToolsList filling methods ## @@ -85,6 +81,8 @@ def getStandardInDetPileUpTools(): if DetFlags.digitize.pixel_on(): if 'doFastPixelDigi' in digitizationFlags.experimentalDigi(): PileUpToolsList += [ "PixelFastDigitizationTool" ] + elif 'doLightPixelDigi' in digitizationFlags.experimentalDigi(): + PileUpToolsList += [ "PixelLightDigitizationTool" ] else: PileUpToolsList += [ "PixelDigitizationTool" ] if DetFlags.digitize.SCT_on(): @@ -209,6 +207,8 @@ def getStandardCaloPileUpTools(): PileUpToolsList = [] if DetFlags.digitize.LAr_on(): PileUpToolsList += [ "LArPileUpTool" ] + if hasattr(DetFlags.digitize, 'HGTD_on') and DetFlags.digitize.HGTD_on(): + PileUpToolsList += [ "HGTDPileUpTool" ] if DetFlags.digitize.Tile_on(): PileUpToolsList += [ "TileHitVecToCntTool" ] return PileUpToolsList @@ -378,68 +378,59 @@ def getStandardPileUpToolsAlg(name="StandardPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getStandardPileUpToolsList() ) from Digitization.DigitizationFlags import digitizationFlags if digitizationFlags.doXingByXingPileUp(): - from PileUpComps.PileUpCompsConf import PileUpToolsAlg - return PileUpToolsAlg(name, **kwargs) + return CfgMgr.PileUpToolsAlg(name, **kwargs) else: - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return CfgMgr.DigitizationAlg(name, **kwargs) def getFastPileUpToolsAlg(name="FastPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getFastPileUpToolsList() ) - from Digitization.DigitizationFlags import digitizationFlags - if digitizationFlags.doXingByXingPileUp(): - from PileUpComps.PileUpCompsConf import PileUpToolsAlg - return PileUpToolsAlg(name, **kwargs) - else: - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getSplitPileUpToolsAlg(name="SplitPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getSplitPileUpToolsList() ) - from Digitization.DigitizationFlags import digitizationFlags - if digitizationFlags.doXingByXingPileUp(): - from PileUpComps.PileUpCompsConf import PileUpToolsAlg - return PileUpToolsAlg(name, **kwargs) - else: - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getStandardSignalOnlyTruthPileUpToolsAlg(name="StandardSignalOnlyTruthPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getStandardSignalOnlyTruthPileUpToolsList() ) - from Digitization.DigitizationFlags import digitizationFlags - if digitizationFlags.doXingByXingPileUp(): - from PileUpComps.PileUpCompsConf import PileUpToolsAlg - return PileUpToolsAlg(name, **kwargs) - else: - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getStandardInTimeOnlyTruthPileUpToolsAlg(name="StandardInTimeOnlyTruthPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getStandardInTimeOnlyTruthPileUpToolsList() ) - from Digitization.DigitizationFlags import digitizationFlags - if digitizationFlags.doXingByXingPileUp(): - from PileUpComps.PileUpCompsConf import PileUpToolsAlg - return PileUpToolsAlg(name, **kwargs) - else: - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getSplitNoMergePileUpToolsAlg(name="SplitNoMergePileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getSplitNoMergePileUpToolsList() ) - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getSplitNoMergeSFPileUpToolsAlg(name="SplitNoMergeSFPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getSplitNoMergeSFPileUpToolsList() ) - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getSplitNoMergeFSPileUpToolsAlg(name="SplitNoMergeFSPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getSplitNoMergeFSPileUpToolsList() ) - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) def getSplitNoMergeFFPileUpToolsAlg(name="SplitNoMergeFFPileUpToolsAlg", **kwargs): kwargs.setdefault('PileUpTools', getSplitNoMergeFFPileUpToolsList() ) - from PileUpComps.PileUpCompsConf import DigitizationAlg - return DigitizationAlg(name, **kwargs) + return getStandardPileUpToolsAlg(name, **kwargs) + +def getTestPileUpToolsAlg(name="TestPileUpToolsAlg", **kwargs): + PileUpToolsList = [ "TestPileUpTool" ] + kwargs.setdefault('PileUpTools', PileUpToolsList ) + from AthenaCommon.Constants import * + kwargs.setdefault('OutputLevel', DEBUG ) + return getStandardPileUpToolsAlg(name, **kwargs) + +def getTestFilterPileUpToolsAlg(name="TestFilterPileUpToolsAlg", **kwargs): + PileUpToolsList = [ "TestFilterPileUpTool" ] + kwargs.setdefault('PileUpTools', PileUpToolsList ) + from AthenaCommon.Constants import * + kwargs.setdefault('OutputLevel', DEBUG ) + return getStandardPileUpToolsAlg(name, **kwargs) + +def getTestTruthJetFilterPileUpToolsAlg(name="TestTruthJetFilterPileUpToolsAlg", **kwargs): + PileUpToolsList = [ "MergeTruthJetsFilterTool" ] + kwargs.setdefault('PileUpTools', PileUpToolsList ) + from AthenaCommon.Constants import * + kwargs.setdefault('OutputLevel', DEBUG ) + return getStandardPileUpToolsAlg(name, **kwargs) diff --git a/Simulation/Digitization/python/DigiOutput.py b/Simulation/Digitization/python/DigiOutput.py index ed410f70d0c8..6e946e7d4c59 100644 --- a/Simulation/Digitization/python/DigiOutput.py +++ b/Simulation/Digitization/python/DigiOutput.py @@ -136,6 +136,9 @@ def getStreamRDO_ItemList(log): StreamRDO_ItemList+=["LArDigitContainer#*"] else: StreamRDO_ItemList+=["LArDigitContainer#LArDigitContainer_MC_Thinned"] + if hasattr(DetFlags.digitize, 'HGTD_on') and DetFlags.digitize.HGTD_on(): + if DetFlags.writeRDOPool.HGTD_on(): + StreamRDO_ItemList+=["LArHitContainer#HGTDDigitContainer_MC"] if DetFlags.digitize.Tile_on(): if DetFlags.writeRDOPool.Tile_on(): StreamRDO_ItemList+=["TileRawChannelContainer#*"] diff --git a/Simulation/Digitization/python/DigitizationConfigDb.py b/Simulation/Digitization/python/DigitizationConfigDb.py index c55668f0e024..0ebd5274a815 100644 --- a/Simulation/Digitization/python/DigitizationConfigDb.py +++ b/Simulation/Digitization/python/DigitizationConfigDb.py @@ -18,6 +18,9 @@ addTool("Digitization.PileUpConfig.getCavernCache" , "CavernCa addTool("Digitization.PileUpConfig.getBeamGasCache" , "BeamGasCache") addTool("Digitization.PileUpConfig.getBeamHaloCache" , "BeamHaloCache") +addTool("Digitization.DigiAlgConfig.getTestPileUpTool" , "TestPileUpTool") +addTool("Digitization.DigiAlgConfig.getTestFilterPileUpTool" , "TestFilterPileUpTool") + addService("Digitization.RunDependentConfig.getLumiProfileSvc" , "LumiProfileSvc") addService("Digitization.RunDependentConfig.getNoProfileSvc" , "NoProfileSvc") addService("Digitization.RunDependentConfig.getEvtIdModifierSvc" , "EvtIdModifierSvc") @@ -33,5 +36,8 @@ addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergePileUpToolsAlg" , "Spli addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeSFPileUpToolsAlg" , "SplitNoMergeSFPileUpToolsAlg") addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeFSPileUpToolsAlg" , "SplitNoMergeFSPileUpToolsAlg") addAlgorithm("Digitization.DigiAlgConfig.getSplitNoMergeFFPileUpToolsAlg" , "SplitNoMergeFFPileUpToolsAlg") +addAlgorithm("Digitization.DigiAlgConfig.getTestPileUpToolsAlg" , "TestPileUpToolsAlg") +addAlgorithm("Digitization.DigiAlgConfig.getTestFilterPileUpToolsAlg" , "TestFilterPileUpToolsAlg") +addAlgorithm("Digitization.DigiAlgConfig.getTestTruthJetFilterPileUpToolsAlg" , "TestTruthJetFilterPileUpToolsAlg") addService("Digitization.PileUpMergeSvcConfig.getPileUpMergeSvc" , "PileUpMergeSvc") diff --git a/Simulation/Digitization/python/DigitizationFlags.py b/Simulation/Digitization/python/DigitizationFlags.py index 1fea6d8eca53..e4915b496f82 100755 --- a/Simulation/Digitization/python/DigitizationFlags.py +++ b/Simulation/Digitization/python/DigitizationFlags.py @@ -418,6 +418,15 @@ class doXingByXingPileUp(JobProperty): allowedTypes=['bool'] StoredValue=False +# +class doBichselSimulation(JobProperty): + """ Should the Bichsel model be used in Pixel and SCT + Digitization. + """ + statusOn=False + allowedTypes=['bool'] + StoredValue=False + class IOVDbGlobalTag(JobProperty): """ This overrides the default IOVDbGlobalTag which corresponds to the detector description in @@ -781,8 +790,8 @@ jobproperties.add_Container(Digitization) # We want always the following flags in the container list_jobproperties=[doInDetNoise,doCaloNoise,doMuonNoise,doFwdNoise,doRadiationDamage,\ rndmSvc,rndmSeedList,rndmSeedOffset1,rndmSeedOffset2,readSeedsFromFile,\ - rndmSeedInputFile,physicsList,overrideMetadata,IOVDbGlobalTag,SimG4VersionUsed,\ - numberOfCollisions,\ + rndmSeedInputFile,physicsList,overrideMetadata,doBichselSimulation,\ + IOVDbGlobalTag,SimG4VersionUsed,numberOfCollisions,\ doLowPtMinBias,numberOfLowPtMinBias,LowPtMinBiasInputCols,\ doHighPtMinBias,numberOfHighPtMinBias,HighPtMinBiasInputCols,\ doCavern,numberOfCavern,cavernInputCols,\ diff --git a/Simulation/Digitization/python/DigitizationReadMetaData.py b/Simulation/Digitization/python/DigitizationReadMetaData.py index f0822d1daa25..1d8871d32e2e 100644 --- a/Simulation/Digitization/python/DigitizationReadMetaData.py +++ b/Simulation/Digitization/python/DigitizationReadMetaData.py @@ -269,7 +269,7 @@ def signalMetaDataCheck(metadatadict): if not skipCheck('SimulatedDetectors'): if 'SimulatedDetectors' in simkeys: logDigitizationReadMetadata.debug("Switching off subdetectors which were not simulated") - possibleSubDetectors=['pixel','SCT','TRT','BCM','Lucid','ZDC','ALFA','AFP','FwdRegion','LAr','Tile','MDT','CSC','TGC','RPC','Micromegas','sTGC','Truth'] + possibleSubDetectors=['pixel','SCT','TRT','BCM','Lucid','ZDC','ALFA','AFP','FwdRegion','LAr','HGTD','Tile','MDT','CSC','TGC','RPC','Micromegas','sTGC','Truth'] switchedOffSubDetectors=[] for subdet in possibleSubDetectors: if not subdet in metadatadict['SimulatedDetectors']: diff --git a/Simulation/Digitization/python/DigitizationWriteMetaData.py b/Simulation/Digitization/python/DigitizationWriteMetaData.py index 4ce49416dbb2..2d3e16818330 100644 --- a/Simulation/Digitization/python/DigitizationWriteMetaData.py +++ b/Simulation/Digitization/python/DigitizationWriteMetaData.py @@ -186,11 +186,11 @@ def writeDigitizationMetadata(): ## Digitized detector flags: add each enabled detector to the DigitizedDetectors list digiDets = [] - for det in ['pixel','SCT','TRT','BCM','Lucid','ZDC','ALFA','AFP','FwdRegion','LAr','Tile','MDT','CSC','TGC','RPC','Micromegas','sTGC','Truth','LVL1']: + for det in ['pixel','SCT','TRT','BCM','Lucid','ZDC','ALFA','AFP','FwdRegion','LAr','HGTD','Tile','MDT','CSC','TGC','RPC','Micromegas','sTGC','Truth','LVL1']: attrname = det+"_on" checkfn = getattr(DetFlags.digitize, attrname, None) if checkfn is None: - logDigitizationWriteMetadata.warning("No attribute '%s' found on DetFlags.digitize" % attrname) + logDigitizationWriteMetadata.info("No attribute '%s' found on DetFlags.digitize" % attrname) continue if checkfn(): digiDets.append(det) diff --git a/Simulation/Digitization/python/PileUpMergeSvcConfig.py b/Simulation/Digitization/python/PileUpMergeSvcConfig.py index 7719c2a72b4f..628553f9381d 100644 --- a/Simulation/Digitization/python/PileUpMergeSvcConfig.py +++ b/Simulation/Digitization/python/PileUpMergeSvcConfig.py @@ -2,7 +2,7 @@ from AthenaCommon import CfgMgr from AthenaCommon import CfgGetter - +#FIXME no need for all these getPrivateTool calls. def getPileUpMergeSvc(name="PileUpMergeSvc", **kwargs): from Digitization.DigitizationFlags import digitizationFlags if not digitizationFlags.doXingByXingPileUp(): # PileUpTool approach @@ -22,7 +22,7 @@ def getPileUpMergeSvc(name="PileUpMergeSvc", **kwargs): IntervalsList += [ CfgGetter.getPrivateTool("ZdcRange", checkType=True) ] if DetFlags.pileup.ALFA_on(): IntervalsList += [ CfgGetter.getPrivateTool("ALFARange", checkType=True) ] - if hasattr(DetFlags.pileup, 'AFP_on') and DetFlags.pileup.AFP_on(): # temp protection + if DetFlags.pileup.AFP_on(): IntervalsList += [ CfgGetter.getPrivateTool("AFPRange", checkType=True) ] ## Inner Detector Digitization if DetFlags.pileup.BCM_on(): @@ -48,6 +48,8 @@ def getPileUpMergeSvc(name="PileUpMergeSvc", **kwargs): IntervalsList += [ CfgGetter.getPrivateTool("LArRangeEM", checkType=True) ] IntervalsList += [ CfgGetter.getPrivateTool("LArRangeHEC", checkType=True) ] IntervalsList += [ CfgGetter.getPrivateTool("LArRangeFCAL", checkType=True) ] + if hasattr(DetFlags.pileup, 'HGTD_on') and DetFlags.pileup.HGTD_on(): # No HGTD in Overlay samples (yet!) + IntervalsList += [ CfgGetter.getPrivateTool("LArRangeHGTD", checkType=True) ] if DetFlags.pileup.Tile_on(): IntervalsList += [ CfgGetter.getPrivateTool("TileRange", checkType=True) ] ## Muon System Digitization diff --git a/Simulation/Digitization/share/ConfigDigitization.py b/Simulation/Digitization/share/ConfigDigitization.py index 40eef8bb32fe..4120ec380b61 100755 --- a/Simulation/Digitization/share/ConfigDigitization.py +++ b/Simulation/Digitization/share/ConfigDigitization.py @@ -10,6 +10,8 @@ checkDetFlagConfiguration() from AthenaCommon.AppMgr import ServiceMgr if not hasattr(ServiceMgr, 'EventSelector'): import AthenaPoolCnvSvc.ReadAthenaPool +if hasattr(ServiceMgr, 'PoolSvc'): + ServiceMgr.PoolSvc.MaxFilesOpen = 0 # Never close Input Files from AthenaCommon.AthenaCommonFlags import athenaCommonFlags if not athenaCommonFlags.DoFullChain: ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.PoolHitsInput() diff --git a/Simulation/Digitization/share/Digitization.py b/Simulation/Digitization/share/Digitization.py index de55df25ce8c..16cef96dbf6a 100755 --- a/Simulation/Digitization/share/Digitization.py +++ b/Simulation/Digitization/share/Digitization.py @@ -45,6 +45,8 @@ else : #DetFlags.AFP_setOn() #DetFlags.FwdRegion_setOn() DetFlags.Calo_setOn() + if hasattr(DetFlags, 'HGTD_setOff'): + DetFlags.HGTD_setOff() DetFlags.Muon_setOn() DetFlags.Truth_setOn() DetFlags.LVL1_setOn() -- GitLab