511def ITkTrackRecoCfg(flags) -> ComponentAccumulator:
512 """Configures complete ITk tracking """
513
514 from InDetConfig.ITkActsHelpers import primaryPassUsesActs
515 if primaryPassUsesActs(flags):
516 from InDetConfig.ITkActsTrackRecoConfig import ITkActsTrackRecoCfg
517 return ITkActsTrackRecoCfg(flags)
518
519 result = ComponentAccumulator()
520
521 if flags.Input.Format is Format.BS:
522 if flags.Detector.EnableITkPixel:
523 from ITkPixelByteStreamCnv.ITkPixelByteStreamCnvConfig import ITkPixelDecodingAlgCfg
524 result.merge( ITkPixelDecodingAlgCfg(flags) )
525
526 if flags.Detector.EnableITkStrip:
527 from ITkStripsByteStreamCnv.ITkStripByteStreamCnvConfig import ITkStripRawDataProviderCfg
528 result.merge(ITkStripRawDataProviderCfg(flags))
529
530
531
532
533 flags_set = CombinedTrackingPassFlagSets(flags, resetCache=True)
534
535
536
537
538
539 InputCombinedITkTracks = []
540
541 InputCombinedActsTracks = []
542
543 InputExtendedITkTracks = []
544
545 ClusterSplitProbContainer = ""
546
547 StatTrackCollections = []
548 StatTrackTruthCollections = []
549
550 previousActsExtension = None
551
552 from InDetConfig.SiliconPreProcessing import ITkRecPreProcessingSiliconCfg
553
554 for current_flags in flags_set:
555 printActiveConfig(current_flags)
556
557
558 extension = current_flags.Tracking.ActiveConfig.extension
559 if extension not in _actsExtensions:
560 _extensions_list.append(extension)
561
562
563 _outputExtensions.append(extension)
564
565
566
567
568
569
570
571 result.merge(ITkRecPreProcessingSiliconCfg(current_flags,
572 previousActsExtension=previousActsExtension))
573
574
575
576
577
578
579
580
581 acc, ClusterSplitProbContainer = ITkTrackRecoPassCfg(
582 current_flags,
583 previousActsExtension,
584 InputCombinedITkTracks=InputCombinedITkTracks,
585 InputCombinedActsTracks=InputCombinedActsTracks,
586 InputExtendedITkTracks=InputExtendedITkTracks,
587 StatTrackCollections=StatTrackCollections,
588 StatTrackTruthCollections=StatTrackTruthCollections,
589 ClusterSplitProbContainer=ClusterSplitProbContainer)
590 result.merge(acc)
591
592
593 if 'Acts' in extension:
594 previousActsExtension = extension
595
596
597
598 if InputCombinedITkTracks:
599
600 result.merge(
601 ITkTrackFinalCfg(flags,
602 InputCombinedITkTracks=InputCombinedITkTracks,
603 StatTrackCollections=StatTrackCollections,
604 StatTrackTruthCollections=StatTrackTruthCollections))
605
606
607
608
609
610 if InputCombinedActsTracks:
611
612
613
614
615
616 ActsTrackContainerName = "InDetTrackParticles" if not InputCombinedITkTracks else "InDetActsTrackParticles"
617 ActsPrimaryVertices = "PrimaryVertices" if not InputCombinedITkTracks else "ActsPrimaryVertices"
618
619 result.merge(ITkActsTrackFinalCfg(flags,
620 InputCombinedITkTracks=InputCombinedActsTracks,
621 ActsTrackContainerName=ActsTrackContainerName))
622
623
624 if flags.Tracking.doVertexFinding:
625
626 from InDetConfig.InDetPriVxFinderConfig import primaryVertexFindingCfg
627
628
629
630 if InputCombinedITkTracks:
631 result.merge(primaryVertexFindingCfg(flags))
632
633
634
635
636
637 if InputCombinedActsTracks:
638 result.merge(primaryVertexFindingCfg(flags,
639 name="ActsPriVxFinderAlg",
640 TracksName=ActsTrackContainerName,
641 vxCandidatesOutputName=ActsPrimaryVertices))
642
643
644
645 print(
"-------- POST PROCESSING --------")
646 for current_flags in flags_set:
647 extension = current_flags.Tracking.ActiveConfig.extension
648 print(f
"- Running post-processing for extension: {extension}")
649
650
651
652
653
654
655
656
657
658
659
660
661 if current_flags.Tracking.ActiveConfig.doAthenaTrack:
662 if current_flags.Tracking.doStoreTrackSeeds:
663 from InDetConfig.ITkPersistificationConfig import ITkTrackSeedsFinalCfg
664 result.merge(ITkTrackSeedsFinalCfg(current_flags))
665
666
667
668
669
670
671
672 if current_flags.Tracking.ActiveConfig.doAthenaTrack or current_flags.Tracking.ActiveConfig.doActsToAthenaTrack:
673 if current_flags.Tracking.doStoreSiSPSeededTracks:
674 from InDetConfig.ITkPersistificationConfig import ITkSiSPSeededTracksFinalCfg
675 result.merge(ITkSiSPSeededTracksFinalCfg(current_flags))
676
677 if flags.Tracking.doStats:
678 if _extensions_list:
679 result.merge(ITkStatsCfg(
680 flags_set[0],
681 StatTrackCollections=StatTrackCollections,
682 StatTrackTruthCollections=StatTrackTruthCollections))
683
684
685 if flags.Tracking.GNN.ActsPipeline.saveEdgeScore:
686 from ActsConfig.ActsObjectDecorationConfig import ActsGNNScoreDecoratorAlgCfg
687 result.merge(ActsGNNScoreDecoratorAlgCfg(flags,
688 name="ActsGNNScoreDecoratorAlg"))
689
690
691 if flags.Tracking.writeExtendedSi_PRDInfo:
692 if _extensions_list:
693 result.merge(ITkExtendedPRDInfoCfg(flags))
694
695
696 else:
697 result.merge(ITkActsExtendedPRDInfoCfg(flags))
698
699
700 from InDetConfig.ITkTrackOutputConfig import ITkTrackRecoOutputCfg
701 result.merge(ITkTrackRecoOutputCfg(flags, _outputExtensions))
702 result.printConfig(withDetails = False, summariseProps = False)
703 return result
704
705
void print(char *figname, TCanvas *c1)