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