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