ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTrackingCnvConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured Tracking conversion algorithms
2
3Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4"""
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from TrkConfig.TrkConfigFlags import PerigeeExpression
8
9
12
13def TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", **kwargs):
14 if flags.Detector.GeometryITk:
15 name = name.replace("InDet", "ITk")
16 return ITkTrackCollectionCnvToolCfg(flags, name, **kwargs)
17
18 result = ComponentAccumulator()
19
20 if "TrackParticleCreator" not in kwargs:
21 from TrkConfig.TrkParticleCreatorConfig import (
22 TrackParticleCreatorToolCfg)
23 TrackParticleCreator = result.popToolsAndMerge(
24 TrackParticleCreatorToolCfg(flags))
25 result.addPublicTool(TrackParticleCreator)
26 kwargs.setdefault("TrackParticleCreator", TrackParticleCreator)
27
28 result.setPrivateTools(
29 CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs))
30 return result
31
32def ITkTrackCollectionCnvToolCfg(flags, name="ITkTrackCollectionCnvTool",
33 isActsAmbi: bool = False,
34 **kwargs):
35 result = ComponentAccumulator()
36
37 if "TrackParticleCreator" not in kwargs:
38 from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg
39 TrackParticleCreator = result.popToolsAndMerge(
40 ITkTrackParticleCreatorToolCfg(flags, RunningTIDE_Ambi = not isActsAmbi ))
41 result.addPublicTool(TrackParticleCreator)
42 kwargs.setdefault("TrackParticleCreator", TrackParticleCreator)
43
44 result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs))
45 return result
46
47def MuonTrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", **kwargs):
48 result = ComponentAccumulator()
49
50 if "TrackParticleCreator" not in kwargs:
51 from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg
52 TrackParticleCreator = result.popToolsAndMerge(
53 MuonCombinedParticleCreatorCfg(flags))
54 result.addPublicTool(TrackParticleCreator)
55 kwargs.setdefault("TrackParticleCreator", TrackParticleCreator)
56
57 result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs))
58 return result
59
60
63
64def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg",
65 ClusterSplitProbabilityName = "",
66 AssociationMapName = "",
67 **kwargs):
68 if flags.Detector.GeometryITk:
69 name = name.replace("InDet", "ITk")
70 return ITkTrackParticleCnvAlgCfg(flags, name,
71 ClusterSplitProbabilityName,
72 AssociationMapName,
73 **kwargs)
74
75 result = ComponentAccumulator()
76 kwargs.setdefault("ConvertTracks", True)
77 kwargs.setdefault("TrackContainerName", "CombinedInDetTracks")
78 kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "InDetTrackParticles")
79
80 if "TrackParticleCreator" not in kwargs:
81 from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg
82 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
83 TrackParticleCreatorToolCfg(
84 flags,
85 name = kwargs["xAODTrackParticlesFromTracksContainerName"] \
86 + "CreatorTool",
87 ClusterSplitProbabilityName = ClusterSplitProbabilityName,
88 AssociationMapName = AssociationMapName)))
89
90 if "TrackCollectionCnvTool" not in kwargs:
91 result.addPublicTool(kwargs["TrackParticleCreator"])
92 kwargs.setdefault("TrackCollectionCnvTool", result.popToolsAndMerge(
94 flags,
95 TrackParticleCreator = kwargs["TrackParticleCreator"])))
96
97 if flags.Tracking.doTruth:
98 kwargs.setdefault("TrackTruthContainerName",
99 kwargs["TrackContainerName"]+"TruthCollection")
100 kwargs.setdefault("AddTruthLink", True)
101 if "MCTruthClassifier" not in kwargs:
102 from MCTruthClassifier.MCTruthClassifierConfig import MCTruthClassifierCfg
103 kwargs.setdefault("MCTruthClassifier", result.popToolsAndMerge(
104 MCTruthClassifierCfg(flags)))
105 else:
106 kwargs.setdefault("AddTruthLink", False)
107
108 if flags.Tracking.perigeeExpression is PerigeeExpression.Vertex:
109 from AthenaConfiguration.Enums import ProductionStep
110 if flags.Common.ProductionStep is ProductionStep.MinbiasPreprocessing:
111 kwargs.setdefault("PrimaryVerticesName", f"{flags.Overlay.BkgPrefix}PrimaryVertices")
112 else:
113 kwargs.setdefault("PrimaryVerticesName", "PrimaryVertices")
114
115 result.addEventAlgo(CompFactory.xAODMaker.TrackParticleCnvAlg(name, **kwargs))
116 return result
117
118
119def TrigTrackParticleCnvAlgCfg(flags, name="TrigTrackParticleCnvAlg",
120 ClusterSplitProbabilityName = "",
121 AssociationMapName = "",
122 **kwargs):
123
124 if flags.Detector.GeometryITk:
125 name = name.replace("InDet", "ITk")
126 return TrigITkTrackParticleCnvAlgCfg(flags, name,
127 ClusterSplitProbabilityName,
128 AssociationMapName,
129 **kwargs)
130
131 kwargs.setdefault("ConvertTracks", True)
132 kwargs.setdefault("TrackContainerName", "CombinedInDetTracks")
133 kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "InDetTrackParticles")
134 kwargs.setdefault("AddTruthLink", False)
135
136 result = ComponentAccumulator()
137
138 if "TrackParticleCreator" not in kwargs:
139 from TrkConfig.TrkParticleCreatorConfig import InDetTrigParticleCreatorToolCfg, \
140 InDetTrigParticleCreatorToolTRTPidCfg
141
142 if flags.Tracking.ActiveConfig.electronPID:
143 partCreatorToolCfg = InDetTrigParticleCreatorToolTRTPidCfg
144 else:
145 partCreatorToolCfg = InDetTrigParticleCreatorToolCfg
146
147
148 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
149 partCreatorToolCfg(
150 flags,
151 name = kwargs["xAODTrackParticlesFromTracksContainerName"] + "CreatorTool",
152 ClusterSplitProbabilityName = ClusterSplitProbabilityName,
153 AssociationMapName = AssociationMapName)
154 ))
155
156 if "TrackCollectionCnvTool" not in kwargs:
157 result.addPublicTool(kwargs["TrackParticleCreator"])
158 kwargs.setdefault("TrackCollectionCnvTool", result.popToolsAndMerge(
160 flags,
161 TrackParticleCreator = kwargs["TrackParticleCreator"])))
162
163 #temporarily - move base methods to ActiveConfig
164 if flags.Tracking.ActiveConfig.perigeeExpression is PerigeeExpression.Vertex:
165 kwargs.setdefault("PrimaryVerticesName", "PrimaryVertices")
166 else:
167 kwargs.setdefault("PrimaryVerticesName", "")
168
169 result.merge(TrackParticleCnvAlgCfg(flags, name,
170 ClusterSplitProbabilityName,
171 AssociationMapName,
172 **kwargs)
173 )
174
175 return result
176
177
178def BeamLineTrackParticleCnvAlgCfg(flags, name="BeamLineTrackParticleCnvAlg",
179 ClusterSplitProbabilityName = "",
180 AssociationMapName = "",
181 **kwargs):
182 result = ComponentAccumulator()
183
184 if "TrackParticleCreator" not in kwargs:
185 from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg
186 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
187 TrackParticleCreatorToolCfg(
188 flags,
189 name="InDetxAODParticleCreatorToolBeamLine",
190 ClusterSplitProbabilityName = ClusterSplitProbabilityName,
191 AssociationMapName = AssociationMapName,
192 PerigeeExpression = "BeamLine")))
193
194 if flags.Tracking.perigeeExpression is PerigeeExpression.Vertex:
195 kwargs.setdefault("PrimaryVerticesName", "")
196
197 result.merge(TrackParticleCnvAlgCfg(flags, name, **kwargs))
198 return result
199
201 ClusterSplitProbabilityName = "",
202 AssociationMapName = "",
203 **kwargs):
204 result = ComponentAccumulator()
205
206 if "TrackParticleCreator" not in kwargs:
207 from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolPIDCheckCfg
208 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
209 TrackParticleCreatorToolPIDCheckCfg(
210 flags,
211 name = kwargs["xAODTrackParticlesFromTracksContainerName"] \
212 + "CreatorTool",
213 ClusterSplitProbabilityName = ClusterSplitProbabilityName,
214 AssociationMapName = AssociationMapName)))
215
216 result.merge(TrackParticleCnvAlgCfg(flags, name, **kwargs))
217 return result
218
220 ClusterSplitProbabilityName = "",
221 AssociationMapName = "",
222 **kwargs):
223 result = ComponentAccumulator()
224
225 if "TrackParticleCreator" not in kwargs:
226 from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolNoPIDCfg
227 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
228 TrackParticleCreatorToolNoPIDCfg(
229 flags,
230 name = kwargs["xAODTrackParticlesFromTracksContainerName"] \
231 + "CreatorTool",
232 ClusterSplitProbabilityName = ClusterSplitProbabilityName,
233 AssociationMapName = AssociationMapName)))
234
235 result.merge(TrackParticleCnvAlgCfg(flags, name,
236 ClusterSplitProbabilityName,
237 AssociationMapName, **kwargs))
238 return result
239
240def ObserverTrackParticleCnvAlgCfg(flags, name="ObserverTrackParticleCnvAlg",
241 ClusterSplitProbabilityName = "",
242 AssociationMapName = "",
243 **kwargs):
244 kwargs.setdefault("TrackContainerName", "ObservedTracksCollection")
245 kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "InDetObservedTrackParticles")
246 kwargs.setdefault("AugmentObservedTracks", True)
247 kwargs.setdefault("TracksMapName", "ObservedTracksCollectionMap")
248
249 return TrackParticleCnvAlgCfg(flags, name, ClusterSplitProbabilityName, AssociationMapName, **kwargs)
250
251def ITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg",
252 ClusterSplitProbabilityName = "",
253 AssociationMapName = "",
254 isActsAmbi: bool = False,
255 **kwargs):
256 result = ComponentAccumulator()
257
258 kwargs.setdefault("ConvertTracks", True)
259 kwargs.setdefault("TrackContainerName", "CombinedITkTracks")
260 kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "InDetTrackParticles")
261 if flags.Tracking.perigeeExpression is PerigeeExpression.Vertex:
262 kwargs.setdefault('PrimaryVerticesName', 'PrimaryVertices')
263
264 if "TrackParticleCreator" not in kwargs:
265 from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg
266 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
267 ITkTrackParticleCreatorToolCfg(
268 flags,
269 name = kwargs["xAODTrackParticlesFromTracksContainerName"] \
270 + "CreatorTool",
271 ClusterSplitProbabilityName = ClusterSplitProbabilityName if not isActsAmbi else "",
272 AssociationMapName = AssociationMapName)))
273
274 if "TrackCollectionCnvTool" not in kwargs:
275 result.addPublicTool(kwargs["TrackParticleCreator"])
276 kwargs.setdefault("TrackCollectionCnvTool", result.popToolsAndMerge(
278 flags,
279 TrackParticleCreator = kwargs["TrackParticleCreator"],
280 isActsAmbi = isActsAmbi)))
281
282 if flags.Tracking.doTruth:
283 kwargs.setdefault("TrackTruthContainerName",
284 kwargs["TrackContainerName"]+"TruthCollection")
285 kwargs.setdefault("AddTruthLink", True)
286 if "MCTruthClassifier" not in kwargs:
287 from MCTruthClassifier.MCTruthClassifierConfig import MCTruthClassifierCfg
288 kwargs.setdefault("MCTruthClassifier", result.popToolsAndMerge(
289 MCTruthClassifierCfg(flags)))
290 else:
291 kwargs.setdefault("AddTruthLink", False)
292
293 result.addEventAlgo(CompFactory.xAODMaker.TrackParticleCnvAlg(name, **kwargs))
294 return result
295
296def TrigITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg",
297 ClusterSplitProbabilityName = "",
298 AssociationMapName = "",
299 isActsAmbi: bool = False,
300 **kwargs):
301 result = ComponentAccumulator()
302
303 kwargs.setdefault("ConvertTracks", True)
304 kwargs.setdefault("TrackContainerName", "CombinedITkTracks")
305 kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "InDetTrackParticles")
306
307 if flags.Tracking.ActiveConfig.perigeeExpression is PerigeeExpression.Vertex:
308 kwargs.setdefault('PrimaryVerticesName', 'PrimaryVertices')
309
310 if "TrackParticleCreator" not in kwargs:
311 from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg
312 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
313 ITkTrackParticleCreatorToolCfg(
314 flags,
315 name = kwargs["xAODTrackParticlesFromTracksContainerName"] \
316 + "CreatorTool",
317 ClusterSplitProbabilityName = ClusterSplitProbabilityName if not isActsAmbi else "",
318 AssociationMapName = AssociationMapName)))
319
320 if "TrackCollectionCnvTool" not in kwargs:
321 result.addPublicTool(kwargs["TrackParticleCreator"])
322 kwargs.setdefault("TrackCollectionCnvTool", result.popToolsAndMerge(
324 flags,
325 TrackParticleCreator = kwargs["TrackParticleCreator"],
326 isActsAmbi = isActsAmbi)))
327
328 if flags.Tracking.ActiveConfig.doTruth:
329 kwargs.setdefault("TrackTruthContainerName",
330 kwargs["TrackContainerName"]+"TruthCollection")
331 kwargs.setdefault("AddTruthLink", True)
332 if "MCTruthClassifier" not in kwargs:
333 from MCTruthClassifier.MCTruthClassifierConfig import MCTruthClassifierCfg
334 kwargs.setdefault("MCTruthClassifier", result.popToolsAndMerge(
335 MCTruthClassifierCfg(flags)))
336 else:
337 kwargs.setdefault("AddTruthLink", False)
338
339 result.addEventAlgo(CompFactory.xAODMaker.TrackParticleCnvAlg(name, **kwargs))
340 return result
341
342def MuonStandaloneTrackParticleCnvAlgCfg(flags, name = "MuonStandaloneTrackParticleCnvAlg",**kwargs):
343 from TrkConfig.TrkParticleCreatorConfig import MuonParticleCreatorToolCfg
344 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
345
346 result=ComponentAccumulator()
347 result.merge(BeamSpotCondAlgCfg(flags))
348
349 muonparticlecreatortool = result.popToolsAndMerge(MuonParticleCreatorToolCfg(flags))
350 result.addPublicTool(muonparticlecreatortool) # Public in TrackCollectionCnvTool
351
352 kwargs.setdefault("TrackParticleCreator", muonparticlecreatortool)
353 muontrackcollectioncnvtool = result.popToolsAndMerge(
354 MuonTrackCollectionCnvToolCfg(flags, TrackParticleCreator = muonparticlecreatortool))
355 kwargs.setdefault("TrackCollectionCnvTool", muontrackcollectioncnvtool)
356
357 kwargs.setdefault("TrackContainerName", "MuonSpectrometerTracks")
358 kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", "MuonSpectrometerTrackParticles")
359 kwargs.setdefault("xAODTruthLinkVector", "")
360 kwargs.setdefault("ConvertTracks", True)
361 kwargs.setdefault("AddTruthLink", False)
362
363 result.addEventAlgo(CompFactory.xAODMaker.TrackParticleCnvAlg(name, **kwargs))
364 return result
ObserverTrackParticleCnvAlgCfg(flags, name="ObserverTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", **kwargs)
TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", **kwargs)
TrackParticleCnvAlg.
MuonTrackCollectionCnvToolCfg(flags, name="MuonTrackCollectionCnvTool", **kwargs)
TrigTrackParticleCnvAlgCfg(flags, name="TrigTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", **kwargs)
TrigITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", bool isActsAmbi=False, **kwargs)
BeamLineTrackParticleCnvAlgCfg(flags, name="BeamLineTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", **kwargs)
ITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", bool isActsAmbi=False, **kwargs)
TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", **kwargs)
TrackCollectionCnvTool.
TrackParticleCnvAlgPIDCheckCfg(flags, name, ClusterSplitProbabilityName="", AssociationMapName="", **kwargs)
ITkTrackCollectionCnvToolCfg(flags, name="ITkTrackCollectionCnvTool", bool isActsAmbi=False, **kwargs)
MuonStandaloneTrackParticleCnvAlgCfg(flags, name="MuonStandaloneTrackParticleCnvAlg", **kwargs)
TrackParticleCnvAlgNoPIDCfg(flags, name, ClusterSplitProbabilityName="", AssociationMapName="", **kwargs)