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