ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrackFindingInDetConfig.py
Go to the documentation of this file.
2# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from ActsConfig.ActsConfigFlags import SeedingStrategy
7import AthenaCommon.SystemOfUnits as Units
8from ActsInterop import UnitConstants
9
10# Tools
11
12def isdet(flags,
13 *,
14 pixel: list = None,
15 strip: list = None,
16 noStrip: bool = False) -> list:
17 keys = []
18 if flags.Detector.EnablePixel and pixel is not None:
19 keys += pixel
20 if flags.Detector.EnableSCT and strip is not None and not noStrip:
21 keys += strip
22
23 return keys
24
25def seedOrder(flags,
26 *,
27 pixel: list = None,
28 strip: list = None) -> list:
29 keys = isdet(flags, pixel=pixel, strip=strip)
30 if flags.Acts.useStripSeedsFirst:
31 keys.reverse()
32 return keys
33
35 name: str = "ActsInDetTrackStatePrinterTool",
36 **kwargs) -> ComponentAccumulator:
37 acc = ComponentAccumulator()
38
39 kwargs.setdefault("InputSpacePoints", isdet(flags, noStrip=False,
40 pixel=['PixelSpacePoints'],
41 strip=['SCT_SpacePoints', 'OverlapSpacePoints']))
42
43 if 'TrackingGeometryTool' not in kwargs:
44 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
45 kwargs.setdefault(
46 "TrackingGeometryTool",
47 acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)),
48 )
49
50 acc.setPrivateTools(CompFactory.ActsTrk.TrackStatePrinterTool(name, **kwargs))
51 return acc
52
53# ACTS only algorithm
54
56 name: str = "ActsTrackFindingAlg",
57 **kwargs) -> ComponentAccumulator:
58 def tolist(c):
59 return c if isinstance(c, list) else [c]
60
61 acc = ComponentAccumulator()
62
63 from ActsConfig.ActsGeometryConfig import ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg
64
65 acc.merge( ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg(flags) )
66 kwargs.setdefault("ActsVolumeIdToDetectorElementCollectionMapKey", "VolumeIdToDetectorElementCollectionMap")
67
68 if flags.Detector.EnablePixel:
69 from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDetectorElementStatusAlgCfg
70 acc.merge(PixelDetectorElementStatusAlgCfg(flags))
71 if flags.Detector.EnableSCT:
72 from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConfig import SCT_DetectorElementStatusAlgCfg
73 acc.merge(SCT_DetectorElementStatusAlgCfg(flags))
74 kwargs.setdefault("DetElStatus", seedOrder(flags, pixel=["PixelDetectorElementStatus"], strip=["SCTDetectorElementStatus"]))
75
76 # Seed labels and collections.
77 # These 3 lists must match element for element, reversed if flags.Acts.useStripSeedsFirst is True.
78 # Maybe it is best to start with strips where the occupancy is lower.
79 kwargs.setdefault("SeedLabels", seedOrder(flags, pixel=["PPP"], strip=["SSS"]))
80 kwargs.setdefault("SeedContainerKeys", seedOrder(flags, pixel=["ActsPixelSeeds"], strip=["ActsSCT_Seeds"]))
81 kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=['PixelDetectorElementCollection'], strip=['SCT_DetectorElementCollection']))
82 if flags.Acts.Tracks.doAnalysis:
83 kwargs.setdefault("SeedDestiny", [f'{seedkey}Destiny' for seedkey in kwargs["SeedContainerKeys"]])
84
85 kwargs.setdefault("UncalibratedMeasurementContainerKeys", isdet(flags, pixel=["PixelClusters"], strip=["SCT_Clusters"]))
86
87 kwargs.setdefault('ACTSTracksLocation', 'ActsTracks')
88
89 kwargs.setdefault("maxPropagationStep", 10000)
90 kwargs.setdefault("skipDuplicateSeeds", True)# flags.Acts.skipDuplicateSeeds
91 kwargs.setdefault("seedMeasOffset", 1)
92
93 # Ambi strategy 0 means do the ambiguity resolution outside the track finding.
94 kwargs.setdefault("ambiStrategy", flags.Acts.AmbiguitySolverMode.value)
95
96 if (not flags.Acts.doAmbiguityResolution) :
97 kwargs.setdefault("MaximumSharedHits", 3)
98 kwargs.setdefault("MaximumIterations", 10000)
99 kwargs.setdefault("NMeasurementsMin", 7)
100
101 kwargs.setdefault("refitSeeds", seedOrder(flags, pixel=[False], strip=[False]))
102 kwargs.setdefault("doTwoWay", flags.Acts.doTwoWayCKF)
103 kwargs.setdefault("inflateCovarianceTwoWay", True)
104 kwargs.setdefault("twoWayinflateCovarianceFactor", 100.0)
105 kwargs.setdefault("autoReverseSearch", flags.Tracking.ActiveConfig.autoReverseSearch)
106 # kwargs.setdefault("useTopSpRZboundary",[ 229.0 * UnitConstants.mm, 450.0 * UnitConstants.mm])
107
108 # forceTrackOnSeed isn't effective with secondary passes, which will have removed most/all of the seed measurements from the measurement containers.
109 kwargs.setdefault("forceTrackOnSeed", flags.Acts.forceTrackOnSeed and not flags.Tracking.ActiveConfig.isSecondaryPass)
110
111 # Borrow many settings from flags.Tracking.ActiveConfig, normally initialised in createITkTrackingPassFlags() at
112 # https://gitlab.cern.ch/atlas/athena/-/blob/main/Tracking/TrkConfig/python/TrackingPassFlags.py#L121
113
114 # bins in |eta|, used for both MeasurementSelectorConfig and TrackSelector::EtaBinnedConfig
115 kwargs.setdefault("etaBins", flags.Tracking.ActiveConfig.etaBins) #
116 # new default chi2 cuts optimise efficiency vs speed. Set same value as Athena's Xi2maxNoAdd.
117 kwargs.setdefault("chi2CutOff", tolist(flags.Tracking.ActiveConfig.Xi2max*1))
118 kwargs.setdefault("chi2OutlierCutOff", tolist(flags.Tracking.ActiveConfig.Xi2maxNoAdd*1))
119 kwargs.setdefault("checkCounts", True)
120 kwargs.setdefault("doBranchStopper", True)
121
122 kwargs.setdefault("branchStopperPtMinFactor", 0.9)
123 kwargs.setdefault("branchStopperAbsEtaMaxExtra", 0.1)
124
125 # Loosen the requirement on the minimum number of measurements on track candidate
126 # during track finding for tracks above a certain eta
127 kwargs.setdefault("branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
128 kwargs.setdefault("branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
129
130 kwargs.setdefault("numMeasurementsCutOff", [1])
131
132 # there is always an over and underflow bin so the first bin will be 0. - 0.5 the last bin 3.5 - inf.
133 # if all eta bins are >=0. the counter will be categorized by abs(eta) otherwise eta
134 kwargs.setdefault("StatisticEtaBins", [eta/10. for eta in range(5, 40, 5)]) # eta 0.0 - 4.0 in steps of 0.5
135
136 kwargs.setdefault("absEtaMax", flags.Tracking.ActiveConfig.maxEta)
137 kwargs.setdefault("ptMin", [p / Units.GeV * UnitConstants.GeV for p in tolist(flags.Tracking.ActiveConfig.minPT)])
138 # z0 cut is the same for all eta bins. I use the size of the eta bins limits minus one to find the number of bins.
139 kwargs.setdefault("z0Min", [-flags.Tracking.ActiveConfig.maxZImpact / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
140 kwargs.setdefault("z0Max", [ flags.Tracking.ActiveConfig.maxZImpact / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
141 kwargs.setdefault("d0Min", [-d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpactList)])
142 kwargs.setdefault("d0Max", [ d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpactList)])
143 kwargs.setdefault("minMeasurements", tolist([ 8, 8, 8]))
144 kwargs.setdefault("maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
145 kwargs.setdefault("minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
146 kwargs.setdefault("maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
147 kwargs.setdefault("maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
148 # The shared hits are not calculated until *after* the track selection, so maxSharedHits is not used.
149 # Even if that were not the case, we need the ambiguity solver to decide which track to drop.
150
151
152 # GBTS produces much purer seeds, so the branch stopper selections aren't needed with GBTS seeds.
153 if flags.Acts.SeedingStrategy is not SeedingStrategy.Gbts:
154 kwargs.setdefault("ptMinMeasurements", seedOrder(flags, pixel=[3], strip=[6]))
155 kwargs.setdefault("absEtaMaxMeasurements", seedOrder(flags, pixel=[3], strip=[999999]))
156
157 if 'TrackingGeometryTool' not in kwargs:
158 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
159 kwargs.setdefault(
160 "TrackingGeometryTool",
161 acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)),
162 )
163
164 if 'ATLASConverterTool' not in kwargs:
165 from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
166 kwargs.setdefault('ATLASConverterTool', acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
167
168 if 'TrackParamsEstimationTool' not in kwargs:
169 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
170 kwargs.setdefault('TrackParamsEstimationTool', acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags)))
171
172 if 'ExtrapolationTool' not in kwargs:
173 from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
174 kwargs.setdefault(
175 "ExtrapolationTool",
176 acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=10000)),
177 )
178
179 if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
180 kwargs.setdefault(
181 "TrackStatePrinter",
182 acc.popToolsAndMerge(ActsInDetTrackStatePrinterToolCfg(flags)),
183 )
184
185 if 'FitterTool' not in kwargs:
186 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
187 kwargs.setdefault(
188 'FitterTool',
189 acc.popToolsAndMerge(ActsFitterCfg(flags,
190 ReverseFilteringPt=0,
191 OutlierChi2Cut=float('inf')))
192 )
193
194 # !!! Calibrator is not used for Inner Detector yet
195 if 'PixelCalibrator' not in kwargs:
196 from AthenaConfiguration.Enums import BeamType
197
198 if not (flags.Beam.Type is BeamType.Cosmics):
199 from ActsConfig.ActsConfigFlags import PixelCalibrationStrategy
200 from ActsConfig.ActsMeasurementCalibrationConfig import ActsAnalogueClusteringToolCfg
201
202 if flags.Acts.PixelCalibrationStrategy in (PixelCalibrationStrategy.AnalogueClustering,
203 PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
204
205 kwargs.setdefault(
206 'PixelCalibrator',
207 acc.popToolsAndMerge(ActsAnalogueClusteringToolCfg(flags,
208 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
209 )
210 # !!! Calibrator is not used for Inner Detector yet
211 if 'StripCalibrator' not in kwargs:
212 from AthenaConfiguration.Enums import BeamType
213 if not (flags.Beam.Type is BeamType.Cosmics):
214 from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
215 from ActsConfig.ActsConfigFlags import StripCalibrationStrategy
216
217 if flags.Acts.StripCalibrationStrategy in (StripCalibrationStrategy.DigitalCalibration,
218 StripCalibrationStrategy.DigitalCalibrationAfterSelection) :
219
220 kwargs.setdefault(
221 'StripCalibrator',
222 acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags,
223 CalibrateAfterMeasurementSelection = flags.Acts.StripCalibrationStrategy is StripCalibrationStrategy.DigitalCalibrationAfterSelection))
224 )
225
226 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
227 from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
228 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
229 ActsTrackFindingMonitoringToolCfg(flags)))
230
231 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
232 return acc
233
234
235
237 **kwargs) -> ComponentAccumulator:
238 acc = ComponentAccumulator()
239
240 # Define Uncalibrated Measurement keys
241 dataPrepPrefix = f'{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}'
242 if not flags.Tracking.ActiveConfig.isSecondaryPass:
243 dataPrepPrefix = ''
244 pixelClusters = f'{dataPrepPrefix}PixelClusters'
245 stripClusters = f'{dataPrepPrefix}SCT_Clusters'
246 # If cache is activated the keys have "_Cached" as postfix
247 if flags.Acts.useCache:
248 pixelClusters += '_Cached'
249 stripClusters += '_Cached'
250 # Consider case detectors are not active
251
252 # Understand what are the seeds we need to consider
253 pixelSeedLabels = ['PPP']
254 stripSeedLabels = ['SSS']
255
256 # Consider if pixel seeds and SCT seeds are needed, for the moment, both are kept for Inner Detector
257
258 # Now set the seed and estimated parameters keys accordingly
259 pixelSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}PixelSeeds']
260 stripSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}SCT_Seeds']
261 pixelDetElements = ['PixelDetectorElementCollection']
262 stripDetElements = ['SCT_DetectorElementCollection']
263 if pixelSeedLabels is None:
264 pixelSeedKeys = None
265 pixelDetElements = None
266 if stripSeedLabels is None:
267 stripSeedKeys = None
268 stripDetElements = None
269
270 kwargs.setdefault('ACTSTracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
271 kwargs.setdefault('UncalibratedMeasurementContainerKeys', isdet(flags, pixel=[pixelClusters], strip=[stripClusters]))
272 kwargs.setdefault('SeedLabels', seedOrder(flags, pixel=pixelSeedLabels, strip=stripSeedLabels))
273 kwargs.setdefault('SeedContainerKeys', seedOrder(flags, pixel=pixelSeedKeys, strip=stripSeedKeys))
274 kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=pixelDetElements, strip=stripDetElements))
275
276 acc.merge(ActsInDetMainTrackFindingAlgCfg(flags,
277 name=f"{flags.Tracking.ActiveConfig.extension}TrackFindingAlg",
278 **kwargs))
279
280 # # Analysis extensions
281 # if flags.Acts.Tracks.doAnalysis:
282 # from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
283 # acc.merge(ActsTrackAnalysisAlgCfg(flags,
284 # name=f"{flags.Tracking.ActiveConfig.extension}TrackAnalysisAlg",
285 # TracksLocation=f"{flags.Tracking.ActiveConfig.extension}Tracks"))
286
287 # # Seed To Track Monitoring
288 # if len(kwargs["SeedContainerKeys"]) != len(kwargs["DetectorElementsKeys"]):
289 # raise AttributeError("SeedContainerKeys and DetectorElementsKeys must have same size")
290
291 # for i in range(0, len(kwargs["SeedContainerKeys"])):
292 # seedKey = kwargs["SeedContainerKeys"][i]
293 # detElKey = kwargs["DetectorElementsKeys"][i]
294
295 # # make seed params
296 # from ActsConfig.ActsAnalysisConfig import ActsBaseSeedsToTrackParamsAlgCfg
297 # acc.merge(ActsBaseSeedsToTrackParamsAlgCfg(flags,
298 # name = f'{seedKey}SeedsToTrackParamsAlg',
299 # InputSeedContainerKey = seedKey,
300 # DetectorElementsKey = detElKey,
301 # OutputTrackParamsCollectionKey = f'{seedKey}Params'))
302
303 # from ActsConfig.ActsAnalysisConfig import ActsSeedToTrackAnalysisAlgCfg
304 # acc.merge(ActsSeedToTrackAnalysisAlgCfg(flags,
305 # name = f'{seedKey}ToTrackAnalysisAlg',
306 # InputSeedCollection = seedKey,
307 # InputTrackParamsCollection = f'{seedKey}Params',
308 # InputDestinyCollection = f'{seedKey}Destiny'))
309
310 # Persistification
311 if flags.Acts.EDM.PersistifyTracks:
312 trackColl = kwargs['ACTSTracksLocation']
313 from ActsConfig.ActsTrackFindingConfig import ActsToXAODTrackConverterAlgCfg
314 acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
315 name = f'{trackColl}ToXAODConverterAlg',
316 InputActsTracksLocation = trackColl,
317 OutputActsTracksLocation = trackColl))
318
319 toAOD = []
320 prefix = f"{flags.Tracking.ActiveConfig.extension}"
321 toAOD += [f"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
322 f"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
323 f"xAOD::TrackStateContainer#{prefix}TrackStates",
324 f"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
325 f"xAOD::TrackParametersContainer#{prefix}TrackParameters",
326 f"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
327 f"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
328 f"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
329 f"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
330 f"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
331 f"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
332 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
333 f"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
334 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
335 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
336 acc.merge(addToAOD(flags, toAOD))
337
338 return acc
339
340
342 name: str = "ActsInDetScoreBasedAmbiguityResolutionAlg",
343 **kwargs) -> ComponentAccumulator:
344 acc = ComponentAccumulator()
345
346 kwargs.setdefault('TracksLocation', 'ActsTracks')
347 kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
348 kwargs.setdefault('MinScore',1.0)
349 kwargs.setdefault('MinScoreSharedTracks', 1.0)
350 kwargs.setdefault('MaxSharedTracksPerMeasurement', 20)
351 kwargs.setdefault('MaxShared', 5)
352 kwargs.setdefault('MinUnshared', 5)
353 kwargs.setdefault('UseAmbiguityScoring', True)
354 kwargs.setdefault('jsonFileName', 'ActsAmbiguityConfig.json')
355
356 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
357 from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
358 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
359 ActsAmbiguityResolutionMonitoringToolCfg(flags)))
360
361 acc.addEventAlgo(
362 CompFactory.ActsTrk.ScoreBasedAmbiguityResolutionAlg(name, **kwargs))
363 return acc
364
365
367 name: str = "ActsInDetAmbiguityResolutionAlg",
368 **kwargs) -> ComponentAccumulator:
369 acc = ComponentAccumulator()
370
371 kwargs.setdefault('TracksLocation', 'ActsTracks')
372 kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
373 kwargs.setdefault('MaximumSharedHits', 3)
374 kwargs.setdefault('MaximumIterations', 10000)
375 kwargs.setdefault('NMeasurementsMin', 7)
376
377 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
378 from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
379 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
380 ActsAmbiguityResolutionMonitoringToolCfg(flags)))
381
382 acc.addEventAlgo(
383 CompFactory.ActsTrk.AmbiguityResolutionAlg(name, **kwargs))
384 return acc
385
386
388 **kwargs) -> ComponentAccumulator:
389 acc = ComponentAccumulator()
390 kwargs.setdefault('TracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
391 kwargs.setdefault('ResolvedTracksLocation', f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks")
392 from ActsConfig.ActsConfigFlags import AmbiguitySolverStrategy
393
394 if flags.Acts.AmbiguitySolverStrategy is AmbiguitySolverStrategy.ScoreBased:
396 name=f"{flags.Tracking.ActiveConfig.extension}ScoreBasedAmbiguityResolutionAlg",
397 **kwargs))
398 else:
400 name=f"{flags.Tracking.ActiveConfig.extension}AmbiguityResolutionAlg",
401 **kwargs))
402 # Analysis extensions
403 if flags.Acts.Tracks.doAnalysis:
404 from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
405 acc.merge(ActsTrackAnalysisAlgCfg(flags,
406 name=f"{flags.Tracking.ActiveConfig.extension}ResolvedTrackAnalysisAlg",
407 TracksLocation=f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"))
408
409 # Persistification
410 if flags.Acts.EDM.PersistifyTracks:
411 trackColl = kwargs['ResolvedTracksLocation']
412 from ActsConfig.ActsTrackFindingConfig import ActsToXAODTrackConverterAlgCfg
413 acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
414 name = f'{trackColl}ToXAODConverterAlg',
415 InputActsTracksLocation = trackColl,
416 OutputActsTracksLocation = trackColl))
417
418 toAOD = []
419 prefix = f"{flags.Tracking.ActiveConfig.extension}Resolved"
420 toAOD += [f"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
421 f"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
422 f"xAOD::TrackStateContainer#{prefix}TrackStates",
423 f"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
424 f"xAOD::TrackParametersContainer#{prefix}TrackParameters",
425 f"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
426 f"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
427 f"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
428 f"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
429 f"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
430 f"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
431 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
432 f"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
433 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
434 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
435 acc.merge(addToAOD(flags, toAOD))
436
437 return acc
ComponentAccumulator ActsInDetMainScoreBasedAmbiguityResolutionAlgCfg(flags, str name="ActsInDetScoreBasedAmbiguityResolutionAlg", **kwargs)
list isdet(flags, *, list pixel=None, list strip=None, bool noStrip=False)
ComponentAccumulator ActsInDetMainAmbiguityResolutionAlgCfg(flags, str name="ActsInDetAmbiguityResolutionAlg", **kwargs)
ComponentAccumulator ActsInDetMainTrackFindingAlgCfg(flags, str name="ActsTrackFindingAlg", **kwargs)
ComponentAccumulator ActsInDetAmbiguityResolutionCfg(flags, **kwargs)
ComponentAccumulator ActsInDetTrackStatePrinterToolCfg(flags, str name="ActsInDetTrackStatePrinterTool", **kwargs)
ComponentAccumulator ActsInDetTrackFindingCfg(flags, **kwargs)
list seedOrder(flags, *, list pixel=None, list strip=None)