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