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