62def MuonPatternRecognitionCfg(flags):
63 result = ComponentAccumulator()
64 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
65 result.merge(ActsGeometryContextAlgCfg(flags))
66 segmentContainers = []
67 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
68 segmentContainers+=["MuonNswSegments"]
69 result.merge(MuonEtaHoughTransformAlgCfg(flags, name="MuonNswEtaHoughTransformAlg",
70 EtaHoughMaxContainer = "MuonHoughNswMaxima",
71 SpacePointContainer = "NswSpacePoints"))
72 result.merge(MuonNSWSegmentFinderAlgCfg(flags, name="MuonNswSegmentFinderAlg",
73 MuonNswSegmentWriteKey = segmentContainers[-1],
74 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
75 CombinatorialReadKey = "MuonHoughNswMaxima"))
76
77 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
78 result.merge(MuonEtaHoughTransformAlgCfg(flags))
79 result.merge(MuonPhiHoughTransformAlgCfg(flags))
80 segmentContainers+=["R4MuonSegments"]
81
82 result.merge(MuonSegmentFittingAlgCfg(flags, OutSegmentContainer=segmentContainers[-1]))
83
84 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
85 result.merge(xAODSegmentCnvAlgCfg(flags, InSegmentKeys = segmentContainers))
86 if flags.Input.isMC:
87 from MuonTruthAlgsR4.MuonTruthAlgsConfig import RecoSegmentTruthAssocCfg
88 result.merge(RecoSegmentTruthAssocCfg(flags,
89 name="MuonSegmentsFromR4TruthMatching",
90 SegmentKey="MuonSegmentsFromR4"))
91 if flags.Muon.scheduleActsReco:
92 from MuonSegmentCnv.MuonSegmentCnvConfig import MuonR4SegmentCnvAlgCfg
93 result.merge(MuonR4SegmentCnvAlgCfg(flags,
94 ReadSegments = segmentContainers,
95 WriteKey="TrackMuonSegments"))
96 return result