ATLAS Offline Software
Loading...
Searching...
No Matches
ActsPostIncludes.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4
5def PersistifyActsEDMCfg(flags) -> ComponentAccumulator:
6 acc = ComponentAccumulator()
7
8 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
9 from ActsConfig.ActsPersistificationConfig import PersistifyClusters
10 acc.merge(PersistifyClusters(flags,
11 pixelClusterCollections=['ITkPixelClusters'],
12 stripClusterCollections=['ITkStripClusters'],
13 hgtdClusterCollections=None if not flags.Reco.EnableHGTDExtension else ['HGTD_Clusters']))
14
15 if flags.Acts.EDM.PersistifySpacePoints:
16 from ActsConfig.ActsPersistificationConfig import PersistifySpacePoints
17 acc.merge(PersistifySpacePoints(flags,
18 pixelSpacePointCollections=['ITkPixelSpacePoints'],
19 stripSpacePointCollections=['ITkStripSpacePoints', 'ITkStripOverlapSpacePoints']))
20
21 if flags.Acts.EDM.PersistifyTracks:
22 trackPrefixes = ['Acts', 'ActsResolved',
23 'LargeD0', 'LargeD0Resolved',
24 'ActsConversion', 'ActsConversionResolved',
25 'ActsHeavyIon', 'ActsHeavyIonResolved']
26 from ActsConfig.ActsPersistificationConfig import PersistifyTracks
27 acc.merge(PersistifyTracks(flags,
28 extensions=trackPrefixes))
29
30 from ActsConfig.ActsPersistificationConfig import PersistifyTrackParticles
31 acc.merge(PersistifyTrackParticles(flags,
32 trackParticleCollections=['InDetActsTrackParticles']))
33 return acc
34
35def ACTSClusterPostInclude(flags) -> ComponentAccumulator:
36 # Schedule ACTS Data Preparation and Measurement persistification
37 # This is used for technical efficiencies studies of tracking pipelines
38 if flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements:
39 raise ValueError("The ACTSClusterPostInclude is to be used for technical efficiency computation, however the " \
40 f"config flag 'Tracking.PRDInfo.KeepOnlyOnTrackMeasurements' is set to {flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements}, " \
41 "which is incompatible with this purpose")
42
43 acc = ComponentAccumulator()
44
45 # Schedule Full Scan RoI
46 from ActsConfig.ActsRegionsOfInterestConfig import ActsMainRegionsOfInterestCreatorAlgCfg
47 acc.merge(ActsMainRegionsOfInterestCreatorAlgCfg(flags,
48 name = "ActsOfflineRegionsOfInterestCreatorAlg",
49 RoIs = "ActsOfflineRegionOfInterest"))
50
51 # Cluster formation
52 # This includes Pixel and Strip
53 clusteringKwargs = dict()
54 clusteringKwargs["PixelClusterizationAlg.name"] = "ActsOfflinePixelClusterizationAlg"
55 clusteringKwargs["PixelClusterizationAlg.ClustersKey"] = "ITkOfflinePixelClusters"
56 clusteringKwargs["StripClusterizationAlg.name"] = "ActsOfflineStripClusterizationAlg"
57 clusteringKwargs["StripClusterizationAlg.ClustersKey"] = "ITkOfflineStripClusters"
58 from ActsConfig.ActsClusterizationConfig import ActsMainClusterizationCfg
59 acc.merge(ActsMainClusterizationCfg(flags,
60 RoIs = "ActsOfflineRegionOfInterest",
61 processHGTD = False,
62 **clusteringKwargs))
63
64 # Attach truth to clusters
65 if flags.Tracking.doTruth:
66 truthAssociationKwargs = dict()
67 truthAssociationKwargs["PixelClusterToTruthAssociationAlg.name"] = "ActsOfflinePixelClusterToTruthAssociationAlg"
68 truthAssociationKwargs["PixelClusterToTruthAssociationAlg.Measurements"] = "ITkOfflinePixelClusters"
69 truthAssociationKwargs["PixelClusterToTruthAssociationAlg.AssociationMapOut"] = "ITkOfflinePixelClustersToTruthParticles"
70 truthAssociationKwargs["StripClusterToTruthAssociationAlg.name"] = "ActsOfflineStripClusterToTruthAssociationAlg"
71 truthAssociationKwargs["StripClusterToTruthAssociationAlg.Measurements"] = "ITkOfflineStripClusters"
72 truthAssociationKwargs["StripClusterToTruthAssociationAlg.AssociationMapOut"] = "ITkOfflineStripClustersToTruthParticles"
73
74 from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
75 acc.merge(ActsTruthAssociationAlgCfg(flags,
76 **truthAssociationKwargs))
77 acc.merge(ActsTruthParticleHitCountAlgCfg(flags,
78 name = "ActsOfflineTruthParticleHitCountAlg",
79 PixelClustersToTruthAssociationMap = "ITkOfflinePixelClustersToTruthParticles",
80 StripClustersToTruthAssociationMap = "ITkOfflineStripClustersToTruthParticles",
81 TruthParticleHitCountsOut = "OfflineTruthParticleHitCounts"))
82
83 from InDetConfig.InDetPrepRawDataToxAODConfig import TruthParticleIndexDecoratorAlgCfg
84 acc.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
85
86 from ActsConfig.ActsObjectDecorationConfig import ActsPixelClusterTruthDecoratorAlgCfg,ActsStripClusterTruthDecoratorAlgCfg
87 acc.merge(ActsPixelClusterTruthDecoratorAlgCfg(flags,
88 name = "ActsOfflinePixelClusterTruthDecoratorAlgCfg",
89 ClusterContainer = "ITkOfflinePixelClusters",
90 AssociationMapOut = "ITkOfflinePixelClustersToTruthParticles",
91 MeasurementContainer = "ITkPixelMeasurements_offl"))
92 acc.merge(ActsStripClusterTruthDecoratorAlgCfg(flags,
93 name = "ActsOfflineStripClusterTruthDecoratorAlgCfg",
94 ClusterContainer = "ITkOfflineStripClusters",
95 AssociationMapOut = "ITkOfflineStripClustersToTruthParticles",
96 MeasurementContainer = "ITkStripMeasurements_offl"))
97
98
99 toAOD = [
100 'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
101 'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
102 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
103 'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.'
104 ]
105
106 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
107 acc.merge( addToAOD( flags, toAOD ) )
108
109 return acc
ComponentAccumulator ACTSClusterPostInclude(flags)
ComponentAccumulator PersistifyActsEDMCfg(flags)