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