From a51fd43268417c418bfd2096ee5c239622781740 Mon Sep 17 00:00:00 2001 From: Carlo Varni <carlo.varni@cern.ch> Date: Tue, 5 Mar 2024 20:14:42 +0100 Subject: [PATCH] Acts Cache mechanism can be set by config flags Acts Cache mechanism can be set by config flags --- .../python/ActsClusterizationConfig.py | 28 +++++++++++++++---- .../Acts/ActsConfig/python/ActsConfigFlags.py | 3 +- .../python/ActsSpacePointFormationConfig.py | 8 ++++-- .../python/ActsTrackFindingConfig.py | 5 ++-- .../src/ClusterizationAlg.h | 4 +-- .../src/ClusterizationAlg.icc | 8 ++---- 6 files changed, 37 insertions(+), 19 deletions(-) diff --git a/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py b/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py index a3615971351e..60ea6903d20f 100644 --- a/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py +++ b/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py @@ -61,6 +61,7 @@ def ActsPixelClusterizationAlgCfg(flags, # Regional selection kwargs.setdefault('RoIs', 'OfflineFullScanRegion') + kwargs.setdefault('EnableCache', flags.Acts.useCache) kwargs.setdefault('ClusterCacheBackend', 'ActsPixelClusterCache_Back') kwargs.setdefault('ClusterCache', 'ActsPixelClustersCache') @@ -91,6 +92,7 @@ def ActsStripClusterizationAlgCfg(flags, # Regional selection kwargs.setdefault('RoIs', 'OfflineFullScanRegion') + kwargs.setdefault('EnableCache', flags.Acts.useCache) kwargs.setdefault('ClusterCacheBackend', 'ActsStripClusterCache_Back') kwargs.setdefault('ClusterCache', 'ActsStripClustersCache') @@ -121,7 +123,7 @@ def ActsClusterCacheCreatorCfg(flags, name="ActsClusterCacheCreator", **kwargs): def ActsPixelClustersViewFillerCfg(flags,name="PixelClusterViewFiller", **kwargs): kwargs.setdefault("InputIDC", "ActsPixelClustersCache") - kwargs.setdefault("Output", "ITKPixelClusters_InView") + kwargs.setdefault("Output", "ITkPixelClusters_InView") kwargs.setdefault('RoIs', 'OfflineFullScanRegion') @@ -137,7 +139,7 @@ def ActsPixelClustersViewFillerCfg(flags,name="PixelClusterViewFiller", **kwargs def ActsStripClustersViewFillerCfg(flags,name="StripClusterViewFiller", **kwargs): kwargs.setdefault("InputIDC", "ActsStripClustersCache") - kwargs.setdefault("Output", "ITKStripClusters_InView") + kwargs.setdefault("Output", "ITkStripClusters_InView") kwargs.setdefault('RoIs', 'OfflineFullScanRegion') @@ -154,14 +156,21 @@ def ActsStripClustersViewFillerCfg(flags,name="StripClusterViewFiller", **kwargs def ActsMainClusterizationCfg(flags) -> ComponentAccumulator: acc = ComponentAccumulator() - acc.merge(ActsClusterCacheCreatorCfg(flags)) + + if flags.Acts.useCache: + acc.merge(ActsClusterCacheCreatorCfg(flags)) + if flags.Detector.EnableITkPixel: acc.merge(ActsPixelClusterizationAlgCfg(flags)) - acc.merge(ActsPixelClustersViewFillerCfg(flags)) if flags.Detector.EnableITkStrip: acc.merge(ActsStripClusterizationAlgCfg(flags)) - acc.merge(ActsStripClustersViewFillerCfg(flags)) + if flags.Acts.useCache: + if flags.Detector.EnableITkPixel: + acc.merge(ActsPixelClustersViewFillerCfg(flags)) + if flags.Detector.EnableITkStrip: + acc.merge(ActsStripClustersViewFillerCfg(flags)) + # Analysis extensions if flags.Acts.doAnalysis: if flags.Detector.EnableITkPixel: @@ -180,9 +189,16 @@ def ActsConversionClusterizationCfg(flags) -> ComponentAccumulator: acc.merge(ActsStripClusterizationAlgCfg(flags, name="ActsConversionStripClusterizationAlg", ClustersKey="ITkConversionStripClusters", - ClusterCache="", + EnableCache=False, RoIs="OfflineCaloBasedRegion")) + if flags.Acts.useCache: + if flags.Detector.EnableITkStrip: + acc.merge(ActsStripClustersViewFillerCfg(flags, + name="ActsConversionStripClustersViewFiller", + Output="ITkConversionStripClusters_InView", + RoIs="OfflineCaloBasedRegion")) + # Analysis extensions if flags.Acts.doAnalysis: if flags.Detector.EnableITkStrip: diff --git a/Tracking/Acts/ActsConfig/python/ActsConfigFlags.py b/Tracking/Acts/ActsConfig/python/ActsConfigFlags.py index ba70a4b34bfb..f721ab7c215c 100644 --- a/Tracking/Acts/ActsConfig/python/ActsConfigFlags.py +++ b/Tracking/Acts/ActsConfig/python/ActsConfigFlags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags from AthenaConfiguration.Enums import FlagEnum @@ -23,6 +23,7 @@ def createActsConfigFlags(): actscf.addFlag('Acts.EDM.PersistifyClusters', False) actscf.addFlag('Acts.EDM.PersistifySpacePoints', False) actscf.addFlag('Acts.EDM.PersistifyTracks', False) + actscf.addFlag('Acts.useCache', False) # Scheduling actscf.addFlag('Acts.doITkConversion', False) diff --git a/Tracking/Acts/ActsConfig/python/ActsSpacePointFormationConfig.py b/Tracking/Acts/ActsConfig/python/ActsSpacePointFormationConfig.py index fec626e6dae3..480380af5458 100644 --- a/Tracking/Acts/ActsConfig/python/ActsSpacePointFormationConfig.py +++ b/Tracking/Acts/ActsConfig/python/ActsSpacePointFormationConfig.py @@ -82,7 +82,8 @@ def ActsMainSpacePointFormationCfg(flags) -> ComponentAccumulator: acc = ComponentAccumulator() if flags.Detector.EnableITkPixel: - acc.merge(ActsPixelSpacePointFormationCfg(flags)) + acc.merge(ActsPixelSpacePointFormationCfg(flags, + PixelClusters = "ITkPixelClusters_InView" if flags.Acts.useCache else "ITkPixelClusters")) if flags.Detector.EnableITkStrip and not flags.Tracking.doITkFastTracking: # Need to schedule this here in case the Athena space point formation is not schedule # This is because as of now requires at least ITkSiElementPropertiesTableCondAlgCfg @@ -97,7 +98,8 @@ def ActsMainSpacePointFormationCfg(flags) -> ComponentAccumulator: from InDetConfig.SiSpacePointFormationConfig import ITkSiElementPropertiesTableCondAlgCfg acc.merge(ITkSiElementPropertiesTableCondAlgCfg(flags)) - acc.merge(ActsStripSpacePointFormationCfg(flags)) + acc.merge(ActsStripSpacePointFormationCfg(flags, + StripClusters = "ITkStripClusters_InView" if flags.Acts.useCache else "ITkStripClusters")) # Analysis extensions if flags.Acts.doAnalysis: @@ -130,7 +132,7 @@ def ActsConversionSpacePointFormationCfg(flags) -> ComponentAccumulator: acc.merge(ActsStripSpacePointFormationCfg(flags, name="ActsConversionStripSpacePointFormation", - StripClusters="ITkConversionStripClusters", + StripClusters="ITkConversionStripClusters_InView" if flags.Acts.useCache else "ITkConversionStripClusters", StripSpacePoints="ITkConversionStripSpacePoints", StripOverlapSpacePoints="ITkConversionStripOverlapSpacePoints")) diff --git a/Tracking/Acts/ActsConfig/python/ActsTrackFindingConfig.py b/Tracking/Acts/ActsConfig/python/ActsTrackFindingConfig.py index 0f9716cb21c7..af567777b304 100644 --- a/Tracking/Acts/ActsConfig/python/ActsTrackFindingConfig.py +++ b/Tracking/Acts/ActsConfig/python/ActsTrackFindingConfig.py @@ -132,7 +132,8 @@ def ActsTrackFindingCfg(flags) -> ComponentAccumulator: # Acts Main pass if flags.Tracking.ActiveConfig.extension == "Acts": - acc.merge(ActsMainTrackFindingCfg(flags)) + acc.merge(ActsMainTrackFindingCfg(flags, + UncalibratedMeasurementContainerKeys = ["ITkPixelClusters_InView", "ITkStripClusters_InView"] if flags.Acts.useCache else ["ITkPixelClusters", "ITkStripClusters"])) # Acts Conversion pass elif flags.Tracking.ActiveConfig.extension == "ActsConversion": prefix="SiSPSeededActsConversionTrack" @@ -142,7 +143,7 @@ def ActsTrackFindingCfg(flags) -> ComponentAccumulator: SeedLabels=["SSS"], EstimatedTrackParametersKeys=["ITkConversionStripEstimatedTrackParams"], SeedContainerKeys=["ITkConversionStripSeeds"], - UncalibratedMeasurementContainerKeys=["ITkPixelClusters", "ITkConversionStripClusters"], + UncalibratedMeasurementContainerKeys=["ITkPixelClusters_InView", "ITkConversionStripClusters"] if flags.Acts.useCache else ["ITkPixelClusters", "ITkConversionStripClusters"], # for the time being we do not pass InView collections for strips here due to issue with the CKF stage TrackBackEndPrefixName=prefix, MTJBackEndPrefixName=prefix)) # Any other pass -> mainly validation diff --git a/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.h b/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.h index 03ab30287130..8974cbcc9faa 100644 --- a/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.h +++ b/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #ifndef ACTSTRK_DATAPREPARATION_CLUSTERIZATIONALG_H @@ -76,7 +76,7 @@ private: Cache_WriteHandleKey m_ClusterCache{this,"ClusterCache",""}; Cache_BackendUpdateHandleKey m_ClusterCacheBackend{this,"ClusterCacheBackend",""}; - bool m_cache_enabled{false}; + Gaudi::Property< bool > m_cache_enabled {this, "EnableCache", false}; // expected number of clusters for RDO // This values is used for reserving enough memory of the cluster container diff --git a/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.icc b/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.icc index eecde7068f44..507aabef576e 100644 --- a/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.icc +++ b/Tracking/Acts/ActsDataPreparation/src/ClusterizationAlg.icc @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "AthenaMonitoringKernel/Monitored.h" @@ -30,10 +30,8 @@ StatusCode ClusterizationAlg<IClusteringTool>::initialize() ATH_CHECK(m_monTool.retrieve(EnableTool{not m_monTool.empty()})); //caching - ATH_CHECK(m_ClusterCache.initialize(SG::AllowEmpty)); - ATH_CHECK(m_ClusterCacheBackend.initialize(SG::AllowEmpty)); - - m_cache_enabled = !m_ClusterCache.key().empty(); + ATH_CHECK(m_ClusterCache.initialize(m_cache_enabled)); + ATH_CHECK(m_ClusterCacheBackend.initialize(m_cache_enabled)); return StatusCode::SUCCESS; } -- GitLab