28def PatternRecognitionFromFastRecoCfg(flags, suffix = ""):
29 result = ComponentAccumulator()
30 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
31 result.merge(ActsGeometryContextAlgCfg(flags))
32
33 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig import MuonEtaHoughTransformAlgCfg, MuonNSWSegmentFinderAlgCfg, MuonPhiHoughTransformAlgCfg, MuonSegmentFittingAlgCfg
34 segmentContainers = []
35 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
36 segmentContainers+=["MuonNswSegments"]
37 result.merge(MuonEtaHoughTransformAlgCfg(flags, name=f"MuonNswEtaHoughTransformAlg{suffix}",
38 EtaHoughMaxContainer = "MuonHoughNswMaxima",
39 SpacePointContainer = "NswSpacePointsFastReco"))
40 result.merge(MuonNSWSegmentFinderAlgCfg(flags, name=f"MuonNswSegmentFinderAlg{suffix}",
41 MuonNswSegmentWriteKey = segmentContainers[-1],
42 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
43 CombinatorialReadKey = "MuonHoughNswMaxima"))
44
45 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
46 result.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}",
47 SpacePointContainer = "MuonSpacePointsFastReco"))
48 result.merge(MuonPhiHoughTransformAlgCfg(flags, name = f"MuonPhiHoughTransformAlg{suffix}"))
49 segmentContainers+=["R4MuonSegments"]
50
51 result.merge(MuonSegmentFittingAlgCfg(flags,
52 name = f"MuonSegmentFittingAlg{suffix}",
53 OutSegmentContainer=segmentContainers[-1]))
54
55 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
56 result.merge(xAODSegmentCnvAlgCfg(flags, name = f"MuonR4xAODSegmentCnvAlg{suffix}", InSegmentKeys = segmentContainers))
57 if flags.Muon.setupTruthAlgorithms:
58 from MuonTruthAlgsR4.MuonTruthAlgsConfig import RecoSegmentTruthAssocCfg
59 result.merge(RecoSegmentTruthAssocCfg(flags,
60 name=f"MuonSegmentsFromR4TruthMatching{suffix}",
61 SegmentKey="MuonSegmentsFromR4"))
62 if flags.Muon.scheduleActsReco:
63 from MuonSegmentCnv.MuonSegmentCnvConfig import MuonR4SegmentCnvAlgCfg
64 result.merge(MuonR4SegmentCnvAlgCfg(flags,
65 name=f"MuonR4SegmentCnvAlg{suffix}",
66 ReadSegments = segmentContainers,
67 WriteKey="TrackMuonSegments"))
68 return result