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