32def ACTSClusterPostInclude(flags) -> ComponentAccumulator:
33
34
35 if flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements:
36 raise ValueError("The ACTSClusterPostInclude is to be used for technical efficiency computation, however the " \
37 f"config flag 'Tracking.PRDInfo.KeepOnlyOnTrackMeasurements' is set to {flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements}, " \
38 "which is incompatible with this purpose")
39
40 acc = ComponentAccumulator()
41
42
43 from ActsConfig.ActsRegionsOfInterestConfig import ActsMainRegionsOfInterestCreatorAlgCfg
44 acc.merge(ActsMainRegionsOfInterestCreatorAlgCfg(flags,
45 name = "ActsOfflineRegionsOfInterestCreatorAlg",
46 RoIs = "ActsOfflineRegionOfInterest"))
47
48
49
50 clusteringKwargs = dict()
51 clusteringKwargs["PixelClusterizationAlg.name"] = "ActsOfflinePixelClusterizationAlg"
52 clusteringKwargs["PixelClusterizationAlg.ClustersKey"] = "ITkOfflinePixelClusters"
53 clusteringKwargs["StripClusterizationAlg.name"] = "ActsOfflineStripClusterizationAlg"
54 clusteringKwargs["StripClusterizationAlg.ClustersKey"] = "ITkOfflineStripClusters"
55 from ActsConfig.ActsClusterizationConfig import ActsMainClusterizationCfg
56 acc.merge(ActsMainClusterizationCfg(flags,
57 RoIs = "ActsOfflineRegionOfInterest",
58 processHGTD = False,
59 **clusteringKwargs))
60
61
62 if flags.Tracking.doTruth:
63 truthAssociationKwargs = dict()
64 truthAssociationKwargs["PixelClusterToTruthAssociationAlg.name"] = "ActsOfflinePixelClusterToTruthAssociationAlg"
65 truthAssociationKwargs["PixelClusterToTruthAssociationAlg.Measurements"] = "ITkOfflinePixelClusters"
66 truthAssociationKwargs["PixelClusterToTruthAssociationAlg.AssociationMapOut"] = "ITkOfflinePixelClustersToTruthParticles"
67 truthAssociationKwargs["StripClusterToTruthAssociationAlg.name"] = "ActsOfflineStripClusterToTruthAssociationAlg"
68 truthAssociationKwargs["StripClusterToTruthAssociationAlg.Measurements"] = "ITkOfflineStripClusters"
69 truthAssociationKwargs["StripClusterToTruthAssociationAlg.AssociationMapOut"] = "ITkOfflineStripClustersToTruthParticles"
70
71 from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
72 acc.merge(ActsTruthAssociationAlgCfg(flags,
73 **truthAssociationKwargs))
74 acc.merge(ActsTruthParticleHitCountAlgCfg(flags,
75 name = "ActsOfflineTruthParticleHitCountAlg",
76 PixelClustersToTruthAssociationMap = "ITkOfflinePixelClustersToTruthParticles",
77 StripClustersToTruthAssociationMap = "ITkOfflineStripClustersToTruthParticles",
78 TruthParticleHitCountsOut = "OfflineTruthParticleHitCounts"))
79
80 from InDetConfig.InDetPrepRawDataToxAODConfig import TruthParticleIndexDecoratorAlgCfg
81 acc.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
82
83 from ActsConfig.ActsObjectDecorationConfig import ActsPixelClusterTruthDecoratorAlgCfg,ActsStripClusterTruthDecoratorAlgCfg
84 acc.merge(ActsPixelClusterTruthDecoratorAlgCfg(flags,
85 name = "ActsOfflinePixelClusterTruthDecoratorAlgCfg",
86 ClusterContainer = "ITkOfflinePixelClusters",
87 AssociationMapOut = "ITkOfflinePixelClustersToTruthParticles",
88 MeasurementContainer = "ITkPixelMeasurements_offl"))
89 acc.merge(ActsStripClusterTruthDecoratorAlgCfg(flags,
90 name = "ActsOfflineStripClusterTruthDecoratorAlgCfg",
91 ClusterContainer = "ITkOfflineStripClusters",
92 AssociationMapOut = "ITkOfflineStripClustersToTruthParticles",
93 MeasurementContainer = "ITkStripMeasurements_offl"))
94
95
96 toAOD = [
97 'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
98 'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
99 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
100 'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.'
101 ]
102
103 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
104 acc.merge( addToAOD( flags, toAOD ) )
105
106 return acc