75def MuonPatternRecognitionCfg(flags):
76 result = ComponentAccumulator()
77 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
78 result.merge(ActsGeometryContextAlgCfg(flags))
79
80 if flags.Muon.enableMLBucketFilter:
81 from MuonInference.InferenceConfig import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
82 bucketTool = result.popToolsAndMerge(GraphBucketFilterToolCfg(flags))
83 result.merge(GraphInferenceAlgCfg(flags, InferenceTools=[bucketTool]))
84
85 segmentContainers = []
86 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
87 segmentContainers+=["MuonNswSegments"]
88 result.merge(MuonEtaHoughTransformAlgCfg(flags, name="MuonNswEtaHoughTransformAlg",
89 EtaHoughMaxContainer = "MuonHoughNswMaxima",
90 SpacePointContainer = "NswSpacePoints"))
91 result.merge(MuonNSWSegmentFinderAlgCfg(flags, name="MuonNswSegmentFinderAlg",
92 MuonNswSegmentWriteKey = segmentContainers[-1],
93 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
94 CombinatorialReadKey = "MuonHoughNswMaxima"))
95
96 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
97 result.merge(MuonEtaHoughTransformAlgCfg(flags))
98 result.merge(MuonPhiHoughTransformAlgCfg(flags))
99 segmentContainers+=["R4MuonSegments"]
100
101 result.merge(MuonSegmentFittingAlgCfg(flags, OutSegmentContainer=segmentContainers[-1]))
102
103 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
104 result.merge(xAODSegmentCnvAlgCfg(flags, InSegmentKeys = segmentContainers))
105 if flags.Input.isMC:
106 from MuonTruthAlgsR4.MuonTruthAlgsConfig import RecoSegmentTruthAssocCfg
107 result.merge(RecoSegmentTruthAssocCfg(flags,
108 name="MuonSegmentsFromR4TruthMatching",
109 SegmentKey="MuonSegmentsFromR4"))
110 if flags.Muon.scheduleActsReco:
111 from MuonSegmentCnv.MuonSegmentCnvConfig import MuonR4SegmentCnvAlgCfg
112 result.merge(MuonR4SegmentCnvAlgCfg(flags,
113 ReadSegments = segmentContainers,
114 WriteKey="TrackMuonSegments"))
115 return result