ATLAS Offline Software
Loading...
Searching...
No Matches
MuonPatternRecognitionConfig.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
6
7def MuonPhiHoughTransformAlgCfg(flags, name = "MuonPhiHoughTransformAlg", **kwargs):
8 result = ComponentAccumulator()
9 kwargs.setdefault("downWeightPrdMultiplicity", True)
10 theAlg = CompFactory.MuonR4.PhiHoughTransformAlg(name, **kwargs)
11 result.addEventAlgo(theAlg, primary=True)
12 return result
13
14
15def MuonNSWSegmentFinderAlgCfg(flags, name = "MuonNswSegmentFinderAlg", **kwargs):
16 result = ComponentAccumulator()
17 from MuonSpacePointCalibrator.CalibrationConfig import MuonSpacePointCalibratorCfg
18 calibrator_kwargs = {}
19 if flags.Input.isMC:
20 #See !90511, possibility to adjust precision strips with sTgcPrecCoordErrorScale and both eta and stereo MMG with mmStripErrorScale
21 calibrator_kwargs["sTgcNonPrecCoordErrorScale"] = 4.
22
23 kwargs.setdefault("Calibrator", result.popToolsAndMerge(MuonSpacePointCalibratorCfg(flags, **calibrator_kwargs)))
24 theAlg = CompFactory.MuonR4.NswSegmentFinderAlg(name, **kwargs)
25 result.addEventAlgo(theAlg, primary=True)
26 return result
27
28
29def MuonEtaHoughTransformAlgCfg(flags, name = "MuonEtaHoughTransformAlg", **kwargs):
30 result = ComponentAccumulator()
31 kwargs.setdefault("downWeightPrdMultiplicity", True)
32 theAlg = CompFactory.MuonR4.EtaHoughTransformAlg(name, **kwargs)
33 result.addEventAlgo(theAlg, primary=True)
34 return result
35
36def MuonSegmentFittingAlgCfg(flags, name = "MuonSegmentFittingAlg", **kwargs):
37 result = ComponentAccumulator()
38 from MuonSpacePointCalibrator.CalibrationConfig import MuonSpacePointCalibratorCfg
39 kwargs.setdefault("Calibrator", result.popToolsAndMerge(MuonSpacePointCalibratorCfg(flags)))
40 kwargs.setdefault("ResoSeedHitAssoc", 5. )
41 kwargs.setdefault("RecoveryPull", 3.)
42 # Configure T0 fitting, disabled by default
43 kwargs.setdefault("fitSegmentT0", False)
44 if kwargs.get("fitSegmentT0"):
45 kwargs.setdefault("useHessianResidual", True)
46 kwargs.setdefault("recalibInFit", True)
47 kwargs.setdefault("maxIterations", 400)
48 # temporarily disable beamspot constraint when fitting T0, as it causes FPEs
49 kwargs.setdefault("doBeamspotConstraint", False)
50 # Configure pre-fitting, disabled by default
51 kwargs.setdefault("useFastPreFitter", False)
52 if kwargs.get("useFastPreFitter"):
53 kwargs.setdefault("useFastFitter", True)
54 # Configure main (full) fitting
55 kwargs.setdefault("useFastFitter", False)
56 kwargs.setdefault("recalibInFit", False)
57 kwargs.setdefault("doBeamspotConstraint", True)
58 theAlg = CompFactory.MuonR4.SegmentFittingAlg(name, **kwargs)
59 result.addEventAlgo(theAlg, primary=True)
60 return result
61
62def ActsMuonSegmentRefitAlgCfg(flags,name="ActsMuonSegmentRefitAlg", **kwargs):
63 result = ComponentAccumulator()
64 from MuonTrackFindingAlgs.TrackFindingConfig import SegmentSelectorCfg
65 kwargs.setdefault("SegmentSelectionTool", result.popToolsAndMerge(SegmentSelectorCfg(flags)))
66 from MuonSpacePointCalibrator.CalibrationConfig import MuonSpacePointCalibratorCfg
67 kwargs.setdefault("Calibrator", result.popToolsAndMerge(MuonSpacePointCalibratorCfg(flags)))
68 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometrySvcCfg
69 result.merge(ActsTrackingGeometrySvcCfg(flags))
70 kwargs.setdefault("SegmentContainer", "MuonSegmentsFromR4")
71 theAlg = CompFactory.MuonR4.SegmentActsRefitAlg(name, **kwargs)
72 result.addEventAlgo(theAlg, primary = True)
73 return result
74
75
76def MuonPatternRecognitionCfg(flags, suffix = ""):
77 result = ComponentAccumulator()
78 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
79 result.merge(ActsGeometryContextAlgCfg(flags))
80
81 if flags.Muon.enableMLBucketFilter:
82 from MuonInference.InferenceConfig import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
83 bucketTool = result.popToolsAndMerge(GraphBucketFilterToolCfg(flags))
84 result.merge(GraphInferenceAlgCfg(flags,
85 name = f"GraphInferenceAlg{suffix}",
86 InferenceTools=[bucketTool]))
87
88 segmentContainers = []
89 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
90 segmentContainers+=["MuonNswSegments"]
91 result.merge(MuonEtaHoughTransformAlgCfg(flags, name=f"MuonNswEtaHoughTransformAlg{suffix}",
92 EtaHoughMaxContainer = "MuonHoughNswMaxima",
93 SpacePointContainer = "NswSpacePoints"))
94 result.merge(MuonNSWSegmentFinderAlgCfg(flags, name=f"MuonNswSegmentFinderAlg{suffix}",
95 MuonNswSegmentWriteKey = segmentContainers[-1],
96 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
97 CombinatorialReadKey = "MuonHoughNswMaxima"))
98
99 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
100 if flags.Muon.enableMLBucketFilter:
101 result.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}",
102 SpacePointContainer = "FilteredMlBuckets"))
103 else:
104 result.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}"))
105 result.merge(MuonPhiHoughTransformAlgCfg(flags, name = f"MuonPhiHoughTransformAlg{suffix}"))
106 segmentContainers+=["R4MuonSegments"]
107
108 result.merge(MuonSegmentFittingAlgCfg(flags,
109 name = f"MuonSegmentFittingAlg{suffix}",
110 OutSegmentContainer=segmentContainers[-1]))
111
112 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
113 result.merge(xAODSegmentCnvAlgCfg(flags, name = f"MuonR4xAODSegmentCnvAlg{suffix}", InSegmentKeys = segmentContainers))
114 if flags.Muon.setupTruthAlgorithms:
115 from MuonTruthAlgsR4.MuonTruthAlgsConfig import RecoSegmentTruthAssocCfg
116 result.merge(RecoSegmentTruthAssocCfg(flags,
117 name=f"MuonSegmentsFromR4TruthMatching{suffix}",
118 SegmentKey="MuonSegmentsFromR4"))
119 return result
ActsMuonSegmentRefitAlgCfg(flags, name="ActsMuonSegmentRefitAlg", **kwargs)
MuonPhiHoughTransformAlgCfg(flags, name="MuonPhiHoughTransformAlg", **kwargs)
MuonPatternRecognitionCfg(flags, suffix="")
Main config fragment for pattern recognition.
MuonSegmentFittingAlgCfg(flags, name="MuonSegmentFittingAlg", **kwargs)
MuonNSWSegmentFinderAlgCfg(flags, name="MuonNswSegmentFinderAlg", **kwargs)
MuonEtaHoughTransformAlgCfg(flags, name="MuonEtaHoughTransformAlg", **kwargs)