224 previousActsExtension: str = None) -> ComponentAccumulator:
225 assert previousActsExtension is None or isinstance(previousActsExtension, str)
226
227 acc = ComponentAccumulator()
228
229 processPixels = flags.Detector.EnablePixel
230 processStrips = flags.Detector.EnableSCT
231
232 kwargs = dict()
233 kwargs.setdefault('processPixels', processPixels)
234 kwargs.setdefault('processStrips', processStrips)
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
255 kwargs.setdefault('runReconstruction', True)
256 kwargs.setdefault('runPreparation', flags.Acts.useCache)
257
258
259 roisName = f'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
260
261 if flags.Tracking.ActiveConfig.extension == 'ActsLargeRadius':
262 roisName = 'ActsRegionOfInterest'
263
264
265
266 primaryPixelClustersName = 'PixelClusters'
267 primaryStripClustersName = 'SCT_Clusters'
268 pixelClustersName = primaryPixelClustersName
269 stripClustersName = primaryStripClustersName
270
271
272 if kwargs['runCacheCreation']:
273 kwargs.setdefault('ClusterCacheCreatorAlg.name', f'{flags.Tracking.ActiveConfig.extension}ClusterCacheCreatorAlg')
274
275
276 if kwargs['runReconstruction']:
277 if kwargs['processPixels']:
278 kwargs.setdefault('PixelClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterizationAlg')
279 kwargs.setdefault('PixelClusterizationAlg.useCache', flags.Acts.useCache)
280 kwargs.setdefault('PixelClusterizationAlg.ClustersKey', pixelClustersName)
281 kwargs.setdefault('PixelClusterizationAlg.ClusterCache', f'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
282
283 if kwargs['processStrips']:
284 kwargs.setdefault('StripClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterizationAlg')
285 kwargs.setdefault('StripClusterizationAlg.useCache', flags.Acts.useCache)
286 kwargs.setdefault('StripClusterizationAlg.ClustersKey', stripClustersName)
287 kwargs.setdefault('StripClusterizationAlg.ClusterCache', f'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
288
289
290 if kwargs['runPreparation']:
291 if kwargs['processPixels']:
292 kwargs.setdefault('PixelClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterPreparationAlg')
293 kwargs.setdefault('PixelClusterPreparationAlg.useCache', flags.Acts.useCache)
294 kwargs.setdefault('PixelClusterPreparationAlg.OutputCollection', f'{pixelClustersName}_Cached' if kwargs['runReconstruction'] else pixelClustersName)
295
296 if not flags.Acts.useCache:
297
298 kwargs.setdefault('PixelClusterPreparationAlg.InputCollection', pixelClustersName if kwargs['runReconstruction'] else primaryPixelClustersName)
299 kwargs.setdefault('PixelClusterPreparationAlg.InputIDC', '')
300 else:
301 kwargs.setdefault('PixelClusterPreparationAlg.InputCollection', '')
302 kwargs.setdefault('PixelClusterPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
303
304 if kwargs['processStrips']:
305 kwargs.setdefault('StripClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterPreparationAlg')
306 kwargs.setdefault('StripClusterPreparationAlg.useCache', flags.Acts.useCache)
307 kwargs.setdefault('StripClusterPreparationAlg.OutputCollection', f'{stripClustersName}_Cached' if kwargs['runReconstruction'] else stripClustersName)
308 if not flags.Acts.useCache:
309 kwargs.setdefault('StripClusterPreparationAlg.InputCollection', stripClustersName if kwargs['runReconstruction'] else primaryStripClustersName)
310 kwargs.setdefault('StripClusterPreparationAlg.InputIDC', '')
311 else:
312 kwargs.setdefault('StripClusterPreparationAlg.InputCollection', '')
313 kwargs.setdefault('StripClusterPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
314
315 if flags.Acts.EDM.PersistifyClusters and kwargs['runReconstruction']:
316 toAOD = []
317 if kwargs['processPixels']:
318 pixel_cluster_shortlist = ['-validationMeasurementLink']
319 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
320
321 pixelClusterCollection = kwargs['PixelClusterizationAlg.ClustersKey']
322 toAOD += [f'xAOD::PixelClusterContainer#{pixelClusterCollection}',
323 f'xAOD::PixelClusterAuxContainer#{pixelClusterCollection}Aux.{pixel_cluster_variables}']
324
325 if kwargs['processStrips']:
326 strip_cluster_shortlist = ['-validationMeasurementLink']
327 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
328
329 stripClusterCollection = kwargs['StripClusterizationAlg.ClustersKey']
330 toAOD += [f"xAOD::StripClusterContainer#{stripClusterCollection}",
331 f"xAOD::StripClusterAuxContainer#{stripClusterCollection}Aux.{strip_cluster_variables}"]
332
333 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
334 acc.merge(addToAOD(flags, toAOD))
335 acc.merge(ActsIDMainClusterizationCfg(flags, RoIs=roisName, **kwargs))
336 return acc