Skip to content
Snippets Groups Projects
Commit fef21c42 authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'RewriteSeedingJobOption' into 'main'

Rewrite Acts seeding cfg function

See merge request !71008
......@@ -3,6 +3,7 @@
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
from ActsConfig.ActsConfigFlags import SeedingStrategy
from ActsConfig.ActsUtilities import extractChildKwargs
from ActsInterop import UnitConstants
# ACTS tools
......@@ -301,64 +302,94 @@ def ActsStripSeedingAlgCfg(flags,
return acc
def ActsMainSeedingCfg(flags) -> ComponentAccumulator:
def ActsMainSeedingCfg(flags,
**kwargs) -> ComponentAccumulator:
acc = ComponentAccumulator()
if flags.Detector.EnableITkPixel:
acc.merge(ActsPixelSeedingAlgCfg(flags))
if flags.Detector.EnableITkStrip and not flags.Tracking.doITkFastTracking:
acc.merge(ActsStripSeedingAlgCfg(flags))
kwargs.setdefault('processPixels', flags.Detector.EnableITkPixel)
kwargs.setdefault('processStrips', flags.Detector.EnableITkStrip)
if kwargs['processPixels']:
acc.merge(ActsPixelSeedingAlgCfg(flags, **extractChildKwargs(prefix='PixelSeedingAlg.', **kwargs)))
if kwargs['processStrips']:
acc.merge(ActsStripSeedingAlgCfg(flags, **extractChildKwargs(prefix='StripSeedingAlg.', **kwargs)))
# Analysis extensions
if flags.Acts.doAnalysis:
if flags.Detector.EnableITkPixel:
if kwargs['processPixels']:
from ActsConfig.ActsAnalysisConfig import ActsPixelSeedAnalysisAlgCfg, ActsPixelEstimatedTrackParamsAnalysisAlgCfg
acc.merge(ActsPixelSeedAnalysisAlgCfg(flags))
acc.merge(ActsPixelEstimatedTrackParamsAnalysisAlgCfg(flags))
acc.merge(ActsPixelSeedAnalysisAlgCfg(flags, **extractChildKwargs(prefix='PixelSeedAnalysisAlg.', **kwargs)))
acc.merge(ActsPixelEstimatedTrackParamsAnalysisAlgCfg(flags, **extractChildKwargs(prefix='PixelEstimatedTrackParamsAnalysisAlg.', **kwargs)))
if flags.Detector.EnableITkStrip and not flags.Tracking.doITkFastTracking:
if kwargs['processStrips']:
from ActsConfig.ActsAnalysisConfig import ActsStripSeedAnalysisAlgCfg, ActsStripEstimatedTrackParamsAnalysisAlgCfg
acc.merge(ActsStripSeedAnalysisAlgCfg(flags))
acc.merge(ActsStripEstimatedTrackParamsAnalysisAlgCfg(flags))
acc.merge(ActsStripSeedAnalysisAlgCfg(flags, **extractChildKwargs(prefix='StripSeedAnalysisAlg.', **kwargs)))
acc.merge(ActsStripEstimatedTrackParamsAnalysisAlgCfg(flags, **extractChildKwargs(prefix='StripEstimatedTrackParamsAnalysisAlg.', **kwargs)))
return acc
def ActsConversionSeedingCfg(flags) -> ComponentAccumulator:
def ActsSeedingCfg(flags) -> ComponentAccumulator:
acc = ComponentAccumulator()
if flags.Detector.EnableITkStrip:
acc.merge(ActsStripSeedingAlgCfg(flags,
name="ActsConversionStripSeedingAlg",
InputSpacePoints=["ITkConversionStripSpacePoints_Cached" if flags.Acts.useCache else "ITkConversionStripSpacePoints"],
OutputSeeds="ActsConversionStripSeeds",
OutputEstimatedTrackParameters="ActsConversionStripEstimatedTrackParams"))
# Analysis extensions
if flags.Acts.doAnalysis:
if flags.Detector.EnableITkStrip:
from ActsConfig.ActsAnalysisConfig import ActsStripSeedAnalysisAlgCfg, ActsStripEstimatedTrackParamsAnalysisAlgCfg
acc.merge(ActsStripSeedAnalysisAlgCfg(flags,
name="ActsConversionStripSeedAnalysisAlg",
extension="ActsConversion",
InputSeedCollection="ActsConversionStripSeeds"))
acc.merge(ActsStripEstimatedTrackParamsAnalysisAlgCfg(flags,
name="ActsConversionStripEstimatedTrackParamsAnalysisAlg",
extension="ActsConversion",
InputTrackParamsCollection="ActsConversionStripEstimatedTrackParams"))
return acc
processPixels = flags.Detector.EnableITkPixel
processStrips = flags.Detector.EnableITkStrip
def ActsSeedingCfg(flags) -> ComponentAccumulator:
acc = ComponentAccumulator()
# For conversion pass we do not process pixels
if flags.Tracking.ActiveConfig.extension == "ActsConversion":
processPixels = False
# For main pass disable strips if fast tracking configuration
elif flags.Tracking.doITkFastTracking:
processStrips = False
kwargs = dict()
kwargs.setdefault('processPixels', processPixels)
kwargs.setdefault('processStrips', processStrips)
if processPixels:
# Seeding algo
kwargs.setdefault('PixelSeedingAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSeedingAlg')
kwargs.setdefault('PixelSeedingAlg.useFastTracking', flags.Tracking.doITkFastTracking)
kwargs.setdefault('PixelSeedingAlg.OutputSeeds', f'{flags.Tracking.ActiveConfig.extension}PixelSeeds')
kwargs.setdefault('PixelSeedingAlg.OutputEstimatedTrackParameters', f'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams')
# Space Point naming is not yet fully connected to tracking passes - this will change
if flags.Tracking.ActiveConfig.extension == "ActsConversion":
kwargs.setdefault('PixelSeedingAlg.InputSpacePoints', ['ITkConversionPixelSpacePoints_Cached'] if flags.Acts.useCache else ['ITkConversionPixelSpacePoints'])
else:
kwargs.setdefault('PixelSeedingAlg.InputSpacePoints', ['ITkPixelSpacePoints_Cached'] if flags.Acts.useCache else ['ITkPixelSpacePoints'])
# Acts Main pass
if flags.Tracking.ActiveConfig.extension == "Acts":
acc.merge(ActsMainSeedingCfg(flags))
# Acts Conversion pass
elif flags.Tracking.ActiveConfig.extension == "ActsConversion":
acc.merge(ActsConversionSeedingCfg(flags))
# Any other pass -> Validation mainly
else:
acc.merge(ActsMainSeedingCfg(flags))
# Analysis algo(s)
if flags.Acts.doAnalysis:
kwargs.setdefault('PixelSeedAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSeedAnalysisAlg')
kwargs.setdefault('PixelSeedAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
kwargs.setdefault('PixelSeedAnalysisAlg.InputSeedCollection', kwargs['PixelSeedingAlg.OutputSeeds'])
kwargs.setdefault('PixelEstimatedTrackParamsAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParamsAnalysisAlg')
kwargs.setdefault('PixelEstimatedTrackParamsAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
kwargs.setdefault('PixelEstimatedTrackParamsAnalysisAlg.InputTrackParamsCollection', kwargs['PixelSeedingAlg.OutputEstimatedTrackParameters'])
if processStrips:
# Seeding algo
kwargs.setdefault('StripSeedingAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSeedingAlg')
kwargs.setdefault('StripSeedingAlg.OutputSeeds', f'{flags.Tracking.ActiveConfig.extension}StripSeeds')
kwargs.setdefault('StripSeedingAlg.OutputEstimatedTrackParameters', f'{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParams')
# Conversion pass does not use overlap space points
# Space Point naming is not yet fully connected to tracking passes - this will change
if flags.Tracking.ActiveConfig.extension == 'ActsConversion':
kwargs.setdefault('StripSeedingAlg.InputSpacePoints', ['ITkConversionStripSpacePoints_Cached'] if flags.Acts.useCache else ['ITkConversionStripSpacePoints'])
else:
kwargs.setdefault('StripSeedingAlg.InputSpacePoints', ['ITkStripSpacePoints_Cached',
'ITkStripOverlapSpacePoints_Cached'] if flags.Acts.useCache else ['ITkStripSpacePoints',
'ITkStripOverlapSpacePoints'])
# Analysis algo(s)
if flags.Acts.doAnalysis:
kwargs.setdefault('StripSeedAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSeedAnalysisAlg')
kwargs.setdefault('StripSeedAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
kwargs.setdefault('StripSeedAnalysisAlg.InputSeedCollection', kwargs['StripSeedingAlg.OutputSeeds'])
kwargs.setdefault('StripEstimatedTrackParamsAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParamsAnalysisAlg')
kwargs.setdefault('StripEstimatedTrackParamsAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
kwargs.setdefault('StripEstimatedTrackParamsAnalysisAlg.InputTrackParamsCollection', kwargs['StripSeedingAlg.OutputEstimatedTrackParameters'])
acc.merge(ActsMainSeedingCfg(flags, **kwargs))
return acc
......@@ -165,8 +165,8 @@ def ActsTrackFindingCfg(flags,
kwargs.setdefault('UncalibratedMeasurementContainerKeys', isdet(flags, pixel=["ITkPixelClusters_Cached"], strip=["ITkConversionStripClusters_Cached"]) if flags.Acts.useCache else isdet(flags, pixel=["ITkPixelClusters"], strip=["ITkConversionStripClusters"]))
else:
kwargs.setdefault('SeedLabels', isdet(flags, pixel=["PPP"], strip=["SSS"]) if not flags.Tracking.doITkFastTracking else isdet(flags, pixel=["PPP"]))
kwargs.setdefault('EstimatedTrackParametersKeys', isdet(flags, pixel=["ActsPixelEstimatedTrackParams"], strip=["ActsStripEstimatedTrackParams"]) if not flags.Tracking.doITkFastTracking else isdet(flags, pixel=["ActsPixelEstimatedTrackParams"]))
kwargs.setdefault('SeedContainerKeys', isdet(flags, pixel=["ActsPixelSeeds"], strip=["ActsStripSeeds"]) if not flags.Tracking.doITkFastTracking else isdet(flags, pixel=["ActsPixelSeeds"]))
kwargs.setdefault('EstimatedTrackParametersKeys', isdet(flags, pixel=[f"{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams"], strip=[f"{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParams"]) if not flags.Tracking.doITkFastTracking else isdet(flags, pixel=[f"{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams"]))
kwargs.setdefault('SeedContainerKeys', isdet(flags, pixel=[f"{flags.Tracking.ActiveConfig.extension}PixelSeeds"], strip=[f"{flags.Tracking.ActiveConfig.extension}StripSeeds"]) if not flags.Tracking.doITkFastTracking else isdet(flags, pixel=[f"{flags.Tracking.ActiveConfig.extension}PixelSeeds"]))
kwargs.setdefault('UncalibratedMeasurementContainerKeys', isdet(flags, pixel=["ITkPixelClusters_Cached"], strip=["ITkStripClusters_Cached"]) if flags.Acts.useCache else isdet(flags, pixel=["ITkPixelClusters"], strip=["ITkStripClusters"]))
acc.merge(ActsMainTrackFindingAlgCfg(flags,
......
......@@ -3,14 +3,7 @@
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
from ActsInterop import UnitConstants
def extractChildKwargs(kwargs: dict,
prefix: str) -> dict:
args={}
for k,v in kwargs.items() :
if len(k)>len(prefix) and k[0:len(prefix)]==prefix :
args[k[len(prefix)]:]=v
return args
from ActsConfig.ActsUtilities import extractChildKwargs
def MapToInDetSimDataWrapCfg(flags,
collection_name: str) -> ComponentAccumulator:
......@@ -83,9 +76,9 @@ def ITkTruthAssociationCfg(flags,
**kwargs) -> ComponentAccumulator:
acc = ComponentAccumulator()
if flags.Detector.EnableITkPixel :
acc.merge(PixelClusterToTruthAssociationCfg(flags, **extractChildKwargs(kwargs,"PixelClusterToTruthAssociation.") ))
acc.merge(PixelClusterToTruthAssociationCfg(flags, **extractChildKwargs(prefix="PixelClusterToTruthAssociation.", **kwargs) ))
if flags.Detector.EnableITkStrip :
acc.merge(StripClusterToTruthAssociationCfg(flags, **extractChildKwargs(kwargs,"StripClusterToTruthAssociation.") ))
acc.merge(StripClusterToTruthAssociationCfg(flags, **extractChildKwargs(prefix="StripClusterToTruthAssociation.", **kwargs) ))
return acc
......
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
def extractChildKwargs(*,
prefix: str,
**kwargs: dict) -> dict:
""" Extract subset of kwargs with common prefix """
assert isinstance(kwargs, dict)
assert isinstance(prefix, str)
args = dict()
for (k,v) in kwargs.items():
if len(k) <= len(prefix):
continue
if k[:len(prefix)] != prefix:
continue
args[ k[len(prefix):] ] = v
return args
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