6def ITkTrackRecoOutputCfg(flags, extensions_list=None):
7 if extensions_list is None:
8 extensions_list = []
9
10 from OutputStreamAthenaPool.OutputStreamConfig import addToESD, addToAOD
11 toAOD = []
12 toESD = []
13
14
15 excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco.-AssoClustersUFO'
16 '.-TTVA_AMVFWeights_forReco')
17
18 excludedAuxData += '.-'.join([''] + FTAG_AUXDATA)
19
20
21 excludedAuxData += '.-TTVA_AMVFVertices.-TTVA_AMVFWeights'
22
23
24 from DerivationFrameworkInDet.IDTIDE import IDTIDE_AOD_EXCLUDED_AUXDATA
25 excludedAuxData += '.-'.join([''] + IDTIDE_AOD_EXCLUDED_AUXDATA)
26 from DerivationFrameworkInDet.IDTRKVALID import IDTRKVALID_AOD_EXCLUDED_AUXDATA
27 excludedAuxData += '.-'.join([''] + IDTRKVALID_AOD_EXCLUDED_AUXDATA)
28
29 if not flags.Tracking.writeExtendedSi_PRDInfo:
30 excludedAuxData += '.-msosLink'
31
32
33 toESD += [
34 "InDet::SCT_ClusterContainer#ITkStripClusters",
35 "InDet::PixelClusterContainer#ITkPixelClusters",
36 "InDet::PixelGangedClusterAmbiguities#ITkPixelClusterAmbiguitiesMap",
37 ]
38 if flags.Tracking.doPixelClusterSplitting:
39 toESD += [
40 "InDet::PixelGangedClusterAmbiguities#ITkSplitClusterAmbiguityMap"]
41
42 from InDetConfig.ITkTrackRecoConfig import ITkClusterSplitProbabilityContainerName
43 toESD += ["Trk::ClusterSplitProbabilityContainer#" +
44 ITkClusterSplitProbabilityContainerName(flags)]
45
46
47 if flags.Tracking.doTruth:
48 toESD += [
49 "TrackTruthCollection#CombinedITkTracksTrackTruthCollection",
50 "DetailedTrackTruthCollection#CombinedITkTracksDetailedTrackTruth"]
51
52 if flags.Tracking.doStoreTrackSeeds:
53 listOfExtensionsRequesting = [
54 e for e in extensions_list
55 if (e == '' or flags.Tracking[f"ITk{e}Pass"].storeTrackSeeds) ]
56
57 for extension in listOfExtensionsRequesting:
58 toESD += ["TrackCollection#SiSPSeedSegments"+extension]
59
60 toESD += ["TrackCollection#CombinedITkTracks"]
61
62
63 toAOD += [
64 "xAOD::TrackParticleContainer#InDetTrackParticles",
65 f"xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux.{excludedAuxData}"
66 ]
67
68
69
70 toAOD += [
71 "xAOD::TrackParticleContainer#ActsInDetTrackParticles",
72 f"xAOD::TrackParticleAuxContainer#ActsInDetTrackParticlesAux.{excludedAuxData}"]
73
74 if flags.Tracking.writeExtendedSi_PRDInfo:
75
76
77
78
79 toAOD += [
80 "xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements",
81 "xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurementsAux.",
82 "xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements",
83 "xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurementsAux.",
84 "xAOD::TrackStateValidationContainer#ITkPixelMSOSs",
85 "xAOD::TrackStateValidationAuxContainer#ITkPixelMSOSsAux.",
86 "xAOD::TrackStateValidationContainer#ITkStripMSOSs",
87 "xAOD::TrackStateValidationAuxContainer#ITkStripMSOSsAux."
88 ]
89
90 if flags.Tracking.doStoreSiSPSeededTracks:
91 toAOD += [
92 "xAOD::TrackStateValidationContainer#SiSP_ITkPixel_MSOSs",
93 "xAOD::TrackStateValidationAuxContainer#SiSP_ITkPixel_MSOSsAux.",
94 "xAOD::TrackStateValidationContainer#SiSP_ITkStrip_MSOSs",
95 "xAOD::TrackStateValidationAuxContainer#SiSP_ITkStrip_MSOSsAux."
96 ]
97
98 if (flags.Tracking.doLargeD0 and
99 flags.Tracking.storeSeparateLargeD0Container):
100 toAOD += [
101 "xAOD::TrackParticleContainer#InDetLargeD0TrackParticles",
102 f"xAOD::TrackParticleAuxContainer#InDetLargeD0TrackParticlesAux.{excludedAuxData}"
103 ]
104
105 if flags.Tracking.doStoreSiSPSeededTracks:
106
107 listOfExtensionsRequesting = [
108 e for e in extensions_list
109 if (e == '' or flags.Tracking[f"ITk{e}Pass"].storeSiSPSeededTracks) ]
110
111 for extension in listOfExtensionsRequesting:
112 toAOD += [
113 f"xAOD::TrackParticleContainer#SiSPSeededTracks{extension}TrackParticles",
114 f"xAOD::TrackParticleAuxContainer#SiSPSeededTracks{extension}TrackParticlesAux.{excludedAuxData}"]
115
116 if flags.Tracking.doStoreTrackSeeds:
117
118 listOfExtensionsRequesting = [
119 e for e in extensions_list
120 if (e == '' or flags.Tracking[f"ITk{e}Pass"].storeTrackSeeds) ]
121 for extension in listOfExtensionsRequesting:
122 toAOD += [
123 f"xAOD::TrackParticleContainer#SiSPSeedSegments{extension}PixelTrackParticles",
124 f"xAOD::TrackParticleAuxContainer#SiSPSeedSegments{extension}PixelTrackParticlesAux.",
125 f"xAOD::TrackParticleContainer#SiSPSeedSegments{extension}StripTrackParticles",
126 f"xAOD::TrackParticleAuxContainer#SiSPSeedSegments{extension}StripTrackParticlesAux."
127 ]
128
129 result = ComponentAccumulator()
130 result.merge(addToESD(flags, toAOD+toESD))
131 result.merge(addToAOD(flags, toAOD))
132 return result