ATLAS Offline Software
Loading...
Searching...
No Matches
MuonFastReconstructionConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5
6def MuonFastReconstructionAlgCfg(flags, name = "MuonFastReconstructionAlg", **kwargs):
7 result = ComponentAccumulator()
8 # Set defaults input space point containers
9 SpacePointContainers = ["MuonSpacePoints"]
10 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
11 SpacePointContainers += ["NswSpacePoints"]
12 kwargs.setdefault("InSpacePoints", SpacePointContainers)
13 # Set SP calibrator tool
14 from MuonSpacePointCalibrator.CalibrationConfig import MuonSpacePointCalibratorCfg
15 kwargs.setdefault("Calibrator", result.popToolsAndMerge(MuonSpacePointCalibratorCfg(flags)))
16
17 kwargs.setdefault("MinBendingTriggerLayers", 1)
18 kwargs.setdefault("MinBendingPrecisionLayers", 8)
19 kwargs.setdefault("MinPhiLayers", 1)
20
21 from MuonTrackFindingAlgs.TrackFindingConfig import MsTrackSeedingToolCfg
22 kwargs.setdefault("SeedingTool", result.popToolsAndMerge(MsTrackSeedingToolCfg(flags)))
23
24 theAlg = CompFactory.MuonR4.FastReconstructionAlg(name, **kwargs)
25 result.addEventAlgo(theAlg, primary=True)
26 return result
27
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
MuonFastReconstructionAlgCfg(flags, name="MuonFastReconstructionAlg", **kwargs)