From 5e80b51daa7a9b31c50d6c2fe7c3258bab057322 Mon Sep 17 00:00:00 2001 From: Goetz Gaycken <goetz.gaycken@cern.ch> Date: Mon, 2 Dec 2024 17:01:08 +0100 Subject: [PATCH] Use detector element status for ITk instead of conditions summary tool. The detector element status data which contains the condensed information of the conditions summary tools allows to query the module status with much smaller overhead. Schedule conditions algorithms to condense the conditions related pixel and strip module status conditions data, and event algorithms to combine this status with a status obtained from error flags encoded in the byte stream if the data is read from a byte stream. Disable in all ITk algorithms and tools, which support the detector element status, the conditions summary tool and use the status data instead. --- .../python/ITkPixelConditionsConfig.py | 35 +++++++++++++++++- .../python/ITkPixelConditionsSummaryConfig.py | 22 ++++++++++- .../ITkStripConditionsAlgorithmsConfig.py | 37 ++++++++++++++++++- .../python/ITkStripConditionsToolsConfig.py | 14 ++++++- .../python/InDetBoundaryCheckToolConfig.py | 20 +++++----- .../python/InDetPrepRawDataFormationConfig.py | 11 ++++-- .../python/InDetTestPixelLayerConfig.py | 17 ++++++--- .../python/SiClusterizationToolConfig.py | 26 ++++++++----- .../SiCombinatorialTrackFinderToolConfig.py | 28 +++++++------- .../InDetConfig/python/TrackRecoConfig.py | 13 +++++++ .../python/ActsClusterizationConfig.py | 9 +++-- .../TrigInDetConfig/python/ITkTrigSequence.py | 17 ++++++--- .../TrigInDetConfig/python/TrigInDetConfig.py | 7 ++++ .../PrecisionTracks_GSFRefittedSequence.py | 4 ++ 14 files changed, 205 insertions(+), 55 deletions(-) diff --git a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/ITkPixelConditionsConfig.py b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/ITkPixelConditionsConfig.py index 823a2da5a6b..fb1a4e57fa1 100644 --- a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/ITkPixelConditionsConfig.py +++ b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/ITkPixelConditionsConfig.py @@ -1,6 +1,6 @@ """Define functions to configure Pixel conditions algorithms -Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -184,3 +184,36 @@ def ITkPixelOfflineCalibCondAlgCfg(flags, name="ITkPixelOfflineCalibCondAlg", ** kwargs.setdefault("InputSource", 2) acc.addCondAlgo(CompFactory.ITk.PixelOfflineCalibCondAlg(name, **kwargs)) return acc + +def ITkPixelDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags, name = "ITkPixelDetectorElementStatusCondAlgNoByteStreamErrors", **kwargs) : + ''' + Condition alg to precompute the pixel detector element status. + This algorithm does not consider the byte stream errors which are event data. + ''' + acc = ComponentAccumulator() + if 'ConditionsSummaryTool' not in kwargs : + from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ITkPixelConditionsSummaryCfg + kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( ITkPixelConditionsSummaryCfg(flags))) + kwargs.setdefault( "WriteKey", "ITkPixelDetectorElementStatusNoByteStream") + acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) ) + return acc + +def ITkPixelDetectorElementStatusAlgCfg(flags, name = "ITkPixelDetectorElementStatusAlg", **kwargs) : + ''' + Event alg which could extend the pixel detector element status conditions data with bytestream errors. + ''' + acc = ComponentAccumulator() + if 'ConditionsSummaryTool' not in kwargs: + element_status_input=None + acc.merge( ITkPixelDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags) ) + element_status_input="ITkPixelDetectorElementStatusNoByteStream" + from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ITkByteStreamErrorDetectorElementStatusToolCfg + kwargs.setdefault("ConditionsSummaryTool", + acc.popToolsAndMerge(ITkByteStreamErrorDetectorElementStatusToolCfg(flags, PixelDetElStatusCondDataBaseKey=element_status_input) )) + + kwargs.setdefault("WriteKey","ITkPixelDetectorElementStatus") + + # @TODO merge pixel raw data provider for bytestream input + + acc.addEventAlgo( CompFactory.InDet.SiDetectorElementStatusAlg(name, **kwargs) ) + return acc diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/python/ITkPixelConditionsSummaryConfig.py b/InnerDetector/InDetConditions/PixelConditionsTools/python/ITkPixelConditionsSummaryConfig.py index ee615ffbd13..62023d1045c 100644 --- a/InnerDetector/InDetConditions/PixelConditionsTools/python/ITkPixelConditionsSummaryConfig.py +++ b/InnerDetector/InDetConditions/PixelConditionsTools/python/ITkPixelConditionsSummaryConfig.py @@ -1,9 +1,10 @@ """Define a function to configure ITkPixelConditionsSummaryCfg -Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentFactory import CompFactory - +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.Enums import Format from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( ITkPixelDCSCondStateAlgCfg, ITkPixelDCSCondStatusAlgCfg, ITkPixelDeadMapCondAlgCfg ) @@ -27,3 +28,20 @@ def ITkPixelConditionsSummaryCfg(flags, name="ITkPixelConditionsSummary", **kwar acc.setPrivateTools(CompFactory.PixelConditionsSummaryTool(name=name + "Tool", **kwargs)) return acc + + +def ITkByteStreamErrorDetectorElementStatusToolCfg(flags, name = "ITkByteStreamErrorDetectorElementStatusTool",**kwargs) : + # @TODO bytestream errors for ITk have not been defined yet. + acc = ComponentAccumulator() + kwargs.setdefault("PixelReadoutManager","ITkPixelReadoutManager") + kwargs.setdefault("PixelDetEleCollKey","ITkPixelDetectorElementCollection") # @TODO do we need the DetEleColl for the Acts chain ? + if not flags.Input.isMC and not flags.Overlay.DataOverlay and flags.Input.Format is Format.BS : + kwargs.setdefault("PixelByteStreamErrs", "PixelByteStreamErrs") + kwargs.setdefault("UseByteStreamFEI4", True) + kwargs.setdefault("UseByteStreamFEI3", True) + kwargs.setdefault("ActiveOnly", False) + acc.setPrivateTools( CompFactory.PixelByteStreamErrorDetectorElementStatusTool(name, **kwargs) ) + else : + kwargs.pop("ActiveOnly",False) + acc.setPrivateTools( CompFactory.PixelDetectorElementStatusCloneTool(name, **kwargs) ) + return acc diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/ITkStripConditionsAlgorithmsConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/ITkStripConditionsAlgorithmsConfig.py index f8025524f78..fb187f07b8d 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/ITkStripConditionsAlgorithmsConfig.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/ITkStripConditionsAlgorithmsConfig.py @@ -1,5 +1,5 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline @@ -73,3 +73,38 @@ def ITkStripDetectorElementCondAlgCfg(flags, name="ITkStripDetectorElementCondAl acc = ITkStripAlignCondAlgCfg(flags) acc.addCondAlgo(CompFactory.SCT_DetectorElementCondAlg(name, **kwargs)) return acc + +def ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags, name = "ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg", **kwargs) : + ''' + Condition alg to precompute the strip detector element status. + This algorithm does not consider the byte stream errors which are event data. + ''' + acc = ComponentAccumulator() + if 'ConditionsSummaryTool' not in kwargs : + from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripConditionsSummaryToolCfg + kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( ITkStripConditionsSummaryToolCfg(flags))) + kwargs.setdefault( "WriteKey", "ITkStripDetectorElementStatusNoByteStream") + acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) ) + return acc + +def ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg",**kwargs) : + ''' + Algorithm which adds status from the strip bytestream to the strip status conditions data + ''' + acc = ComponentAccumulator() + if 'ConditionsSummaryTool' not in kwargs : + from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg + # @TODO ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg should be moved to + # ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg, but that would create + # circular dependencies.. + acc.merge(ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags)) + kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( + ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags, + SCTDetElStatusCondDataBaseKey = "ITkStripDetectorElementStatusNoByteStream", + SCTDetElStatusEventDataBaseKey = "" + ))) + kwargs.setdefault("WriteKey", "ITkStripDetectorElementStatus") + + # not a conditions algorithm since it combines conditions data and data from the bytestream + acc.addEventAlgo( CompFactory.InDet.SiDetectorElementStatusAlg(name, **kwargs) ) + return acc diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/ITkStripConditionsToolsConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/ITkStripConditionsToolsConfig.py index ae9bf0bba66..9a377403fb7 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/ITkStripConditionsToolsConfig.py +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/ITkStripConditionsToolsConfig.py @@ -1,6 +1,7 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.Enums import Format from AtlasGeoModel.GeoModelConfig import GeoModelCfg from IOVDbSvc.IOVDbSvcConfig import addFolders, addFoldersSplitOnline from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg @@ -26,6 +27,17 @@ def ITkStripConditionsSummaryToolCfg(flags, name="ITkStripConditionsSummaryTool" return acc +def ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags, name="ITkStripDetectorElementStatusAddByteStreamErrorsTool", **kwargs): + acc = ComponentAccumulator() + if not flags.Input.isMC and flags.Input.Format is Format.BS : + if "ConditionsTools" not in kwargs : + kwargs.setdefault("ConditionsTools", [ acc.popToolsAndMerge(ITkStripByteStreamErrorsToolCfg(flags)) ]) + + kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection") + acc.setPrivateTools(CompFactory.SCT_ConditionsSummaryTool(name, **kwargs)) + return acc + + def ITkStripConfigurationConditionsToolCfg(flags, name="ITkStripConfigurationConditionsTool", **kwargs): # Load conditions configuration service and load folders and algorithm for it # Load folders that have to exist for both MC and Data diff --git a/InnerDetector/InDetConfig/python/InDetBoundaryCheckToolConfig.py b/InnerDetector/InDetConfig/python/InDetBoundaryCheckToolConfig.py index 18cb63e9ceb..153a31dd762 100644 --- a/InnerDetector/InDetConfig/python/InDetBoundaryCheckToolConfig.py +++ b/InnerDetector/InDetConfig/python/InDetBoundaryCheckToolConfig.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 # Configuration of InDetBoundaryCheckTool package from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -102,14 +102,16 @@ def CombinedMuonTrigIDBoundaryCheckToolCfg( def ITkBoundaryCheckToolCfg(flags, name='ITkBoundaryCheckTool', **kwargs): result = ComponentAccumulator() - if 'SctSummaryTool' not in kwargs: - if flags.Detector.EnableITkStrip: - from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ( - ITkStripConditionsSummaryToolCfg) - kwargs.setdefault("SctSummaryTool", result.popToolsAndMerge( - ITkStripConditionsSummaryToolCfg(flags))) - else: - kwargs.setdefault("SctSummaryTool", None) + kwargs.setdefault("SctSummaryTool", None) # SCTDetElStatus is used instead + if "SCTDetElStatus" not in kwargs : + if flags.Detector.EnableITkStrip : + if not flags.Trigger.doHLT : + from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ( + ITkStripDetectorElementStatusAlgCfg) + result.merge(ITkStripDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("SCTDetElStatus", "ITkStripDetectorElementStatus") + else : + kwargs.setdefault("SCTDetElStatus", "") if 'PixelLayerTool' not in kwargs: from InDetConfig.InDetTestPixelLayerConfig import ( diff --git a/InnerDetector/InDetConfig/python/InDetPrepRawDataFormationConfig.py b/InnerDetector/InDetConfig/python/InDetPrepRawDataFormationConfig.py index 1521b5a4b4e..b41341a323b 100644 --- a/InnerDetector/InDetConfig/python/InDetPrepRawDataFormationConfig.py +++ b/InnerDetector/InDetConfig/python/InDetPrepRawDataFormationConfig.py @@ -219,10 +219,13 @@ def ITkStripClusterizationCfg(flags, name="ITkStripClusterization", **kwargs): prefix = clusterizationInputPrefix(flags) - if "conditionsTool" not in kwargs: - from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripConditionsSummaryToolCfg - kwargs.setdefault("conditionsTool", acc.popToolsAndMerge( - ITkStripConditionsSummaryToolCfg(flags))) + kwargs.setdefault("conditionsTool",None) # SCTDetElStatus is used instead + if "SCTDetElStatus" not in kwargs : + if not flags.Trigger.doHLT : + from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ( + ITkStripDetectorElementStatusAlgCfg) + acc.merge(ITkStripDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("SCTDetElStatus", "ITkStripDetectorElementStatus") if "clusteringTool" not in kwargs: from InDetConfig.SiClusterizationToolConfig import ITKStrip_SCT_ClusteringToolCfg diff --git a/InnerDetector/InDetConfig/python/InDetTestPixelLayerConfig.py b/InnerDetector/InDetConfig/python/InDetTestPixelLayerConfig.py index 5762b243f5f..a1bd9965f68 100644 --- a/InnerDetector/InDetConfig/python/InDetTestPixelLayerConfig.py +++ b/InnerDetector/InDetConfig/python/InDetTestPixelLayerConfig.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 # Configuration of InDetTestPixelLayer package from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -99,11 +99,16 @@ def CombinedMuonTrigPixelLayerToolCfg( def ITkTestPixelLayerToolCfg(flags, name="ITkTestPixelLayerTool", **kwargs): result = ComponentAccumulator() - if 'PixelSummaryTool' not in kwargs: - from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ( - ITkPixelConditionsSummaryCfg) - kwargs.setdefault("PixelSummaryTool", result.popToolsAndMerge( - ITkPixelConditionsSummaryCfg(flags))) + kwargs.setdefault("PixelSummaryTool", None) # PixelDetElStatus is used instead + + if "PixelDetElStatus" not in kwargs : + if not hasattr(flags,"Trigger.triggerMenuSetup") : + from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( + ITkPixelDetectorElementStatusAlgCfg) + result.merge(ITkPixelDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("PixelDetElStatus", "ITkPixelDetectorElementStatus") + + kwargs.setdefault("PixelReadoutManager","ITkPixelReadoutManager") if 'Extrapolator' not in kwargs: from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg diff --git a/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py b/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py index bf4600e3963..a73f30d28b0 100644 --- a/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py +++ b/InnerDetector/InDetConfig/python/SiClusterizationToolConfig.py @@ -106,11 +106,15 @@ def ITkPixelRDOToolCfg(flags, name="ITkPixelRDOTool", **kwargs): ITkPixelReadoutGeometryCfg) acc = ITkPixelReadoutGeometryCfg(flags) - if "PixelConditionsSummaryTool" not in kwargs: - from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ( - ITkPixelConditionsSummaryCfg) - kwargs.setdefault("PixelConditionsSummaryTool", acc.popToolsAndMerge( - ITkPixelConditionsSummaryCfg(flags))) + kwargs.setdefault("PixelConditionsSummaryTool", None) # PixelDetElStatus is used instead + if "PixelDetElStatus" not in kwargs : + if not flags.Trigger.doHLT : + from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( + ITkPixelDetectorElementStatusAlgCfg) + acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("PixelDetElStatus", "ITkPixelDetectorElementStatus") + + kwargs.setdefault("PixelReadoutManager","ITkPixelReadoutManager") kwargs.setdefault("PixelDetEleCollKey", "ITkPixelDetectorElementCollection") kwargs.setdefault("CheckGanged", False) @@ -428,11 +432,13 @@ def ITKStrip_SCT_ClusteringToolCfg( kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection") kwargs.setdefault("useRowInformation", True) # ITk-specific clustering - if "conditionsTool" not in kwargs: - from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ( - ITkStripConditionsSummaryToolCfg) - kwargs.setdefault("conditionsTool", acc.popToolsAndMerge( - ITkStripConditionsSummaryToolCfg(flags))) + kwargs.setdefault("conditionsTool",None) # SCTDetElStatus is used instead + if "SCTDetElStatus" not in kwargs : + if not flags.Trigger.doHLT : + from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ( + ITkStripDetectorElementStatusAlgCfg) + acc.merge(ITkStripDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("SCTDetElStatus","ITkStripDetectorElementStatus") if "LorentzAngleTool" not in kwargs: from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ( diff --git a/InnerDetector/InDetConfig/python/SiCombinatorialTrackFinderToolConfig.py b/InnerDetector/InDetConfig/python/SiCombinatorialTrackFinderToolConfig.py index 93e8aa62cd1..b9c6babf82f 100644 --- a/InnerDetector/InDetConfig/python/SiCombinatorialTrackFinderToolConfig.py +++ b/InnerDetector/InDetConfig/python/SiCombinatorialTrackFinderToolConfig.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 # Configuration of SiCombinatorialTrackFinderTool_xk package from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator @@ -251,21 +251,23 @@ def ITkSiCombinatorialTrackFinder_xkCfg( kwargs.setdefault("BoundaryCheckTool", acc.popToolsAndMerge( ITkBoundaryCheckToolCfg(flags))) + kwargs.setdefault("PixelSummaryTool", None) # SCTDetElStatus is used instead if flags.Detector.EnableITkPixel: - from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ( - ITkPixelConditionsSummaryCfg) - kwargs.setdefault("PixelSummaryTool", acc.popToolsAndMerge( - ITkPixelConditionsSummaryCfg(flags))) - else: - kwargs.setdefault("PixelSummaryTool", None) + if "PixelDetElStatus" not in kwargs: + if not flags.Trigger.doHLT : + from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( + ITkPixelDetectorElementStatusAlgCfg) + acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("PixelDetElStatus", "ITkPixelDetectorElementStatus") + kwargs.setdefault("SctSummaryTool", None) # SCTDetElStatus is used instead if flags.Detector.EnableITkStrip: - from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ( - ITkStripConditionsSummaryToolCfg) - kwargs.setdefault("SctSummaryTool", acc.popToolsAndMerge( - ITkStripConditionsSummaryToolCfg(flags))) - else: - kwargs.setdefault("SctSummaryTool", None) + if "SCTDetElStatus" not in kwargs : + if not flags.Trigger.doHLT : + from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ( + ITkStripDetectorElementStatusAlgCfg) + acc.merge(ITkStripDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("SCTDetElStatus","ITkStripDetectorElementStatus") # Protection against FPEs kwargs.setdefault("MinFinalPtCut", diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py index 575d95fec84..a00200b6c17 100644 --- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py @@ -185,6 +185,19 @@ def InDetPreProcessingCfg(flags): return result +def SiDetectorElementStatusCfg(flags, suffix="") : + result = ComponentAccumulator() + if flags.Detector.GeometryITk: + if flags.Detector.EnableITkPixel: + from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( + ITkPixelDetectorElementStatusAlgCfg) + result.merge(ITkPixelDetectorElementStatusAlgCfg(flags,name=f"ITkPixelDetectorElementStatusAlg{suffix}")) + if flags.Detector.EnableITkStrip: + from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ( + ITkStripDetectorElementStatusAlgCfg) + result.merge(ITkStripDetectorElementStatusAlgCfg(flags,name=f"ITkStripDetectorElementStatusAlg{suffix}")) + return result + # Returns CA + ClusterSplitProbContainer def SiSubDetTrackRecoCfg(flags, detector="", diff --git a/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py b/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py index efaa357c09c..350144f65ad 100644 --- a/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py +++ b/Tracking/Acts/ActsConfig/python/ActsClusterizationConfig.py @@ -89,9 +89,12 @@ def ActsStripClusteringToolCfg(flags, from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))) - if 'conditionsTool' not in kwargs: - from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripConditionsSummaryToolCfg - kwargs.setdefault("conditionsTool", acc.popToolsAndMerge(ITkStripConditionsSummaryToolCfg(flags))) + kwargs.setdefault("conditionsTool",None) + if "StripDetElStatus" not in kwargs : + from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ( + ITkStripDetectorElementStatusAlgCfg) + acc.merge(ITkStripDetectorElementStatusAlgCfg(flags)) + kwargs.setdefault("StripDetElStatus", "ITkStripDetectorElementStatus") # Disable noisy modules suppression kwargs.setdefault("maxFiredStrips", 0) diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ITkTrigSequence.py b/Trigger/TrigTools/TrigInDetConfig/python/ITkTrigSequence.py index b6255e74614..2e76cadb4e7 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/ITkTrigSequence.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/ITkTrigSequence.py @@ -66,21 +66,27 @@ class ITkTrigSequence(InnerTrackerTrigSequence): from InDetConfig.InDetPrepRawDataFormationConfig import ITkTrigPixelClusterizationCfg, ITkTrigStripClusterizationCfg acc.merge(ITkTrigPixelClusterizationCfg(self.flags, roisKey=self.rois, signature=signature)) acc.merge(ITkTrigStripClusterizationCfg(self.flags, roisKey=self.rois, signature=signature)) - + from InDetConfig.TrackRecoConfig import SiDetectorElementStatusCfg + acc.merge(SiDetectorElementStatusCfg(self.flags,f"_{signature}")) return acc def viewDataVerifierAfterPattern(self, viewVerifier='IDViewDataVerifierForAmbi') -> ComponentAccumulator: acc = ComponentAccumulator() + dataObjects = [ + ( 'InDet::PixelGangedClusterAmbiguities' , 'ITkPixelClusterAmbiguitiesMap'), + ( 'InDetSimDataCollection' , 'ITkPixelSDO_Map') + ] + from TrigInDetConfig.TrigInDetConfig import InDetExtraDataObjectsFromDataPrep + InDetExtraDataObjectsFromDataPrep(self.flags,dataObjects) + ViewDataVerifier = \ CompFactory.AthViews.ViewDataVerifier( name = viewVerifier + "_" + self.signature, - DataObjects = { - ( 'InDet::PixelGangedClusterAmbiguities' , 'ITkPixelClusterAmbiguitiesMap'), - ( 'InDetSimDataCollection' , 'ITkPixelSDO_Map'), - } + DataObjects = dataObjects ) + from TrigInDetConfig.TrigInDetConfig import InDetExtraDataObjectsFromDataPrep acc.addEventAlgo(ViewDataVerifier) return acc @@ -118,6 +124,7 @@ class ITkTrigSequence(InnerTrackerTrigSequence): if self.inView: acc.merge(self.viewDataVerifierAfterPattern()) + from TrkConfig.TrkAmbiguitySolverConfig import ITkTrkAmbiguityScoreCfg acc.merge( ITkTrkAmbiguityScoreCfg( diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py index a60240ee84a..860189de193 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py @@ -7,6 +7,13 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaCommon.Logging import logging +def InDetExtraDataObjectsFromDataPrep(flags, dataObjects) : + if flags.Detector.GeometryITk: + if flags.Detector.EnableITkPixel: + dataObjects.append( ('InDet::SiDetectorElementStatus' , 'StoreGateSvc+ITkPixelDetectorElementStatus' )) + if flags.Detector.EnableITkStrip: + dataObjects.append( ('InDet::SiDetectorElementStatus' , 'StoreGateSvc+ITkStripDetectorElementStatus' )) + def InDetIDCCacheCreatorCfg(flags): #Create IdentifiableCaches diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Electron/PrecisionTracks_GSFRefittedSequence.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Electron/PrecisionTracks_GSFRefittedSequence.py index 7977deab380..98f1c505b4d 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Electron/PrecisionTracks_GSFRefittedSequence.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Electron/PrecisionTracks_GSFRefittedSequence.py @@ -47,12 +47,16 @@ def precisionTracks_GSFRefitted(flags, RoIs, ion=False, variant=''): dataObjects.append(( 'InDet::TRT_DriftCircleContainerCache' , f'StoreGateSvc+{flags.Trigger.InDetTracking.TRT_DriftCircleCacheKey}' )) + from TrigInDetConfig.TrigInDetConfig import InDetExtraDataObjectsFromDataPrep + InDetExtraDataObjectsFromDataPrep(flags,dataObjects) + precisionGsfVDV.DataObjects = dataObjects acc.addEventAlgo(precisionGsfVDV) from TriggerMenuMT.HLT.Electron.TrigEMBremCollectionBuilder import TrigEMBremCollectionBuilderCfg + ## TrigEMBremCollectionBuilder ## acc.merge(TrigEMBremCollectionBuilderCfg(flags, -- GitLab