459 previousActsExtension: str = None) -> ComponentAccumulator:
460 assert previousActsExtension is None or isinstance(previousActsExtension, str)
461
462 acc = ComponentAccumulator()
463
464 processPixels = flags.Detector.EnableITkPixel
465 processStrips = flags.Detector.EnableITkStrip
466 processHGTD = flags.Acts.useHGTDClusterInTrackFinding and flags.Detector.EnableHGTD
467
468 kwargs = dict()
469 kwargs.setdefault('processPixels', processPixels)
470 kwargs.setdefault('processStrips', processStrips)
471 kwargs.setdefault('processHGTD', processHGTD)
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489 from InDetConfig.ITkActsHelpers import isPrimaryPass, isValidationPass
490 if isPrimaryPass(flags) or isValidationPass(flags):
491
492
493 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
494 kwargs.setdefault('runReconstruction', True)
495 kwargs.setdefault('runPreparation', flags.Acts.useCache)
496 else:
497
498 kwargs.setdefault('runCacheCreation', False)
499 kwargs.setdefault('runReconstruction', flags.Acts.useCache)
500 kwargs.setdefault('runPreparation', True)
501
502
503 roisName = f'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
504
505 if flags.Tracking.ActiveConfig.isLargeD0 and flags.Tracking.ActiveConfig.isSecondaryPass:
506 from InDetConfig.ITkActsHelpers import primaryPassExtension
507 roisName = f'{primaryPassExtension(flags)}RegionOfInterest'
508
509
510
511 primaryPixelClustersName = 'ITkPixelClusters'
512 primaryStripClustersName = 'ITkStripClusters'
513 primaryHgtdClustersName = 'HGTD_Clusters'
514 pixelClustersName = primaryPixelClustersName
515 stripClustersName = primaryStripClustersName
516 hgtdClustersName = primaryHgtdClustersName
517
518
519 if flags.Tracking.ActiveConfig.isSecondaryPass:
520 keyPrefix = flags.Tracking.ActiveConfig.extension.replace("Acts", "")
521 pixelClustersName = f'ITk{keyPrefix}PixelClusters'
522 stripClustersName = f'ITk{keyPrefix}StripClusters'
523 hgtdClustersName = f'{keyPrefix}HGTD_Clusters'
524
525
526 if kwargs['runCacheCreation']:
527 kwargs.setdefault('ClusterCacheCreatorAlg.name', f'{flags.Tracking.ActiveConfig.extension}ClusterCacheCreatorAlg')
528
529
530 if kwargs['runReconstruction']:
531 if kwargs['processPixels']:
532 kwargs.setdefault('PixelClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterizationAlg')
533 kwargs.setdefault('PixelClusterizationAlg.useCache', flags.Acts.useCache)
534 kwargs.setdefault('PixelClusterizationAlg.ClustersKey', pixelClustersName)
535 kwargs.setdefault('PixelClusterizationAlg.ClusterCache', f'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
536 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
537 kwargs.setdefault('PixelClusterizationAlg.ExtraInputs', {('ActsTrk::PrepRawDataAssociation', f'StoreGateSvc+{previousActsExtension}PrdMap')})
538
539 if kwargs['processStrips']:
540 kwargs.setdefault('StripClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterizationAlg')
541 kwargs.setdefault('StripClusterizationAlg.useCache', flags.Acts.useCache)
542 kwargs.setdefault('StripClusterizationAlg.ClustersKey', stripClustersName)
543 kwargs.setdefault('StripClusterizationAlg.ClusterCache', f'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
544 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
545 kwargs.setdefault('StripClusterizationAlg.ExtraInputs', {('ActsTrk::PrepRawDataAssociation', f'StoreGateSvc+{previousActsExtension}PrdMap')})
546
547 if kwargs['processHGTD']:
548 kwargs.setdefault('HgtdClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}HgtdClusterizationAlg')
549
550 kwargs.setdefault('HgtdClusterizationAlg.ClusterContainerName', hgtdClustersName)
551 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
552 kwargs.setdefault('HgtdClusterizationAlg.ExtraInputs', {('ActsTrk::PrepRawDataAssociation', f'StoreGateSvc+{previousActsExtension}PrdMap')})
553
554
555
556 if kwargs['runPreparation']:
557 if kwargs['processPixels']:
558 kwargs.setdefault('PixelClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterPreparationAlg')
559 kwargs.setdefault('PixelClusterPreparationAlg.useCache', flags.Acts.useCache)
560 kwargs.setdefault('PixelClusterPreparationAlg.OutputCollection', f'{pixelClustersName}_Cached' if kwargs['runReconstruction'] else pixelClustersName)
561
562 if not flags.Acts.useCache:
563
564 kwargs.setdefault('PixelClusterPreparationAlg.InputCollection', pixelClustersName if kwargs['runReconstruction'] else primaryPixelClustersName)
565 kwargs.setdefault('PixelClusterPreparationAlg.InputIDC', '')
566 else:
567 kwargs.setdefault('PixelClusterPreparationAlg.InputCollection', '')
568 kwargs.setdefault('PixelClusterPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
569
570 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
571 kwargs.setdefault('PixelClusterPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
572
573 if kwargs['processStrips']:
574 kwargs.setdefault('StripClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterPreparationAlg')
575 kwargs.setdefault('StripClusterPreparationAlg.useCache', flags.Acts.useCache)
576 kwargs.setdefault('StripClusterPreparationAlg.OutputCollection', f'{stripClustersName}_Cached' if kwargs['runReconstruction'] else stripClustersName)
577 if not flags.Acts.useCache:
578 kwargs.setdefault('StripClusterPreparationAlg.InputCollection', stripClustersName if kwargs['runReconstruction'] else primaryStripClustersName)
579 kwargs.setdefault('StripClusterPreparationAlg.InputIDC', '')
580 else:
581 kwargs.setdefault('StripClusterPreparationAlg.InputCollection', '')
582 kwargs.setdefault('StripClusterPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
583
584 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
585 kwargs.setdefault('StripClusterPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
586
587 if kwargs['processHGTD']:
588 kwargs.setdefault('HgtdClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}HgtdClusterPreparationAlg')
589 kwargs.setdefault('HgtdClusterPreparationAlg.OutputCollection', f'{hgtdClustersName}_Cached' if kwargs['runReconstruction'] else hgtdClustersName)
590 kwargs.setdefault('HgtdClusterPreparationAlg.InputCollection', hgtdClustersName if kwargs['runReconstruction'] else primaryHgtdClustersName)
591 kwargs.setdefault('HgtdClusterPreparationAlg.InputIDC', '')
592 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
593 kwargs.setdefault('HgtdClusterPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
594
595
596 if flags.Acts.Clusters.doAnalysis:
597
598
599 if kwargs['processPixels']:
600 kwargs.setdefault('PixelClusterAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterAnalysisAlg')
601 kwargs.setdefault('PixelClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
602 kwargs.setdefault('PixelClusterAnalysisAlg.MonGroupName', f'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
603 kwargs.setdefault('PixelClusterAnalysisAlg.ClusterContainerKey', kwargs['PixelClusterPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['PixelClusterizationAlg.ClustersKey'])
604
605 if kwargs['processStrips']:
606 kwargs.setdefault('StripClusterAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterAnalysisAlg')
607 kwargs.setdefault('StripClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
608 kwargs.setdefault('StripClusterAnalysisAlg.MonGroupName', f'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
609 kwargs.setdefault('StripClusterAnalysisAlg.ClusterContainerKey', kwargs['StripClusterPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripClusterizationAlg.ClustersKey'])
610
611 if kwargs['processHGTD']:
612 kwargs.setdefault('HgtdClusterAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}HgtdClusterAnalysisAlg')
613 kwargs.setdefault('HgtdClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
614 kwargs.setdefault('HgtdClusterAnalysisAlg.MonGroupName', f'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
615
616 acc.merge(ActsMainClusterizationCfg(flags, RoIs=roisName, **kwargs))
617
618
619 if flags.Acts.EDM.PersistifyClusters and kwargs['runReconstruction']:
620 from ActsConfig.ActsPersistificationConfig import PersistifyClusters
621 pixelClusterCollections = None if not kwargs['processPixels'] else [kwargs['PixelClusterizationAlg.ClustersKey']]
622 stripClusterCollections = None if not kwargs['processStrips'] else [kwargs['StripClusterizationAlg.ClustersKey']]
623 hgtdClusterCollections = None if not kwargs['processHGTD'] else [kwargs['HgtdClusterizationAlg.ClusterContainerName']]
624 acc.merge(PersistifyClusters(flags,
625 pixelClusterCollections=pixelClusterCollections,
626 stripClusterCollections=stripClusterCollections,
627 hgtdClusterCollections=hgtdClusterCollections))
628 return acc