diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py index 9f09f2eb727d1285a8a00395b7b76728c58c0d9d..d718e090ca0a08f1a25c2b22ae9bee2dd3d6abb2 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py @@ -44,5 +44,6 @@ def SCT_DCSConditionsCfg(flags, name="InDetSCT_DCSConditions", **kwargs): acc.addCondAlgo(hvAlg) tempAlg = SCT_DCSConditionsTempCondAlg(name=name + "TempCondAlg", ReadKey=tempFolder) acc.addCondAlgo(tempAlg) - return acc, tool + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py index 0727f41c115870ea81b2185dc4df3bb3f46bc755..081cd9d9d85b6f666e0ace54779f913f09e8ecb4 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_ReadCalibChipDataConfig.py @@ -13,7 +13,7 @@ def SCT_ReadCalibChipDataToolCfg(flags, name="InDetSCT_ReadCalibChipDataTool", * return SCT_ReadCalibChipDataTool(name, **kwargs) def SCT_ReadCalibChipDataCfg(flags, name="SCT_ReadCalibChip", **kwargs): - """Return configured ComponentAccumulator and tool for SCT_ReadCalibChipDataCfg + """Return configured ComponentAccumulator with SCT_ReadCalibChipDataCfg tool Accepts optional noiseFolder and gainFolder keyword arguments """ @@ -29,5 +29,6 @@ def SCT_ReadCalibChipDataCfg(flags, name="SCT_ReadCalibChip", **kwargs): gainAlg = SCT_ReadCalibChipGainCondAlg(name=name + "GainCondAlg", ReadKey=gainFolder) acc.addCondAlgo(gainAlg) tool = kwargs.get("ReadCalibChipDataTool", SCT_ReadCalibChipDataToolCfg(flags)) - return acc, tool + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py index fb841600267fcbdb457f6f6a8c2446c513ed1358..50971f5df3807d2fc96dbb33e4423886f6c0775a 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py @@ -30,5 +30,6 @@ def SCT_SiliconConditionsCfg(flags, name="SCT_Silicon", **kwargs): tempAlg = SCT_SiliconTempCondAlg(name=name + "TempCondAlg", **CondArgs) acc.addCondAlgo(hvAlg) acc.addCondAlgo(tempAlg) - return acc, tool + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py index 78cdab2ff3f91e7240d6e2b80998d4a5bb03b563..fdbb1c4b7fb2990450b4384f17109a8933b2d7d5 100755 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py @@ -16,14 +16,10 @@ from SCT_ConditionsTools.SCT_ReadCalibChipDataConfig import SCT_ReadCalibChipDat log.setLevel(DEBUG) Configurable.configurableRun3Behavior = True ConfigFlags.Input.Files = defaultTestFiles.HITS -# DCS -DCSAcc, DCSTool = SCT_DCSConditionsCfg(ConfigFlags, name="DCSTest") -# Silicon -SiliconAcc, SiliconTool = SCT_SiliconConditionsCfg(ConfigFlags, name="SiliconTest") -# ReadCalibChipData -ReadAcc, ReadTool = SCT_ReadCalibChipDataCfg(ConfigFlags, name="ReadTest") -# prevent raise on __del__ -DCSAcc.wasMerged() -SiliconAcc.wasMerged() -ReadAcc.wasMerged() +# call tests +tacc = SCT_DCSConditionsCfg(ConfigFlags, name="DCSTest") +tacc.merge(SCT_SiliconConditionsCfg(ConfigFlags, name="SiliconTest")) +tacc.merge(SCT_ReadCalibChipDataCfg(ConfigFlags, name="ReadTest")) +# reset to prevent errors on deletion +tacc.__init__() diff --git a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/PixelLorentzAngleConfig.py b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/PixelLorentzAngleConfig.py index 908a57e1419c6bfc51f8139ff30ee8c423bd6dc3..3c5d03f3cca97c2e6a59299e803aa45300a2e2ee 100644 --- a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/PixelLorentzAngleConfig.py +++ b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/PixelLorentzAngleConfig.py @@ -23,12 +23,15 @@ def PixelLorentzAngleCfg(flags, name="PixelSiLorentzAngleCondAlg", **kwargs): """ acc, svc = MagneticFieldSvcCfg(flags) tool = kwargs.get("SiLorentzAngleTool", PixelLorentzAngleToolCfg(flags)) - acc.merge(PixelDCSConditionsCfg(flags)) - SiPropAcc, SiPropTool = PixelSiPropertiesCfg(flags) + DCSCondAcc = PixelDCSConditionsCfg(flags) + DCSCondAcc.popPrivateTools() + acc.merge(DCSCondAcc) + SiPropAcc = PixelSiPropertiesCfg(flags) acc.merge(SiPropAcc) - kwargs.setdefault("SiPropertiesTool", SiPropTool) + kwargs.setdefault("SiPropertiesTool", SiPropAcc.popPrivateTools()) kwargs.setdefault("UseMagFieldSvc", tool.UseMagFieldSvc) kwargs.setdefault("UseMagFieldDcs", not flags.Common.isOnline) acc.addCondAlgo(PixelSiLorentzAngleCondAlg(name, **kwargs)) - return acc, tool + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py index 233f4ff54db39caa83fdea2c29180081acdc14de..4e0f267d1dc22c4965a55e3b43fc581b87df03e5 100644 --- a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py +++ b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py @@ -39,19 +39,20 @@ def SCT_LorentzAngleCfg(flags, name="SCT_SiLorentzAngleCondAlg", DCSkwargs["hvFolder"] = dcs_folder + "/HV" DCSkwargs["tempFolder"] = dcs_folder + "/MODTEMP" DCSkwargs["stateFolder"] = dcs_folder + "/CHANSTAT" - DCSAcc, DCSTool = SCT_DCSConditionsCfg(flags, **DCSkwargs) + DCSAcc = SCT_DCSConditionsCfg(flags, **DCSkwargs) acc.merge(DCSAcc) - SCAcc, SCTool = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSTool) + SCAcc = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSAcc.popPrivateTools()) else: SCTool = SCT_SiliconConditionsToolCfg(flags, UseDB=False, ForceUseGeoModel=True) - SCAcc, SCTool = SCT_SiliconConditionsCfg(flags, SiliconConditionsTool=SCTool) + SCAcc = SCT_SiliconConditionsCfg(flags, SiliconConditionsTool=SCTool) + SCAcc.popPrivateTools() acc.merge(SCAcc) # set up SCTSiLorentzAngleCondAlg kwargs.setdefault("UseMagFieldSvc", tool.UseMagFieldSvc) kwargs.setdefault("UseMagFieldDcs", not flags.Common.isOnline) kwargs.setdefault("UseGeoModel", forceUseGeoModel) kwargs.setdefault("useSctDefaults", False) - alg = SCTSiLorentzAngleCondAlg(name, **kwargs) - acc.addCondAlgo(alg) - return acc, tool + acc.addCondAlgo(SCTSiLorentzAngleCondAlg(name, **kwargs)) + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SiLorentzAngleTool/test/SiLorentzAngleConfig_test.py b/InnerDetector/InDetConditions/SiLorentzAngleTool/test/SiLorentzAngleConfig_test.py index 1c72737ed6f7f06be70315e55bf8b7d74777adb9..56842f729be3ae28193d9c3b95b3e70825165390 100755 --- a/InnerDetector/InDetConditions/SiLorentzAngleTool/test/SiLorentzAngleConfig_test.py +++ b/InnerDetector/InDetConditions/SiLorentzAngleTool/test/SiLorentzAngleConfig_test.py @@ -16,16 +16,17 @@ from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleCfg log.setLevel(DEBUG) Configurable.configurableRun3Behavior = True ConfigFlags.Input.Files = defaultTestFiles.HITS +# using __init__ to reset, preventing errors on deletion # case online ConfigFlags.Common.isOnline = True -acc, tool = SCT_LorentzAngleCfg(ConfigFlags, name="SCT_LorentzAngleTestOnline") -acc2, tool = PixelLorentzAngleCfg(ConfigFlags, name="PixelLorentzAngleTestOnline") -acc.merge(acc2) -acc.wasMerged() +tacc = SCT_LorentzAngleCfg(ConfigFlags, name="SCT_LorentzAngleTestOnline") +tacc.__init__() +tacc = PixelLorentzAngleCfg(ConfigFlags, name="PixelLorentzAngleTestOnline") +tacc.__init__() # case offline ConfigFlags.Common.isOnline = False -acc, tool = SCT_LorentzAngleCfg(ConfigFlags, name="SCT_LorentzAngleTestOffline") -acc2, tool = PixelLorentzAngleCfg(ConfigFlags, name="PixelLorentzAngleTestOffline") -acc.merge(acc2) -acc.wasMerged() +tacc = SCT_LorentzAngleCfg(ConfigFlags, name="SCT_LorentzAngleTestOffline") +tacc.__init__() +tacc = PixelLorentzAngleCfg(ConfigFlags, name="PixelLorentzAngleTestOffline") +tacc.__init__() diff --git a/InnerDetector/InDetConditions/SiPropertiesTool/python/PixelSiPropertiesConfig.py b/InnerDetector/InDetConditions/SiPropertiesTool/python/PixelSiPropertiesConfig.py index 66de19b5e61c5ffced1ab01237fe366803585207..ef5aaa94910f42f44054125aa00bb1cd38536b79 100644 --- a/InnerDetector/InDetConditions/SiPropertiesTool/python/PixelSiPropertiesConfig.py +++ b/InnerDetector/InDetConditions/SiPropertiesTool/python/PixelSiPropertiesConfig.py @@ -21,5 +21,6 @@ def PixelSiPropertiesCfg(flags, name="PixelSiPropertiesCondAlg", **kwargs): acc = PixelDCSConditionsCfg(flags) tool = kwargs.get("SiPropertiesTool", PixelSiPropertiesToolCfg(flags)) acc.addCondAlgo(PixelSiPropertiesCondAlg(name, **kwargs)) - return acc, tool + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py index db9151a29e3def4f04f5d2dd722dbd7502856be9..5ce6c514b4dd68c1f46f3265f1dcef6beda68678 100644 --- a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py +++ b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py @@ -21,5 +21,6 @@ def SCT_SiPropertiesCfg(flags, name="SCTSiPropertiesCondAlg", **kwargs): tool = kwargs.get("SiPropertiesTool", SCT_SiPropertiesToolCfg(flags)) alg = SCTSiPropertiesCondAlg(name, **kwargs) acc.addEventAlgo(alg) - return acc, tool + acc.setPrivateTools(tool) + return acc diff --git a/InnerDetector/InDetConditions/SiPropertiesTool/test/SiPropertiesConfig_test.py b/InnerDetector/InDetConditions/SiPropertiesTool/test/SiPropertiesConfig_test.py index b68c74d5ce63700a141371ab782de23380df4a4b..67e7196dc6d79fc9b9babec9e8b40053a28e1dbb 100755 --- a/InnerDetector/InDetConditions/SiPropertiesTool/test/SiPropertiesConfig_test.py +++ b/InnerDetector/InDetConditions/SiPropertiesTool/test/SiPropertiesConfig_test.py @@ -17,9 +17,8 @@ log.setLevel(DEBUG) Configurable.configurableRun3Behavior = True ConfigFlags.Input.Files = defaultTestFiles.HITS # test -acc1, tool = SCT_SiPropertiesCfg(ConfigFlags, name="SCT_SiPropertiesConfigTest") -acc2, tool = PixelSiPropertiesCfg(ConfigFlags, name="PixelSiPropertiesConfigTest") -# prevent raise on __del__ -acc1.merge(acc2) -acc1.wasMerged() +tacc = SCT_SiPropertiesCfg(ConfigFlags, name="SCT_SiPropertiesConfigTest") +tacc.merge(PixelSiPropertiesCfg(ConfigFlags, name="PixelSiPropertiesConfigTest")) +# reset to prevent errors on deletion +tacc.__init__() diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py index 22fc5f896eb3a43eb2dd20e3b5ed816dc9733ef0..296e3690b5685b6e75b9621ae206258a79dfcf99 100755 --- a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py +++ b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py @@ -2,9 +2,9 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration """ -from AthenaCommon import CfgMgr from RngComps.RandomServices import RNG, AthEngines -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from PileUpComps.PileUpCompsConf import PileUpXingFolder +from BCM_Digitization.BCM_DigitizationConf import BCM_DigitizationTool, BCM_Digitization # The earliest and last bunch crossing times for which interactions will be sent # to the BCM Digitization code. @@ -14,18 +14,24 @@ def BCM_FirstXing(): def BCM_LastXing(): return 0 -def BCM_DigitizationToolCfg(configFlags, name="BCM_DigitizationTool", **kwargs): - """Return tuple (ComponentAccumulator, tool) configured for BCM Digitization""" - acc = ComponentAccumulator() - # Configure the random engine - Engine = configFlags.Random.Engine - acc.merge(RNG(Engine)) - # Build the argument dict +def BCM_RangeCfg(flags, name="BCM_Range" , **kwargs): + """Return a BCM configured PileUpXingFolder tool""" + kwargs.setdefault("FirstXing", BCM_FirstXing()) + kwargs.setdefault("LastXing", BCM_LastXing()) + # Default 0 no dataproxy reset + kwargs.setdefault("CacheRefreshFrequency", 1.0) + kwargs.setdefault("ItemList", ["SiHitCollection#BCMHits"]) + return PileUpXingFolder(name, **kwargs) + +def BCM_DigitizationToolCfg(flags, name="BCM_DigitizationTool", **kwargs): + """Return a ComponentAccumulator with configured BCM_DigitizationTool""" + # take initial ComponentAccumulator from RNG + acc = RNG(flags.Random.Engine) kwargs.setdefault("RndmSvc", "AthRNGSvc") kwargs.setdefault("HitCollName", "BCMHits") kwargs.setdefault("OutputRDOKey", "BCM_RDOs") kwargs.setdefault("OutputSDOKey", "BCM_SDO_Map") - if configFlags.Digitization.DoInnerDetectorNoise: + if flags.Digitization.DoInnerDetectorNoise: kwargs.setdefault("ModNoise", [90.82] * 8) else: kwargs.setdefault("ModNoise", [0.0] * 8) @@ -38,40 +44,28 @@ def BCM_DigitizationToolCfg(configFlags, name="BCM_DigitizationTool", **kwargs): kwargs.setdefault("EffDistanceParam", 4.0) kwargs.setdefault("EffSharpnessParam", 0.11) kwargs.setdefault("TimeDelay", 9.0) - if configFlags.Digitization.DoXingByXingPileUp: + if flags.Digitization.DoXingByXingPileUp: kwargs.setdefault("FirstXing", BCM_FirstXing()) kwargs.setdefault("LastXing", BCM_LastXing()) - # Make the tool - tool = CfgMgr.BCM_DigitizationTool(name, **kwargs) - return (acc, tool) + acc.setPrivateTools(BCM_DigitizationTool(name, **kwargs)) + return acc -def BCM_DigitizationCfg(configFlags, name="BCM_OverlayDigitization", **kwargs): - """Return a ComponentAccumulator with BCM Digitization algorithm""" - acc, tool = BCM_DigitizationToolCfg(configFlags, **kwargs) - kwargs.setdefault("DigitizationTool", tool) - alg = CfgMgr.BCM_Digitization(name, **kwargs) - acc.addEventAlgo(alg) +def BCM_DigitizationCfg(flags, name="BCM_OverlayDigitization", **kwargs): + """Return a ComponentAccumulator with configured BCM_Digitization algorithm""" + acc = BCM_DigitizationToolCfg(flags, **kwargs) + kwargs.setdefault("DigitizationTool", acc.popPrivateTools()) + acc.addEventAlgo(BCM_Digitization(name, **kwargs)) return acc -def BCM_OverlayDigitizationToolCfg(configFlags, name="BCM_OverlayDigitizationTool", **kwargs): - """Return tuple (ComponentAccumulator, tool) configured for BCM Overlay Digitization""" - kwargs.setdefault("EvtStore", configFlags.Overlay.Legacy.EventStore) - return BCM_DigitizationToolCfg(configFlags, name, **kwargs) +def BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **kwargs): + """Return ComponentAccumulator with BCM_DigitizationTool configured for Overlay""" + kwargs.setdefault("EvtStore", flags.Overlay.Legacy.EventStore) + return BCM_DigitizationToolCfg(flags, name, **kwargs) -def BCM_OverlayDigitizationCfg(configFlags, name="BCM_OverlayDigitization", **kwargs): - """Return a ComponentAccumulator with BCM Overlay Digitization algorithm""" - acc, tool = BCM_OverlayDigitizationToolCfg(configFlags, **kwargs) - kwargs.setdefault("DigitizationTool", tool) - alg = CfgMgr.BCM_Digitization(name, **kwargs) - acc.addEventAlgo(alg) +def BCM_OverlayDigitizationCfg(flags, name="BCM_OverlayDigitization", **kwargs): + """Return a ComponentAccumulator with BCM_Digitization algorithm configured for Overlay""" + acc = BCM_OverlayDigitizationToolCfg(flags, **kwargs) + kwargs.setdefault("DigitizationTool", acc.popPrivateTools()) + acc.addEventAlgo(BCM_Digitization(name, **kwargs)) return acc -def getBCM_Range(name="BCM_Range" , **kwargs): - """Return a configured PileUpXingFolder tool""" - # This is the time of the xing in ns - kwargs.setdefault("FirstXing", BCM_FirstXing()) - kwargs.setdefault("LastXing", BCM_LastXing()) - # Default 0 no dataproxy reset - kwargs.setdefault("CacheRefreshFrequency", 1.0) - kwargs.setdefault("ItemList", ["SiHitCollection#BCMHits"]) - return CfgMgr.PileUpXingFolder(name, **kwargs) diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py index f79e4fb5b2dfdd1913a984e9061a1eb3eb186aec..75ffbf152f2dfa7652ede3e1d2de79657d081c18 100755 --- a/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py +++ b/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py @@ -12,24 +12,36 @@ from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg -from BCM_Digitization.BCM_DigitizationConfigNew import BCM_DigitizationCfg from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags -from TrigUpgradeTest.InDetConfig import InDetGMConfig # FIXME This module would ideally be located somewhere else +from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg +from BCM_Digitization.BCM_DigitizationConfigNew import ( + BCM_RangeCfg, BCM_DigitizationToolCfg, BCM_DigitizationCfg, + BCM_OverlayDigitizationToolCfg, BCM_OverlayDigitizationCfg, +) # Set up logging and new style config log.setLevel(DEBUG) Configurable.configurableRun3Behavior = True # Configure -ConfigFlags.Input.Files = defaultTestFiles.HITS -ConfigFlags.Output.RDOFileName = "myRDO.pool.root" ConfigFlags.join(createDigitizationCfgFlags()) ConfigFlags.join(createOverlayCfgFlags()) +ConfigFlags.Input.Files = defaultTestFiles.HITS +ConfigFlags.Output.RDOFileName = "myRDO.pool.root" +ConfigFlags.GeoModel.Align.Dynamic = False ConfigFlags.lock() +# Function tests +tool = BCM_RangeCfg(ConfigFlags) +tacc = BCM_DigitizationToolCfg(ConfigFlags) +tacc.merge(BCM_OverlayDigitizationToolCfg(ConfigFlags)) +tacc.merge(BCM_DigitizationToolCfg(ConfigFlags)) +tacc.merge(BCM_OverlayDigitizationCfg(ConfigFlags)) +# reset to prevent errors on deletion +tacc.__init__() # Construct our accumulator to run acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) -acc.merge(InDetGMConfig(ConfigFlags)) # FIXME This sets up the whole ID geometry would be nicer just to set up min required for BCM +acc.merge(PixelGeometryCfg(ConfigFlags)) # Add configuration to write HITS pool file outConfig = OutputStreamCfg(ConfigFlags, "RDO", ItemList=["InDetSimDataCollection#*", "BCM_RDO_Container#*"]) diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py index d54410fc56e1893d1ce5bf36c6c52773a2f456ca..7c6daebcf8f027444037293299ef9244bc5bdfcf 100644 --- a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py +++ b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py @@ -48,16 +48,17 @@ def SCT_DigitizationCommonCfg(flags, name="SCT_DigitizationToolCommon", **kwargs kwargs.setdefault("LastXing", SCT_LastXing() ) tool = SCT_DigitizationTool(name, **kwargs) # attach ToolHandles - frontAcc, frontTool = SCT_FrontEndCfg(flags) - tool.FrontEnd = frontTool - surfAcc, surfTool = SCT_SurfaceChargesGeneratorCfg(flags) - tool.SurfaceChargesGenerator = surfTool + frontAcc = SCT_FrontEndCfg(flags) + tool.FrontEnd = frontAcc.popPrivateTools() + surfAcc = SCT_SurfaceChargesGeneratorCfg(flags) + tool.SurfaceChargesGenerator = surfAcc.popPrivateTools() tool.RandomDisabledCellGenerator = SCT_RandomDisabledCellGeneratorCfg(flags) acc.mergeAll([frontAcc, surfAcc]) - return acc, tool + acc.setPrivateTools(tool) + return acc def SCT_DigitizationToolCfg(flags, name="SCT_DigitizationTool", **kwargs): - """Return configured digitization tool""" + """Return a ComponentAccumulator with configured SCT digitization tool""" if flags.Digitization.PileUpPremixingForMT: kwargs.setdefault("OutputObjectName", flags.Overlay.BkgPrefix + "SCT_RDOs") kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "SCT_SDO_Map") @@ -68,21 +69,21 @@ def SCT_DigitizationToolCfg(flags, name="SCT_DigitizationTool", **kwargs): return SCT_DigitizationCommonCfg(flags, name, **kwargs) def SCT_DigitizationToolHSCfg(flags, name="SCT_DigitizationToolHS", **kwargs): - """Return hard scatter configured digitization tool""" + """Return a ComponentAccumulator with hard scatter configured SCT digitization tool""" kwargs.setdefault("OutputObjectName", "SCT_RDOs") kwargs.setdefault("OutputSDOName", "SCT_SDO_Map") kwargs.setdefault("HardScatterSplittingMode", 1) return SCT_DigitizationCommonCfg(flags, name, **kwargs) def SCT_DigitizationToolPUCfg(flags, name="SCT_DigitizationToolPU",**kwargs): - """Return pileup configured digitization tool""" + """Return a ComponentAccumulator with pileup configured SCT digitization tool""" kwargs.setdefault("OutputObjectName", "SCT_PU_RDOs") kwargs.setdefault("OutputSDOName", "SCT_PU_SDO_Map") kwargs.setdefault("HardScatterSplittingMode", 2) return SCT_DigitizationCommonCfg(flags, name, **kwargs) def SCT_DigitizationToolOverlayCfg(flags, name="SCT_OverlayDigitizationTool",**kwargs): - """Return overlay configured digitization tool""" + """Return a ComponentAccumulator with overlay configured SCT digitization tool""" acc = ComponentAccumulator() if flags.Overlay.Legacy.MT: kwargs.setdefault("InputSingleHitsName", "SCT_Hits") @@ -93,12 +94,11 @@ def SCT_DigitizationToolOverlayCfg(flags, name="SCT_OverlayDigitizationTool",**k kwargs.setdefault("OutputObjectName", flags.Overlay.Legacy.EventStore + "+SCT_RDOs") kwargs.setdefault("OutputSDOName", flags.Overlay.Legacy.EventStore + "+SCT_SDO_Map") kwargs.setdefault("HardScatterSplittingMode", 0) - CommonAcc, tool = SCT_DigitizationCommonCfg(flags, name, **kwargs) - acc.merge(CommonAcc) - return acc, tool + acc.merge(SCT_DigitizationCommonCfg(flags, name, **kwargs)) + return acc def SCT_DigitizationToolSplitNoMergePUCfg(flags, name="SCT_DigitizationToolSplitNoMergePU",**kwargs): - """Return no merged pileup configured digitization tool""" + """Return a ComponentAccumulator with merged pileup configured SCT digitization tool""" kwargs.setdefault("InputObjectName", "PileupSCT_Hits") kwargs.setdefault("HardScatterSplittingMode", 0) kwargs.setdefault("OutputObjectName", "SCT_PU_RDOs") @@ -128,7 +128,7 @@ def SCT_AmpCfg(flags, name="SCT_Amp", **kwargs): return SCT_Amp(name, **kwargs) def SCT_SurfaceChargesGeneratorCfg(flags, name="SCT_SurfaceChargesGenerator", **kwargs): - """Return configured (detailed) surface charges tool, conditioned on flags""" + """Return a ComponentAccumulator with configured surface charges tool""" acc = ComponentAccumulator() kwargs.setdefault("FixedTime", -999) kwargs.setdefault("SubtractTime", -999) @@ -142,19 +142,21 @@ def SCT_SurfaceChargesGeneratorCfg(flags, name="SCT_SurfaceChargesGenerator", ** # experimental SCT_DetailedSurfaceChargesGenerator config dropped here tool = SCT_SurfaceChargesGenerator(name, **kwargs) tool.RadDamageSummaryTool = SCT_RadDamageSummaryTool() - DCSCondAcc, DCSCondTool = SCT_DCSConditionsCfg(flags) - SiliCondAcc, SiliCondTool = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSCondTool) - SiliPropsAcc, SiliPropsTool = SCT_SiPropertiesCfg(flags, SiConditionsTool=SiliCondTool) - LorentzAcc, LorentzTool = SCT_LorentzAngleCfg(flags) + DCSCondAcc = SCT_DCSConditionsCfg(flags) + DCSCondTool = DCSCondAcc.popPrivateTools() + SiliCondAcc = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSCondTool) + SiliCondTool = SiliCondAcc.popPrivateTools() + SiliPropsAcc = SCT_SiPropertiesCfg(flags, SiConditionsTool=SiliCondTool) + LorentzAcc = SCT_LorentzAngleCfg(flags) tool.SiConditionsTool = SiliCondTool - tool.SiPropertiesTool = SiliPropsTool - tool.LorentzAngleTool = LorentzTool + tool.SiPropertiesTool = SiliPropsAcc.popPrivateTools() + tool.LorentzAngleTool = LorentzAcc.popPrivateTools() acc.mergeAll([DCSCondAcc, SiliCondAcc, SiliPropsAcc, LorentzAcc]) - return acc, tool + acc.setPrivateTools(tool) + return acc def SCT_FrontEndCfg(flags, name="SCT_FrontEnd", **kwargs): - """Return configured ComponentAccumulator with front-end electronics tool""" - acc = ComponentAccumulator() + """Return a ComponentAccumulator with configured front-end electronics tool""" # Setup noise treament in SCT_FrontEnd # To set the mean noise values for the different module types # Default values set at 0 degrees, plus/minus ~5 enc per plus/minus degree @@ -185,9 +187,8 @@ def SCT_FrontEndCfg(flags, name="SCT_FrontEnd", **kwargs): # Use Calibration data from Conditions DB, still for testing purposes only kwargs.setdefault("UseCalibData", True) # Setup the ReadCalibChip folders and Svc - readAcc, readTool = SCT_ReadCalibChipDataCfg(flags) - kwargs.setdefault("SCT_ReadCalibChipDataTool", readTool) - acc.merge(readAcc) + acc = SCT_ReadCalibChipDataCfg(flags) + kwargs.setdefault("SCT_ReadCalibChipDataTool", acc.popPrivateTools()) # DataCompressionMode: 1 is level mode x1x (default), 2 is edge mode 01x, 3 is expanded any hit xxx if flags.Digitization.PileUpPremixing: kwargs.setdefault("DataCompressionMode", 3) @@ -202,10 +203,11 @@ def SCT_FrontEndCfg(flags, name="SCT_FrontEnd", **kwargs): kwargs.setdefault("DataReadOutMode", 0) else: kwargs.setdefault("DataReadOutMode", 1) - return acc, SCT_FrontEnd(name, **kwargs) + acc.setPrivateTools(SCT_FrontEnd(name, **kwargs)) + return acc def SCT_FrontEndPileupCfg(flags, name="PileupSCT_FrontEnd", **kwargs): - """Return pileup-configured ComponentAccumulator with front-end electronics tool""" + """Return a ComponentAccumulator with pileup-configured front-end electronics tool""" kwargs.setdefault("NoiseBarrel", 0.0) kwargs.setdefault("NoiseBarrel3", 0.0) kwargs.setdefault("NoiseInners", 0.0) @@ -221,8 +223,8 @@ def SCT_FrontEndPileupCfg(flags, name="PileupSCT_FrontEnd", **kwargs): kwargs.setdefault("NoiseOn", False) return SCT_FrontEndCfg(flags, name, **kwargs) -def SiliconRangeCfg(flags, name="SiliconRange", **kwargs): - """Return a configured PileUpXingFolder tool""" +def SCT_RangeCfg(flags, name="SiliconRange", **kwargs): + """Return an SCT configured PileUpXingFolder tool""" kwargs.setdefault("FirstXing", SCT_FirstXing()) kwargs.setdefault("LastXing", SCT_LastXing()) kwargs.setdefault("CacheRefreshFrequency", 1.0) # default 0 no dataproxy reset @@ -233,8 +235,8 @@ def SCT_DigitizationCfg(toolCfg, flags, name="SCT_Digitization", **kwargs): """Return a ComponentAccumulator with toolCfg type SCT digitization""" acc = ComponentAccumulator() if "DigitizationTool" not in kwargs: - toolAcc, tool = toolCfg(flags) - kwargs["DigitizationTool"] = tool + toolAcc = toolCfg(flags) + kwargs["DigitizationTool"] = toolAcc.popPrivateTools() acc.merge(toolAcc) alg = SCT_Digitization(name, **kwargs) acc.addEventAlgo(alg) diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py index 334c611412167bff8baa220242436d18ec520933..258d622052992de55df8fa894206bc1dd88cf65a 100755 --- a/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py +++ b/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py @@ -18,7 +18,7 @@ from SCT_Digitization.SCT_DigitizationConfigNew import ( SCT_FrontEndCfg, SCT_FrontEndPileupCfg, SCT_DigitizationCommonCfg, SCT_DigitizationToolCfg, SCT_DigitizationToolGeantinoTruthCfg, SCT_DigitizationToolHSCfg, SCT_DigitizationToolPUCfg, SCT_DigitizationToolSplitNoMergePUCfg, SCT_DigitizationToolOverlayCfg, SCT_DigitizationHSCfg, - SCT_DigitizationPUCfg, SCT_DigitizationOverlayCfg, SiliconRangeCfg, + SCT_DigitizationPUCfg, SCT_DigitizationOverlayCfg, SCT_RangeCfg, ) from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags @@ -35,28 +35,26 @@ ConfigFlags.GeoModel.Align.Dynamic = False ConfigFlags.Concurrency.NumThreads = 1 ConfigFlags.lock() # Function tests -acc1, tool = SCT_DigitizationCommonCfg(ConfigFlags) -acc2, tool = SCT_DigitizationToolCfg(ConfigFlags) -acc3, tool = SCT_DigitizationToolHSCfg(ConfigFlags) -acc4, tool = SCT_DigitizationToolPUCfg(ConfigFlags) -acc5, tool = SCT_DigitizationToolOverlayCfg(ConfigFlags) -acc6, tool = SCT_DigitizationToolSplitNoMergePUCfg(ConfigFlags) -acc7, tool = SCT_DigitizationToolGeantinoTruthCfg(ConfigFlags) +tacc = SCT_DigitizationCommonCfg(ConfigFlags) +tacc.merge(SCT_DigitizationToolCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationToolHSCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationToolPUCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationToolOverlayCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationToolSplitNoMergePUCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationToolGeantinoTruthCfg(ConfigFlags)) tool = SCT_RandomDisabledCellGeneratorCfg(ConfigFlags) tool = SCT_AmpCfg(ConfigFlags) -acc8, tool = SCT_SurfaceChargesGeneratorCfg(ConfigFlags) -acc9, tool = SCT_FrontEndCfg(ConfigFlags) -accA, tool = SCT_FrontEndPileupCfg(ConfigFlags) -tool = SiliconRangeCfg(ConfigFlags) -accB = SCT_DigitizationHSCfg(ConfigFlags) -accC = SCT_DigitizationPUCfg(ConfigFlags) -accD = SCT_DigitizationOverlayCfg(ConfigFlags) -acc1.mergeAll([acc2, acc3, acc4, acc5, acc6, acc7, acc8, acc9, accA, accB, accC, accD]) -acc1.wasMerged() +tacc.merge(SCT_SurfaceChargesGeneratorCfg(ConfigFlags)) +tacc.merge(SCT_FrontEndCfg(ConfigFlags)) +tacc.merge(SCT_FrontEndPileupCfg(ConfigFlags)) +tool = SCT_RangeCfg(ConfigFlags) +tacc.merge(SCT_DigitizationHSCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationPUCfg(ConfigFlags)) +tacc.merge(SCT_DigitizationOverlayCfg(ConfigFlags)) +# reset to prevent errors on deletion +tacc.__init__() # Construct our accumulator to run acc = MainServicesSerialCfg() -from StoreGate.StoreGateConf import StoreGateSvc # FIXME remove this once athena is fixed -acc.addService(StoreGateSvc("ConditionStore")) acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(SCT_DigitizationHSCfg(ConfigFlags)) # Add configuration to write HITS pool file