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