314 previousActsExtension = None) -> ComponentAccumulator:
315 acc = ComponentAccumulator()
316
317 kwargs = dict()
318
319 processPixels = flags.Tracking.ActiveConfig.useITkPixelSeeding or (
320 flags.Acts.SpacePoints.doPixel and not flags.Tracking.ActiveConfig.isSecondaryPass)
321 processStrips = flags.Tracking.ActiveConfig.useITkStripSeeding or (
322 flags.Acts.SpacePoints.doStrip and not flags.Tracking.ActiveConfig.isSecondaryPass)
323
324 kwargs.setdefault('processPixels', processPixels)
325 kwargs.setdefault('processStrips', processStrips)
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343 from InDetConfig.ITkActsHelpers import isValidationPass
344 if not flags.Tracking.ActiveConfig.isSecondaryPass or isValidationPass(flags):
345
346
347 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
348 kwargs.setdefault('runReconstruction', True)
349 kwargs.setdefault('runPreparation', flags.Acts.useCache)
350 else:
351
352 kwargs.setdefault('runCacheCreation', False)
353 kwargs.setdefault('runReconstruction', flags.Acts.useCache)
354 kwargs.setdefault('runPreparation', True)
355
356
357 processOverlapSpacePoints = kwargs['processStrips']
358 from AthenaConfiguration.Enums import BeamType
359 if flags.Tracking.ActiveConfig.extension in ['ActsConversion'] or flags.Beam.Type is BeamType.Cosmics:
360 processOverlapSpacePoints = False
361 kwargs.setdefault('processOverlapSpacePoints', processOverlapSpacePoints)
362
363
364 roisName = f'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
365
366 if flags.Tracking.ActiveConfig.isLargeD0 and flags.Tracking.ActiveConfig.isSecondaryPass:
367 from InDetConfig.ITkActsHelpers import primaryPassExtension
368 roisName = f'{primaryPassExtension(flags)}RegionOfInterest'
369
370
371
372 pixelClustersName = 'ITkPixelClusters'
373 stripClustersName = 'ITkStripClusters'
374 pixelSpacePointsName = 'ITkPixelSpacePoints'
375 stripSpacePointsName = 'ITkStripSpacePoints'
376 stripOverlapSpacePointsName = 'ITkStripOverlapSpacePoints'
377
378 if flags.Tracking.ActiveConfig.isSecondaryPass:
379 pixelClustersName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}PixelClusters'
380 stripClustersName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}StripClusters'
381 pixelSpacePointsName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}PixelSpacePoints'
382 stripSpacePointsName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}StripSpacePoints'
383 stripOverlapSpacePointsName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}StripOverlapSpacePoints'
384
385 if flags.Acts.useCache:
386 pixelClustersName += "_Cached"
387 stripClustersName += "_Cached"
388
389
390 primaryPixelSpacePointsName = 'ITkPixelSpacePoints'
391 primaryStripSpacePointsName = 'ITkStripSpacePoints'
392 primaryStripOverlapSpacePointsName = 'ITkStripOverlapSpacePoints'
393
394
395 if kwargs['runCacheCreation']:
396 kwargs.setdefault('SpacePointCacheCreatorAlg.name', f'{flags.Tracking.ActiveConfig.extension}SpacePointCacheCreatorAlg')
397
398
399 if kwargs['runReconstruction']:
400 if kwargs['processPixels']:
401 kwargs.setdefault('PixelSpacePointFormationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointFormationAlg')
402 kwargs.setdefault('PixelSpacePointFormationAlg.useCache', flags.Acts.useCache)
403 kwargs.setdefault('PixelSpacePointFormationAlg.SPCache', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointCache')
404 kwargs.setdefault('PixelSpacePointFormationAlg.PixelClusters', pixelClustersName)
405 kwargs.setdefault('PixelSpacePointFormationAlg.PixelSpacePoints', pixelSpacePointsName)
406
407 if kwargs['processStrips']:
408 kwargs.setdefault('StripSpacePointFormationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointFormationAlg')
409 kwargs.setdefault('StripSpacePointFormationAlg.useCache', flags.Acts.useCache)
410 kwargs.setdefault('StripSpacePointFormationAlg.SPCache', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointCache')
411 kwargs.setdefault('StripSpacePointFormationAlg.StripClusters', stripClustersName)
412 kwargs.setdefault('StripSpacePointFormationAlg.StripSpacePoints', stripSpacePointsName)
413
414
415 kwargs.setdefault('StripSpacePointFormationAlg.ProcessOverlapForStrip', kwargs['processOverlapSpacePoints'])
416 kwargs.setdefault('StripSpacePointFormationAlg.OSPCache', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointCache')
417 if kwargs['processOverlapSpacePoints']:
418 kwargs.setdefault('StripSpacePointFormationAlg.StripOverlapSpacePoints', stripOverlapSpacePointsName)
419 else:
420
421 kwargs.setdefault('StripSpacePointFormationAlg.StripOverlapSpacePoints', '')
422
423
424 if kwargs['runPreparation']:
425 if kwargs['processPixels']:
426 kwargs.setdefault('PixelSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointPreparationAlg')
427 kwargs.setdefault('PixelSpacePointPreparationAlg.useCache', flags.Acts.useCache)
428 kwargs.setdefault('PixelSpacePointPreparationAlg.OutputCollection', f'{pixelSpacePointsName}_Cached' if kwargs['runReconstruction'] else pixelSpacePointsName)
429
430 if not flags.Acts.useCache:
431
432 kwargs.setdefault('PixelSpacePointPreparationAlg.InputCollection', pixelSpacePointsName if kwargs['runReconstruction'] else primaryPixelSpacePointsName)
433 kwargs.setdefault('PixelSpacePointPreparationAlg.InputIDC', '')
434 else:
435 kwargs.setdefault('PixelSpacePointPreparationAlg.InputCollection', '')
436 kwargs.setdefault('PixelSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointCache')
437
438 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
439 kwargs.setdefault('PixelSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
440
441
442 if kwargs['processStrips']:
443 kwargs.setdefault('StripSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointPreparationAlg')
444 kwargs.setdefault('StripSpacePointPreparationAlg.useCache', flags.Acts.useCache)
445 kwargs.setdefault('StripSpacePointPreparationAlg.OutputCollection', f'{stripSpacePointsName}_Cached' if kwargs['runReconstruction'] else stripSpacePointsName)
446
447 if not flags.Acts.useCache:
448
449 kwargs.setdefault('StripSpacePointPreparationAlg.InputCollection', stripSpacePointsName if kwargs['runReconstruction'] else primaryStripSpacePointsName)
450 kwargs.setdefault('StripSpacePointPreparationAlg.InputIDC', '')
451 else:
452 kwargs.setdefault('StripSpacePointPreparationAlg.InputCollection', '')
453 kwargs.setdefault('StripSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointCache')
454
455 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
456 kwargs.setdefault('StripSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
457
458 if kwargs['processOverlapSpacePoints']:
459 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointPreparationAlg')
460 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.useCache', flags.Acts.useCache)
461 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.OutputCollection', f'{stripOverlapSpacePointsName}_Cached' if kwargs['runReconstruction'] else stripOverlapSpacePointsName)
462
463 if not flags.Acts.useCache:
464
465 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputCollection', stripOverlapSpacePointsName if kwargs['runReconstruction'] else primaryStripOverlapSpacePointsName)
466 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputIDC', '')
467 else:
468 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputCollection', '')
469 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointCache')
470
471 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
472 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
473
474
475 if flags.Acts.SpacePoints.doAnalysis:
476
477
478 if kwargs['processPixels']:
479 kwargs.setdefault('PixelSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointAnalysisAlg')
480 kwargs.setdefault('PixelSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
481 kwargs.setdefault('PixelSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['PixelSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['PixelSpacePointFormationAlg.PixelSpacePoints'])
482
483 if kwargs['processStrips']:
484 kwargs.setdefault('StripSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointAnalysisAlg')
485 kwargs.setdefault('StripSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
486 kwargs.setdefault('StripSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['StripSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripSpacePointFormationAlg.StripSpacePoints'])
487
488 if kwargs['processOverlapSpacePoints']:
489 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointAnalysisAlg')
490 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
491 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['StripOverlapSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripSpacePointFormationAlg.StripOverlapSpacePoints'])
492
493 acc.merge(ActsMainSpacePointFormationCfg(flags, RoIs=roisName, **kwargs))
494
495
496
497 if kwargs['runReconstruction']:
498 from ActsConfig.ActsPersistificationConfig import PersistifySpacePoints
499 pixelSpacePointCollections = None if not kwargs['processPixels'] else [kwargs['PixelSpacePointFormationAlg.PixelSpacePoints']]
500 stripSpacePointCollections = []
501 if kwargs['processStrips']:
502 stripSpacePointCollections.append(kwargs['StripSpacePointFormationAlg.StripSpacePoints'])
503 if kwargs['processOverlapSpacePoints']:
504 stripSpacePointCollections.append(kwargs['StripSpacePointFormationAlg.StripOverlapSpacePoints'])
505 if len(stripSpacePointCollections) == 0:
506 stripSpacePointCollections = None
507
508 acc.merge(PersistifySpacePoints(flags,
509 pixelSpacePointCollections=pixelSpacePointCollections,
510 stripSpacePointCollections=stripSpacePointCollections))
511 return acc
512