ATLAS Offline Software
Loading...
Searching...
No Matches
TrackFindingConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4
5
6def SegmentSelectorCfg(flags, name="SegmentSelectionTool", **kwargs):
7 result = ComponentAccumulator()
8 the_tool = CompFactory.MuonR4.SegmentSelectionTool(name, **kwargs)
9 result.setPrivateTools(the_tool)
10 return result
11
12
13def MSExtrapolatorCfg(flags, name="MsExtrapolationTool", **kwargs):
14 kwargs.setdefault("MaxSteps", 10000)
15 kwargs.setdefault("InteractionEloss", flags.Acts.TrackingGeometry.MuonPassiveMaterial)
16 kwargs.setdefault("InteractionMultiScatering", flags.Acts.TrackingGeometry.MuonPassiveMaterial)
17 from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
18 return ActsExtrapolationToolCfg(flags, name, **kwargs)
19
20
21def MSTrackFitterCfg(flags, name="MSTrackFitTool", **kwargs):
22 result = ComponentAccumulator()
23 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
24 from MuonSpacePointCalibrator.CalibrationConfig import MuonSpacePointCalibratorCfg, \
25 TruthSpacePointCalibratorCfg
26 from ActsConfig.ActsConfigFlags import TrackFitterType
27 kwargs.setdefault("fitterKind", flags.Muon.TrackFitterType)
28 kwargs.setdefault("OutlierChi2Cut", 200000)
29 if False and flags.Input.isMC:
30 kwargs.setdefault("MuonCalibrationTool", result.popToolsAndMerge(TruthSpacePointCalibratorCfg(flags)))
31 kwargs.setdefault("MuonCalibrationTool", result.popToolsAndMerge(MuonSpacePointCalibratorCfg(flags)))
32
33 if kwargs["fitterKind"] == TrackFitterType.GlobalChiSquareFitter:
34 kwargs.setdefault("IncludeScattering", flags.Acts.TrackingGeometry.MuonPassiveMaterial)
35 kwargs.setdefault("IncludeELoss", flags.Acts.TrackingGeometry.MuonPassiveMaterial)
36 kwargs.setdefault("MaxPropagationStep", 1000000)
37 kwargs.setdefault("MaxSurfacesPerNavStep", 10000000)
38 kwargs.setdefault("DoFreeToBoundCorrection", True)
39 kwargs.setdefault("MaxIterations", 30)
40 elif kwargs["fitterKind"] == TrackFitterType.KalmanFitter:
41 kwargs.setdefault("UseDirectNavigation", False)
42
43
44 fitTool = result.popToolsAndMerge(ActsFitterCfg(flags, name=name, **kwargs))
45 result.setPrivateTools(fitTool)
46 return result
47
48def TrackSummaryToolCfg(flags, name="MuonTrackSummaryTool", **kwargs) :
49 result = ComponentAccumulator()
50 theTool = CompFactory.MuonR4.TrackSummaryTool(name, **kwargs)
51 result.setPrivateTools(theTool)
52 return result
53
54def TrackSummaryLockCfg(flags,inContainer="", fillHoles = True, fillOutliers = True, **kwargs):
55
56 summaryDecors = [ "innerSmallHits", "innerLargeHits",
57 "middleSmallHits", "middleLargeHits",
58 "outerSmallHits", "outerLargeHits",
59 "extendedSmallHits", "extendedLargeHits",
60 "innerTriggerEtaHits", "innerTriggerPhiHits",
61 "middleTriggerEtaHits", "middleTriggerPhiHits",
62 "outerTriggerEtaHits", "outerTriggerPhiHits"]
63 if fillHoles:
64 summaryDecors +=["innerSmallHoles", "innerLargeHoles",
65 "middleSmallHoles", "middleLargeHoles",
66 "outerSmallHoles", "outerLargeHoles",
67 "extendedSmallHoles", "extendedLargeHoles",
68 "innerTriggerEtaHoles", "innerTriggerPhiHoles",
69 "middleTriggerEtaHoles", "middleTriggerPhiHoles",
70 "outerTriggerEtaHoles", "outerTriggerPhiHoles" ]
71 if fillOutliers:
72 summaryDecors += ["innerClosePrecisionHits", "middleClosePrecisionHits",
73 "outerClosePrecisionHits", "extendedClosePrecisionHits"]
74
75
76 result = ComponentAccumulator()
77 kwargs.setdefault("Decorations", [f"{inContainer}.{decor}" for decor in summaryDecors])
78 the_alg= CompFactory.DerivationFramework.LockDecorations(name=f"MuonTrackSummaryLockAlg_{inContainer}", **kwargs)
79 result.addEventAlgo(the_alg, primary = True)
80 return result
81
82
83def TruthTrackSeedingToolCfg(flags, name = "TruthTrackSeedingTool", **kwargs):
84 result = ComponentAccumulator()
85 the_tool = CompFactory.MuonR4.TruthTrackSeederTool(name, **kwargs)
86 result.setPrivateTools(the_tool)
87 return result
88
89def MsTrackSeedingToolCfg(flags, name="MsTrackSeedingTool", **kwargs):
90 result = ComponentAccumulator()
91 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometrySvcCfg
92 result.merge(ActsTrackingGeometrySvcCfg(flags))
93
94 kwargs.setdefault("SegmentSelectionTool", result.popToolsAndMerge(SegmentSelectorCfg(flags)))
95 the_tool = CompFactory.MuonR4.MsTrackSeederTool(name, **kwargs)
96 result.setPrivateTools(the_tool)
97 return result
98
99def MSTrackFinderAlgCfg(flags, name="MSTrackFinderAlg", **kwargs):
100 result = ComponentAccumulator()
101 if not flags.Acts.TrackingGeometry.UseBlueprint:
102 raise RuntimeError("Cannot setup the track finding alg with Gen 1 geometry")
103 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
104 result.merge(AtlasFieldCacheCondAlgCfg(flags))
105 if False and flags.Input.isMC:
106 kwargs.setdefault("SeedingTool", result.popToolsAndMerge(TruthTrackSeedingToolCfg(flags)))
107 kwargs.setdefault("SeedingTool", result.popToolsAndMerge(MsTrackSeedingToolCfg(flags)))
108 kwargs.setdefault("FittingTool", result.popToolsAndMerge(MSTrackFitterCfg(flags)))
109 from MuonSpacePointCalibrator.CalibrationConfig import MuonSpacePointCalibratorCfg
110 kwargs.setdefault("Calibrator", result.popToolsAndMerge(MuonSpacePointCalibratorCfg(flags)))
111 kwargs.setdefault("SummaryTool", result.popToolsAndMerge(TrackSummaryToolCfg(flags)))
112 kwargs.setdefault("expressAtMsEntrance", flags.Muon.expressMsTrackAtEntrance)
113 kwargs.setdefault("ExtrapolationTool", result.popToolsAndMerge(MSExtrapolatorCfg(flags)))
114 the_alg = CompFactory.MuonR4.MsTrackFindingAlg(name, **kwargs)
115 result.addEventAlgo(the_alg, primary = True)
116 return result
117
118
119def StandaloneTrackPartCnvCfg(flags, name="MuonMsTrackParticleCnvR4", **kwargs):
120 from ActsConfig.ActsEventCnvConfig import ActsTrackToTrackParticleCnvAlgCfg
121 kwargs.setdefault("BeamSpotKey", "")
122 kwargs.setdefault("VertexContainerKey", "")
123 kwargs.setdefault("ACTSTracksLocation" ,["MuonMsTracks"])
124 kwargs.setdefault("TrackParticlesOutKey", "MuonMsTrackParticles")
125 kwargs.setdefault("PerigeeExpression", "DontRecalculate")
126 return ActsTrackToTrackParticleCnvAlgCfg(flags, name=name, **kwargs)
127
128def MuonActsToTrkConvCfg(flags, name="MuonActsToTrkConverterAlg", **kwargs):
129 result = ComponentAccumulator()
130 kwargs.setdefault('TrackParticles', "MuonMsTrackParticles")
131 kwargs.setdefault('OutTrackContainer', 'MsTracksTrkCnv')
132 from ActsConfig.ActsEventCnvConfig import xAODtoTrkConverterAlgCfg
133 result.merge(xAODtoTrkConverterAlgCfg(flags, name=name,
134 setupMuon = True, setupITk=False, **kwargs))
135 return result
136
137
MSTrackFinderAlgCfg(flags, name="MSTrackFinderAlg", **kwargs)
TrackSummaryToolCfg(flags, name="MuonTrackSummaryTool", **kwargs)
TruthTrackSeedingToolCfg(flags, name="TruthTrackSeedingTool", **kwargs)
StandaloneTrackPartCnvCfg(flags, name="MuonMsTrackParticleCnvR4", **kwargs)
MSExtrapolatorCfg(flags, name="MsExtrapolationTool", **kwargs)
MuonActsToTrkConvCfg(flags, name="MuonActsToTrkConverterAlg", **kwargs)
TrackSummaryLockCfg(flags, inContainer="", fillHoles=True, fillOutliers=True, **kwargs)
SegmentSelectorCfg(flags, name="SegmentSelectionTool", **kwargs)
MsTrackSeedingToolCfg(flags, name="MsTrackSeedingTool", **kwargs)
MSTrackFitterCfg(flags, name="MSTrackFitTool", **kwargs)