Skip to content
Snippets Groups Projects
Commit 3412541d authored by Thomas Strebler's avatar Thomas Strebler Committed by Julien Maurer
Browse files

CA-tracking configuration SiSPSeededTrackFinder + various updates

Update CA configuration for fast tracking to run in master

Update CA configuration for fast tracking to run in master
parent 895fa13e
4 merge requests!69091Fix correlated smearing bug in JER in JetUncertainties in 22.0,!58791DataQualityConfigurations: Modify L1Calo config for web display,!572792022-10-05: daily merge of 22.0 into master,!57192CA-tracking configuration SiSPSeededTrackFinder + various updates
......@@ -6,9 +6,14 @@ from AthenaConfiguration.Enums import Format
from InDetConfig.TrackRecoConfig import FTAG_AUXDATA
_flags_set = [] # For caching
def CombinedTrackingPassFlagSets(flags):
global _flags_set
if _flags_set:
return _flags_set
flags_set = []
# Primary Pass
......@@ -30,10 +35,11 @@ def CombinedTrackingPassFlagSets(flags):
flagsConv = flags.cloneAndReplace("ITk.Tracking.ActivePass", "ITk.Tracking.ConversionFindingPass")
flags_set += [flagsConv]
_flags_set = flags_set # Put into cache
return flags_set
def ITkClusterSplitProbabilityContainerName(flags):
flags_set = CombinedTrackingPassFlagSets(flags)
extension = flags_set[-1].ITk.Tracking.ActivePass.extension
ClusterSplitProbContainer = "ITkAmbiguityProcessorSplitProb" + extension
......@@ -45,7 +51,7 @@ def ITkTrackRecoCfg(flags):
if flags.Input.Format is Format.BS:
# TODO: ITk BS providers
raise RuntimeError("BS imputs not supported")
raise RuntimeError("ByteStream inputs not supported")
from InDetConfig.SiliconPreProcessing import ITkRecPreProcessingSiliconCfg
result.merge(ITkRecPreProcessingSiliconCfg(flags))
......@@ -91,7 +97,7 @@ def ITkTrackRecoCfg(flags):
from TrkConfig.TrkTrackCollectionMergerConfig import ITkTrackCollectionMergerAlgCfg
result.merge(ITkTrackCollectionMergerAlgCfg(flags,
InputCombinedTracks = InputCombinedITkTracks,
CombinedITkClusterSplitProbContainer = ITkClusterSplitProbabilityContainerName(flags)))
CombinedITkClusterSplitProbContainer = ITkClusterSplitProbabilityContainerName(flags) if not flags.ITk.Tracking.doFastTracking else ""))
if flags.ITk.Tracking.doTruth:
result.merge(ITkTrackTruthCfg(flags))
......
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", **kwargs) :
acc = ComponentAccumulator()
from InDetConfig.SiTrackMakerConfig import ITkSiTrackMaker_xkCfg
ITkSiTrackMaker = acc.popToolsAndMerge(ITkSiTrackMaker_xkCfg(flags))
from TrkConfig.TrkExRungeKuttaPropagatorConfig import ITkPropagatorCfg
ITkPropagator = acc.popToolsAndMerge(ITkPropagatorCfg(flags))
acc.addPublicTool(ITkPropagator)
from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolNoHoleSearchCfg
ITkTrackSummaryToolNoHoleSearch = acc.getPrimaryAndMerge(ITkTrackSummaryToolNoHoleSearchCfg(flags))
if "SeedsTool" not in kwargs:
ITkSiSpacePointsSeedMaker = None
if flags.ITk.Tracking.ActivePass.extension != "ConversionFinding" and flags.Acts.TrackFinding.useSiSpacePointSeedMaker:
from ActsTrkSeedingTool.ActsTrkSeedingToolConfig import ActsTrkSiSpacePointsSeedMakerCfg
ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsTrkSiSpacePointsSeedMakerCfg(flags))
else:
from InDetConfig.SiSpacePointsSeedToolConfig import ITkSiSpacePointsSeedMakerCfg
ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ITkSiSpacePointsSeedMakerCfg(flags))
kwargs.setdefault("SeedsTool", ITkSiSpacePointsSeedMaker)
#
# --- Setup Track finder using space points seeds
#
kwargs.setdefault("TrackTool", ITkSiTrackMaker)
kwargs.setdefault("PropagatorTool", ITkPropagator)
if flags.ITk.Tracking.ActivePass.usePrdAssociationTool:
# not all classes have that property !!!
kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.ActivePass.extension)
kwargs.setdefault("TrackSummaryTool", ITkTrackSummaryToolNoHoleSearch)
kwargs.setdefault("useZvertexTool", False)
kwargs.setdefault("useZBoundFinding", flags.ITk.Tracking.ActivePass.doZBoundary)
kwargs.setdefault("ITKGeometry", True)
kwargs.setdefault("SpacePointsSCTName", "ITkStripSpacePoints")
kwargs.setdefault("SpacePointsPixelName", "ITkPixelSpacePoints")
if flags.ITk.Tracking.doFastTracking :
kwargs.setdefault("doFastTracking", True)
if 'InDetEtaDependentCutsSvc' not in kwargs :
from InDet.InDetEtaDependentCutsConfig import ITkEtaDependentCutsSvcCfg
acc.merge(ITkEtaDependentCutsSvcCfg(flags))
kwargs.setdefault("InDetEtaDependentCutsSvc", acc.getService("ITkEtaDependentCutsSvc"+flags.ITk.Tracking.ActivePass.extension))
ITkSiSPSeededTrackFinder = CompFactory.InDet.SiSPSeededTrackFinder(name = name+flags.ITk.Tracking.ActivePass.extension, **kwargs)
acc.addEventAlgo(ITkSiSPSeededTrackFinder)
return acc
def ITkSiSPSeededTrackFinderROIConvCfg(flags, name="ITkSiSpTrackFinderROIConv", **kwargs) :
from InDetConfig.InDetCaloClusterROISelectorConfig import ITkCaloClusterROIPhiRZContainerMakerCfg
acc = ITkCaloClusterROIPhiRZContainerMakerCfg(flags)
from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
RegSelTool_ITkStrip = acc.popToolsAndMerge(regSelTool_ITkStrip_Cfg(flags))
kwargs.setdefault("RegSelTool_Strip", RegSelTool_ITkStrip)
kwargs.setdefault("useITkConvSeeded", True)
kwargs.setdefault("EMROIPhiRZContainer", "ITkCaloClusterROIPhiRZ15GeVUnordered")
acc.merge(ITkSiSPSeededTrackFinderCfg(flags, name, **kwargs))
return acc
def ITkCopyAlgForAmbiCfg(flags, name="ITkCopyAlgForAmbi", InputTrackCollection = None, OutputTrackCollection = None, **kwargs) :
acc = ComponentAccumulator()
kwargs.setdefault("CollectionName", InputTrackCollection)
kwargs.setdefault("AliasName", OutputTrackCollection)
ITkCopyAlgForAmbi = CompFactory.Trk.TrkCollectionAliasAlg (name = name+flags.ITk.Tracking.ActivePass.extension, **kwargs)
acc.addEventAlgo(ITkCopyAlgForAmbi)
return acc
# ------------------------------------------------------------
#
......@@ -101,27 +27,29 @@ def ITkTrackingSiPatternCfg(flags,
#
# ------------------------------------------------------------
from InDetConfig.SiSPSeededTrackFinderConfig import ITkSiSPSeededTrackFinderCfg
SiSPSeededTrackFinderCfg = ITkSiSPSeededTrackFinderCfg
if flags.ITk.Tracking.ActivePass.extension == "ConversionFinding":
from InDetConfig.SiSPSeededTrackFinderConfig import ITkSiSPSeededTrackFinderROIConvCfg
SiSPSeededTrackFinderCfg = ITkSiSPSeededTrackFinderROIConvCfg
acc.merge(SiSPSeededTrackFinderCfg( flags,
TracksLocation = SiSPSeededTrackCollectionKey))
acc.merge(SiSPSeededTrackFinderCfg(flags,
TracksLocation = SiSPSeededTrackCollectionKey))
# ------------------------------------------------------------
#
# ---------- Ambiguity solving
#
# ------------------------------------------------------------
if flags.ITk.Tracking.doFastTracking:
acc.merge(ITkCopyAlgForAmbiCfg( flags,
InputTrackCollection = SiSPSeededTrackCollectionKey,
OutputTrackCollection = ResolvedTrackCollectionKey ))
from TrkConfig.TrkCollectionAliasAlgConfig import ITkCopyAlgForAmbiCfg
acc.merge(ITkCopyAlgForAmbiCfg(flags, "ITkCopyAlgForAmbi"+flags.ITk.Tracking.ActivePass.extension,
CollectionName = SiSPSeededTrackCollectionKey, # Input
AliasName = ResolvedTrackCollectionKey)) # Output
else:
from TrkConfig.TrkAmbiguitySolverConfig import ITkTrkAmbiguityScoreCfg, ITkTrkAmbiguitySolverCfg
acc.merge(ITkTrkAmbiguityScoreCfg( flags,
SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey,
ClusterSplitProbContainer = ClusterSplitProbContainer))
acc.merge(ITkTrkAmbiguityScoreCfg(flags,
SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey,
ClusterSplitProbContainer = ClusterSplitProbContainer))
acc.merge(ITkTrkAmbiguitySolverCfg(flags,
ResolvedTrackCollectionKey = ResolvedTrackCollectionKey))
......
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
# Configuration of SiSPSeededTrackFinder package
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", **kwargs) :
acc = ComponentAccumulator()
if "TrackTool" not in kwargs:
from InDetConfig.SiTrackMakerConfig import SiTrackMaker_xkCfg
kwargs.setdefault("TrackTool", acc.popToolsAndMerge(
SiTrackMaker_xkCfg(flags)))
if "PropagatorTool" not in kwargs:
from TrkConfig.TrkExRungeKuttaPropagatorConfig import InDetPropagatorCfg
InDetPropagator = acc.popToolsAndMerge(InDetPropagatorCfg(flags))
acc.addPublicTool(InDetPropagator)
kwargs.setdefault("PropagatorTool", InDetPropagator)
if "TrackSummaryTool" not in kwargs:
from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolNoHoleSearchCfg
kwargs.setdefault("TrackSummaryTool", acc.popToolsAndMerge(
InDetTrackSummaryToolNoHoleSearchCfg(flags)))
if "SeedsTool" not in kwargs:
from InDetConfig.SiSpacePointsSeedToolConfig import SiSpacePointsSeedMakerCfg
kwargs.setdefault("SeedsTool", acc.popToolsAndMerge(
SiSpacePointsSeedMakerCfg(flags)))
kwargs.setdefault("useMBTSTimeDiff", flags.Reco.EnableHI) # Heavy-ion config
if flags.InDet.Tracking.ActivePass.usePrdAssociationTool:
# not all classes have that property !!!
kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.ActivePass.extension)
if flags.InDet.Tracking.ActivePass.extension == "Forward":
kwargs.setdefault("useZvertexTool", flags.Reco.EnableHI) # For heavy-ion
kwargs.setdefault("useZBoundFinding", False)
else:
kwargs.setdefault("useZvertexTool", flags.Reco.EnableHI) # For heavy-ion
kwargs.setdefault("useZBoundFinding", flags.InDet.Tracking.ActivePass.doZBoundary)
#
# --- Z-coordinates primary vertices finder (only for collisions)
#
if kwargs["useZvertexTool"] and "ZvertexTool" not in kwargs:
from InDetConfig.SiZvertexToolConfig import SiZvertexMaker_xkCfg
kwargs.setdefault("ZvertexTool", acc.popToolsAndMerge(
SiZvertexMaker_xkCfg(flags)))
if flags.Reco.EnableHI:
kwargs.setdefault("FreeClustersCut",2) #Heavy Ion optimization from Igor
acc.addEventAlgo(CompFactory.InDet.SiSPSeededTrackFinder(name+flags.InDet.Tracking.ActivePass.extension, **kwargs))
return acc
def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", **kwargs) :
acc = ComponentAccumulator()
if "TrackTool" not in kwargs:
from InDetConfig.SiTrackMakerConfig import ITkSiTrackMaker_xkCfg
kwargs.setdefault("TrackTool", acc.popToolsAndMerge(
ITkSiTrackMaker_xkCfg(flags)))
if "PropagatorTool" not in kwargs:
from TrkConfig.TrkExRungeKuttaPropagatorConfig import ITkPropagatorCfg
ITkPropagator = acc.popToolsAndMerge(ITkPropagatorCfg(flags))
acc.addPublicTool(ITkPropagator)
kwargs.setdefault("PropagatorTool", ITkPropagator)
if "TrackSummaryTool" not in kwargs:
from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolNoHoleSearchCfg
kwargs.setdefault("TrackSummaryTool", acc.popToolsAndMerge(
ITkTrackSummaryToolNoHoleSearchCfg(flags)))
if "SeedsTool" not in kwargs:
ITkSiSpacePointsSeedMaker = None
if flags.ITk.Tracking.ActivePass.extension != "ConversionFinding" and flags.Acts.TrackFinding.useSiSpacePointSeedMaker:
from ActsTrkSeedingTool.ActsTrkSeedingToolConfig import ActsTrkSiSpacePointsSeedMakerCfg
ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsTrkSiSpacePointsSeedMakerCfg(flags))
else:
from InDetConfig.SiSpacePointsSeedToolConfig import ITkSiSpacePointsSeedMakerCfg
ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ITkSiSpacePointsSeedMakerCfg(flags))
kwargs.setdefault("SeedsTool", ITkSiSpacePointsSeedMaker)
if flags.ITk.Tracking.ActivePass.usePrdAssociationTool:
# not all classes have that property !!!
kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.ActivePass.extension)
kwargs.setdefault("useZvertexTool", False)
kwargs.setdefault("useZBoundFinding", flags.ITk.Tracking.ActivePass.doZBoundary)
kwargs.setdefault("ITKGeometry", True)
kwargs.setdefault("SpacePointsSCTName", "ITkStripSpacePoints")
kwargs.setdefault("SpacePointsPixelName", "ITkPixelSpacePoints")
if flags.ITk.Tracking.doFastTracking :
kwargs.setdefault("doFastTracking", True)
if 'InDetEtaDependentCutsSvc' not in kwargs :
from InDetConfig.InDetEtaDependentCutsConfig import ITkEtaDependentCutsSvcCfg
acc.merge(ITkEtaDependentCutsSvcCfg(flags))
kwargs.setdefault("InDetEtaDependentCutsSvc", acc.getService("ITkEtaDependentCutsSvc"+flags.ITk.Tracking.ActivePass.extension))
acc.addEventAlgo(CompFactory.InDet.SiSPSeededTrackFinder(name+flags.ITk.Tracking.ActivePass.extension, **kwargs))
return acc
def ITkSiSPSeededTrackFinderROIConvCfg(flags, name="ITkSiSpTrackFinderROIConv", **kwargs) :
from InDetConfig.InDetCaloClusterROISelectorConfig import ITkCaloClusterROIPhiRZContainerMakerCfg
acc = ITkCaloClusterROIPhiRZContainerMakerCfg(flags)
if "RegSelTool_Strip" not in kwargs:
from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
kwargs.setdefault("RegSelTool_Strip", acc.popToolsAndMerge(
regSelTool_ITkStrip_Cfg(flags)))
kwargs.setdefault("useITkConvSeeded", True)
kwargs.setdefault("EMROIPhiRZContainer", "ITkCaloClusterROIPhiRZ15GeVUnordered")
acc.merge(ITkSiSPSeededTrackFinderCfg(flags, name, **kwargs))
return acc
......@@ -4,8 +4,14 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
from AthenaConfiguration.Enums import BeamType, Format
_flags_set = [] # For caching
def CombinedTrackingPassFlagSets(flags):
global _flags_set
if _flags_set:
return _flags_set
flags_set = []
# Primary Pass
......@@ -70,6 +76,8 @@ def CombinedTrackingPassFlagSets(flags):
flagsBeamGas = flags.cloneAndReplace("InDet.Tracking.ActivePass", "InDet.Tracking.BeamGasPass")
flags_set += [flagsBeamGas]
_flags_set = flags_set # Put into cache
return flags_set
def ClusterSplitProbabilityContainerName(flags):
......
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", **kwargs) :
acc = ComponentAccumulator()
from TrkConfig.TrkExRungeKuttaPropagatorConfig import InDetPropagatorCfg
InDetPropagator = acc.popToolsAndMerge(InDetPropagatorCfg(flags))
acc.addPublicTool(InDetPropagator)
#
# --- Setup Track finder using space points seeds
#
from InDetConfig.SiTrackMakerConfig import SiTrackMaker_xkCfg
kwargs.setdefault("TrackTool", acc.popToolsAndMerge(SiTrackMaker_xkCfg(flags)))
kwargs.setdefault("PropagatorTool", InDetPropagator)
from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolNoHoleSearchCfg
kwargs.setdefault("TrackSummaryTool", acc.popToolsAndMerge(InDetTrackSummaryToolNoHoleSearchCfg(flags)))
if "SeedsTool" not in kwargs:
from InDetConfig.SiSpacePointsSeedToolConfig import SiSpacePointsSeedMakerCfg
kwargs.setdefault("SeedsTool", acc.popToolsAndMerge(
SiSpacePointsSeedMakerCfg(flags)))
kwargs.setdefault("useMBTSTimeDiff", flags.Reco.EnableHI) # Heavy-ion config
if flags.InDet.Tracking.ActivePass.usePrdAssociationTool:
# not all classes have that property !!!
kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.ActivePass.extension)
if flags.InDet.Tracking.ActivePass.extension == "Forward":
kwargs.setdefault("useZvertexTool", flags.Reco.EnableHI) # For heavy-ion
kwargs.setdefault("useZBoundFinding", False)
else:
kwargs.setdefault("useZvertexTool", flags.Reco.EnableHI) # For heavy-ion
kwargs.setdefault("useZBoundFinding", flags.InDet.Tracking.ActivePass.doZBoundary)
#
# --- Z-coordinates primary vertices finder (only for collisions)
#
if kwargs["useZvertexTool"] and "ZvertexTool" not in kwargs:
from InDetConfig.SiZvertexToolConfig import SiZvertexMaker_xkCfg
kwargs.setdefault("ZvertexTool", acc.popToolsAndMerge(
SiZvertexMaker_xkCfg(flags)))
if flags.Reco.EnableHI:
kwargs.setdefault("FreeClustersCut",2) #Heavy Ion optimization from Igor
InDetSiSPSeededTrackFinder = CompFactory.InDet.SiSPSeededTrackFinder(name = name+flags.InDet.Tracking.ActivePass.extension, **kwargs)
acc.addEventAlgo(InDetSiSPSeededTrackFinder)
return acc
# ------------------------------------------------------------
#
......@@ -77,8 +27,9 @@ def TrackingSiPatternCfg(flags,
#
# ------------------------------------------------------------
acc.merge(SiSPSeededTrackFinderCfg( flags,
TracksLocation = SiSPSeededTrackCollectionKey))
from InDetConfig.SiSPSeededTrackFinderConfig import SiSPSeededTrackFinderCfg
acc.merge(SiSPSeededTrackFinderCfg(flags,
TracksLocation = SiSPSeededTrackCollectionKey))
# ------------------------------------------------------------
#
......@@ -87,9 +38,9 @@ def TrackingSiPatternCfg(flags,
# ------------------------------------------------------------
from TrkConfig.TrkAmbiguitySolverConfig import TrkAmbiguityScoreCfg, TrkAmbiguitySolverCfg
acc.merge(TrkAmbiguityScoreCfg( flags,
SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey,
ClusterSplitProbContainer = ClusterSplitProbContainer))
acc.merge(TrkAmbiguityScoreCfg(flags,
SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey,
ClusterSplitProbContainer = ClusterSplitProbContainer))
acc.merge(TrkAmbiguitySolverCfg(flags,
ResolvedTrackCollectionKey = ResolvedTrackCollectionKey,
......
# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
# Configuration of TrkCollectionAliasAlg package
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
def CopyAlgForAmbiCfg(flags, name="CopyAlgForAmbi", **kwargs) :
acc = ComponentAccumulator()
acc.addEventAlgo(CompFactory.Trk.TrkCollectionAliasAlg(name, **kwargs))
return acc
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