65def ActsTrackRecoCfg(flags) -> ComponentAccumulator:
66
67 print(
"Scheduling the ACTS Job Option for Inner Detector Track Reconstruction")
68
69 acc = ComponentAccumulator()
70
71
72
73 scheduledTrackingPasses = extractTrackingPasses(flags)
74
75 previousExtension = None
76
77
78
79
80 InputCombinedTracks = []
81
82
83 trackParticleContainerName = "InDetTrackParticles"
84 primaryVertices = "PrimaryVertices"
85
86
87 for currentFlags in scheduledTrackingPasses:
88
89 print(f
"---- Preparing scheduling of algorithms for tracking pass: {currentFlags.Tracking.ActiveConfig.extension}")
90 print(f
"---- - Is primary pass: {isPrimaryPass(currentFlags)}")
91 from TrkConfig.TrackingPassFlags import printActiveConfig
92 printActiveConfig(currentFlags)
93
94
95
96 from InDetConfig.ActsDataPreparationConfig import ActsDataPreparationCfg
97 acc.merge(ActsDataPreparationCfg(currentFlags,
98 previousExtension = previousExtension))
99
100
101
102 from InDetConfig.ActsPatternRecognitionConfig import ActsTrackReconstructionCfg
103 acc.merge(ActsTrackReconstructionCfg(currentFlags,
104 previousExtension = previousExtension))
105
106
107 previousExtension = currentFlags.Tracking.ActiveConfig.extension
108 if not currentFlags.Tracking.ActiveConfig.storeSeparateContainer or isPrimaryPass(currentFlags):
109 acts_tracks = f"{currentFlags.Tracking.ActiveConfig.extension}Tracks" if not currentFlags.Acts.doAmbiguityResolution else f"{currentFlags.Tracking.ActiveConfig.extension}ResolvedTracks"
110 InputCombinedTracks.append(acts_tracks)
111
112
113
114 print(f
"Creating track particle collection '{trackParticleContainerName}' from combination of following track collection:")
115 for trackCollection in InputCombinedTracks:
116 print(f
'- {trackCollection}')
117
118
119
120
121
122
123 persistifyCollection = True
124 particleCollection = trackParticleContainerName
125 perigeeExpression = flags.Tracking.perigeeExpression
126 if flags.Tracking.perigeeExpression == "Vertex":
127
128 persistifyCollection = False
129 particleCollection = f"{trackParticleContainerName}Temporary"
130 perigeeExpression = "BeamLine"
131
132
133 from InDetConfig.ITkActsParticleCreationConfig import ITkActsTrackParticleCreationCfg
134 acc.merge(ITkActsTrackParticleCreationCfg(flags,
135 TrackContainers = InputCombinedTracks,
136 TrackParticleContainer = particleCollection,
137 persistifyCollection = persistifyCollection,
138 PerigeeExpression = perigeeExpression))
139
140
141 if flags.Tracking.doVertexFinding:
142 from InDetConfig.ActsPriVxFinderConfig import primaryVertexFindingCfg
143 acc.merge(primaryVertexFindingCfg(flags,
144 name = "ActsPriVxFinderAlg",
145 TracksName = particleCollection,
146 vxCandidatesOutputName = primaryVertices))
147
148
149
150
151
152
153
154 if flags.Tracking.perigeeExpression == "Vertex":
155 assert flags.Tracking.doVertexFinding, \
156 f"Requested the computation of track particles wrt but flags.Tracking.doVertexFinding is set to {flags.Tracking.doVertexFinding}"
157 print(
'Requesting to compute the track particle collection wrt the Vertex')
158 acc.merge(ITkActsTrackParticleCreationCfg(flags,
159 TrackContainers = InputCombinedTracks,
160 TrackParticleContainer = trackParticleContainerName))
161
162
163 print(
'Starting Post-Processing')
164
165
166
169 if flags.Tracking.writeExtendedSi_PRDInfo:
170
171
172
173
174
175
176
177 generatedTrackParticleCollections = ["InDetTrackParticles"]
178 if flags.Tracking.PRDInfo.KeepOnlyOnTrackMeasurements:
179 generatedTrackParticleCollections = getListOfGeneratedTrackParticles(flags)
180
181
182
183
184
185 from InDetConfig.InDetPrepRawDataToxAODConfig import ActsPrepDataToxAODCfg
186 acc.merge(ActsPrepDataToxAODCfg(flags,
187 TrackParticles = generatedTrackParticleCollections))
188
189
190 from ActsConfig.ActsObjectDecorationConfig import ActsInDetTrackStateOnSurfaceDecoratorAlgCfg
191 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(flags,
192 name=f"Acts{trackParticleContainerName}StateOnSurfaceDecoratorAlg",
193 TrackParticles=trackParticleContainerName))
194
195
196 for currentFlags in scheduledTrackingPasses:
197
198 from InDetConfig.ITkActsParticleCreationConfig import ITkActsTrackParticlePersistificationCfg
199 acc.merge(ITkActsTrackParticlePersistificationCfg(currentFlags))
200
201
202
203
204
205 if flags.Tracking.writeExtendedSi_PRDInfo:
206 from ActsConfig.ActsObjectDecorationConfig import ActsInDetTrackStateOnSurfaceDecoratorAlgCfg
207
208 if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
209 TrackParticleCollectionForMsos = f'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles'
210 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(currentFlags,
211 name=f"{TrackParticleCollectionForMsos}StateOnSurfaceDecoratorAlg",
212 TrackParticles=TrackParticleCollectionForMsos,
213 PixelMSOSs=f"SiSPSeeded{currentFlags.Tracking.ActiveConfig.extension}PixelMSOSs",
214 StripMSOSs=f"SiSPSeeded{currentFlags.Tracking.ActiveConfig.extension}StripMSOSs"))
215
216 if currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
217
218
219
220
221 TrackParticleCollectionForMsos = f'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles'
222 acc.merge(ActsInDetTrackStateOnSurfaceDecoratorAlgCfg(currentFlags,
223 name=f"{TrackParticleCollectionForMsos}StateOnSurfaceDecoratorAlg",
224 TrackParticles=TrackParticleCollectionForMsos,
225 PixelMSOSs=f"{currentFlags.Tracking.ActiveConfig.extension}PixelMSOSs",
226 StripMSOSs=f"{currentFlags.Tracking.ActiveConfig.extension}StripMSOSs"))
227
228
229
230
231
232 acc.printConfig(withDetails = True, summariseProps = True)
233 return acc
234
void print(char *figname, TCanvas *c1)