622def MuonCombinedReconstructionCfg(flags):
623 from MuonConfig.MuonGeometryConfig import MuonIdHelperSvcCfg
624
625
626 result = MuonIdHelperSvcCfg(flags)
627
628 from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
629 result.merge(CaloTopoClusterCfg(flags))
630 from TrackToCalo.CaloExtensionBuilderAlgCfg import CaloExtensionBuilderCfg
631 result.merge(CaloExtensionBuilderCfg(flags))
632
633 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg
634 result.merge(TrackingGeometryCondAlgCfg(flags))
635 from MuonConfig.MuonRecToolsConfig import MuonEDMHelperSvcCfg
636 result.merge(MuonEDMHelperSvcCfg(flags))
637
638
639 from TrkConfig.TrackCollectionReadConfig import TrackCollectionReadCfg
640 result.merge(TrackCollectionReadCfg(flags, 'Tracks'))
641
642
643
644 if flags.MuonCombined.doMuGirl or \
645 flags.MuonCombined.doStatisticalCombination or \
646 flags.MuonCombined.doCaloTrkMuId or \
647 flags.MuonCombined.doCombinedFit or \
648 flags.MuonCombined.doMuonSegmentTagger:
649
650 result.merge(MuonCombinedInDetCandidateAlgCfg(flags))
651 if flags.Tracking.doLargeD0:
652 result.merge(LRT_MuonCombinedInDetCandidateAlgCfg(flags))
653
654 result.merge(MuonCombinedMuonCandidateAlgCfg(flags))
655
656 if flags.MuonCombined.doStatisticalCombination or flags.MuonCombined.doCombinedFit:
657 result.merge(MuonCombinedAlgCfg(flags))
658 if flags.Tracking.doLargeD0:
659 result.merge(LRT_MuonCombinedAlgCfg(flags))
660
661
662 if flags.MuonCombined.doCombinedFit:
663 result.merge(MuonInDetToMuonSystemExtensionAlgCfg(flags))
664 if flags.Tracking.doLargeD0:
665 result.merge(LRT_MuonInDetToMuonSystemExtensionAlgCfg(flags))
666 if flags.MuonCombined.doMuGirl:
667
668 result.merge(MuonInsideOutRecoAlgCfg(flags, name="MuonInsideOutRecoAlg",
669 InDetCandidateLocation="InDetCandidates"
670 if not flags.MuonCombined.doCombinedFit else "InDetCandidatesSystemExtened"))
671 if flags.MuonCombined.doMuGirlLowBeta:
672 if flags.Tracking.doLargeD0:
673 result.merge(MuonInDetExtensionMergerAlgCfg(flags))
674
675
676 result.merge(MuGirlStauAlgCfg(flags))
677 if flags.Tracking.doLargeD0:
678 result.merge(LRT_MuGirlAlgCfg(flags))
679
680 if flags.MuonCombined.doCaloTrkMuId:
681 result.merge(MuonCaloTagAlgCfg(flags))
682 if flags.Tracking.doLargeD0:
683 result.merge(LRT_MuonCaloTagAlgCfg(flags))
684
685 if flags.MuonCombined.doMuonSegmentTagger:
686 result.merge(MuonSegmentTagAlgCfg(flags))
687 if flags.Tracking.doLargeD0:
688 result.merge(LRT_MuonSegmentTagAlgCfg(flags))
689
690 result.merge(MuonSegContainerMergerAlgCfg(flags))
691 from MuonConfig.MuonSegmentFindingConfig import MuonSegmentCnvAlgCfg
692 result.merge(MuonSegmentCnvAlgCfg(flags, "MuonSegmentCnvAlg",
693 SegmentContainerName="TrkMuonSegments",
694 xAODContainerName="MuonSegments"))
695 if flags.MuonCombined.writeUnAssocSegments:
696 result.merge(MuonSegmentCnvAlgCfg(flags, "UnAssocMuonSegmentCnvAlg",
697 SegmentContainerName="UnAssocMuonTrkSegments",
698 xAODContainerName="UnAssocMuonSegments"))
699 if flags.MuonCombined.doMuGirlLowBeta:
700 result.merge(MuonSegmentCnvAlgCfg(flags, "MuonStauSegmentCnvAlg",
701 SegmentContainerName="TrkStauSegments",
702 xAODContainerName="StauSegments"))
703
704 result.merge(MuonCreatorAlgCfg(flags))
705 if flags.Tracking.doLargeD0:
706 result.merge(LRT_MuonCreatorAlgCfg(flags))
707
708 if flags.MuonCombined.doMuGirlLowBeta:
709
710 result.merge(StauCreatorAlgCfg(flags))
711
712
713
714 from MuonConfig.MuonRecToolsConfig import MuonTrackScoringToolCfg
715 result.addPublicTool(result.popToolsAndMerge(
716 MuonTrackScoringToolCfg(flags)))
717 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
718 result.addPublicTool(result.popToolsAndMerge(
719 MuonCombinedTrackSummaryToolCfg(flags)))
720
721
722 from AthenaConfiguration.Enums import Format
723 if flags.Input.isMC and flags.Input.Format != Format.BS:
724 result.merge(CombinedMuonTrackTruthAlgsCfg(flags))
725 result.merge(CombinedMuonTruthAssociationAlgsCfg(flags))
726 if not flags.Muon.usePhaseIIGeoSetup and \
727 "MuonSegments" not in flags.Input.Collections:
728
729 from MuonConfig.MuonTruthAlgsConfig import MuonSegmentTruthAssociationAlgCfg
730 result.merge(MuonSegmentTruthAssociationAlgCfg(flags))
731
732 result.addEventAlgo(CompFactory.ClusterMatching.CaloClusterMatchLinkAlg(
733 "MuonTCLinks", ClustersToDecorate="MuonClusterCollection"))
734 result.merge(MuonDecorationAlgsCfg(flags))
735
736 result.merge(CombinedMuonOutputCfg(flags))
737
738 return result
739
740