ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrackFindingInDetConfig Namespace Reference

Functions

list isdet (flags, *, list pixel=None, list strip=None, bool noStrip=False)
list seedOrder (flags, *, list pixel=None, list strip=None)
ComponentAccumulator ActsInDetTrackStatePrinterToolCfg (flags, str name="ActsInDetTrackStatePrinterTool", **kwargs)
ComponentAccumulator ActsInDetMainTrackFindingAlgCfg (flags, str name="ActsTrackFindingAlg", **kwargs)
ComponentAccumulator ActsInDetTrackFindingCfg (flags, **kwargs)
ComponentAccumulator ActsInDetMainScoreBasedAmbiguityResolutionAlgCfg (flags, str name="ActsInDetScoreBasedAmbiguityResolutionAlg", **kwargs)
ComponentAccumulator ActsInDetMainAmbiguityResolutionAlgCfg (flags, str name="ActsInDetAmbiguityResolutionAlg", **kwargs)
ComponentAccumulator ActsInDetAmbiguityResolutionCfg (flags, **kwargs)

Function Documentation

◆ ActsInDetAmbiguityResolutionCfg()

ComponentAccumulator ActsTrackFindingInDetConfig.ActsInDetAmbiguityResolutionCfg ( flags,
** kwargs )

Definition at line 381 of file ActsTrackFindingInDetConfig.py.

382 **kwargs) -> ComponentAccumulator:
383 acc = ComponentAccumulator()
384 kwargs.setdefault('TracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
385 kwargs.setdefault('ResolvedTracksLocation', f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks")
386 from ActsConfig.ActsConfigFlags import AmbiguitySolverStrategy
387
388 if flags.Acts.AmbiguitySolverStrategy is AmbiguitySolverStrategy.ScoreBased:
389 acc.merge(ActsInDetMainScoreBasedAmbiguityResolutionAlgCfg(flags,
390 name=f"{flags.Tracking.ActiveConfig.extension}ScoreBasedAmbiguityResolutionAlg",
391 **kwargs))
392 else:
393 acc.merge(ActsInDetMainAmbiguityResolutionAlgCfg(flags,
394 name=f"{flags.Tracking.ActiveConfig.extension}AmbiguityResolutionAlg",
395 **kwargs))
396 # Analysis extensions
397 if flags.Acts.Tracks.doAnalysis:
398 from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
399 acc.merge(ActsTrackAnalysisAlgCfg(flags,
400 name=f"{flags.Tracking.ActiveConfig.extension}ResolvedTrackAnalysisAlg",
401 TracksLocation=f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"))
402
403 # Persistification
404 if flags.Acts.EDM.PersistifyTracks:
405 trackColl = kwargs['ResolvedTracksLocation']
406 from ActsConfig.ActsTrackFindingConfig import ActsToXAODTrackConverterAlgCfg
407 acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
408 name = f'{trackColl}ToXAODConverterAlg',
409 InputActsTracksLocation = trackColl,
410 OutputActsTracksLocation = trackColl))
411
412 toAOD = []
413 prefix = f"{flags.Tracking.ActiveConfig.extension}Resolved"
414 toAOD += [f"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
415 f"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
416 f"xAOD::TrackStateContainer#{prefix}TrackStates",
417 f"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
418 f"xAOD::TrackParametersContainer#{prefix}TrackParameters",
419 f"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
420 f"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
421 f"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
422 f"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
423 f"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
424 f"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
425 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
426 f"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
427 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
428 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
429 acc.merge(addToAOD(flags, toAOD))
430
431 return acc

◆ ActsInDetMainAmbiguityResolutionAlgCfg()

ComponentAccumulator ActsTrackFindingInDetConfig.ActsInDetMainAmbiguityResolutionAlgCfg ( flags,
str name = "ActsInDetAmbiguityResolutionAlg",
** kwargs )

Definition at line 360 of file ActsTrackFindingInDetConfig.py.

362 **kwargs) -> ComponentAccumulator:
363 acc = ComponentAccumulator()
364
365 kwargs.setdefault('TracksLocation', 'ActsTracks')
366 kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
367 kwargs.setdefault('MaximumSharedHits', 3)
368 kwargs.setdefault('MaximumIterations', 10000)
369 kwargs.setdefault('NMeasurementsMin', 7)
370
371 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
372 from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
373 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
374 ActsAmbiguityResolutionMonitoringToolCfg(flags)))
375
376 acc.addEventAlgo(
377 CompFactory.ActsTrk.AmbiguityResolutionAlg(name, **kwargs))
378 return acc
379
380

◆ ActsInDetMainScoreBasedAmbiguityResolutionAlgCfg()

ComponentAccumulator ActsTrackFindingInDetConfig.ActsInDetMainScoreBasedAmbiguityResolutionAlgCfg ( flags,
str name = "ActsInDetScoreBasedAmbiguityResolutionAlg",
** kwargs )

Definition at line 335 of file ActsTrackFindingInDetConfig.py.

337 **kwargs) -> ComponentAccumulator:
338 acc = ComponentAccumulator()
339
340 kwargs.setdefault('TracksLocation', 'ActsTracks')
341 kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
342 kwargs.setdefault('MinScore',1.0)
343 kwargs.setdefault('MinScoreSharedTracks', 1.0)
344 kwargs.setdefault('MaxSharedTracksPerMeasurement', 20)
345 kwargs.setdefault('MaxShared', 5)
346 kwargs.setdefault('MinUnshared', 5)
347 kwargs.setdefault('UseAmbiguityScoring', True)
348 kwargs.setdefault('jsonFileName', 'ActsAmbiguityConfig.json')
349
350 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
351 from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
352 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
353 ActsAmbiguityResolutionMonitoringToolCfg(flags)))
354
355 acc.addEventAlgo(
356 CompFactory.ActsTrk.ScoreBasedAmbiguityResolutionAlg(name, **kwargs))
357 return acc
358
359

◆ ActsInDetMainTrackFindingAlgCfg()

ComponentAccumulator ActsTrackFindingInDetConfig.ActsInDetMainTrackFindingAlgCfg ( flags,
str name = "ActsTrackFindingAlg",
** kwargs )

Definition at line 55 of file ActsTrackFindingInDetConfig.py.

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 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg, ActsGeometryRealmConvTool
158 kwargs.setdefault("TrackingGeometryTool", acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)))
159 kwargs.setdefault("GeometryRealmConvTool", acc.getPrimaryAndMerge(ActsGeometryRealmConvTool(flags)))
160
161 if 'TrackParamsEstimationTool' not in kwargs:
162 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
163 kwargs.setdefault('TrackParamsEstimationTool', acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags)))
164
165 if 'ExtrapolationTool' not in kwargs:
166 from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
167 kwargs.setdefault(
168 "ExtrapolationTool",
169 acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=10000)),
170 )
171
172 if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
173 kwargs.setdefault(
174 "TrackStatePrinter",
175 acc.popToolsAndMerge(ActsInDetTrackStatePrinterToolCfg(flags)),
176 )
177
178 if 'FitterTool' not in kwargs:
179 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
180 kwargs.setdefault(
181 'FitterTool',
182 acc.popToolsAndMerge(ActsFitterCfg(flags,
183 ReverseFilteringPt=0,
184 OutlierChi2Cut=float('inf')))
185 )
186
187 # !!! Calibrator is not used for Inner Detector yet
188 if 'PixelCalibrator' not in kwargs:
189 from AthenaConfiguration.Enums import BeamType
190
191 if flags.Beam.Type is not BeamType.Cosmics:
192 from ActsConfig.ActsConfigFlags import PixelCalibrationStrategy
193 from ActsConfig.ActsMeasurementCalibrationConfig import ActsAnalogueClusteringToolCfg
194
195 if flags.Acts.PixelCalibrationStrategy in (PixelCalibrationStrategy.AnalogueClustering,
196 PixelCalibrationStrategy.AnalogueClusteringAfterSelection,
197 PixelCalibrationStrategy.NNClustering):
198
199 kwargs.setdefault(
200 'PixelCalibrator',
201 acc.popToolsAndMerge(ActsAnalogueClusteringToolCfg(flags,
202 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
203 )
204 # !!! Calibrator is not used for Inner Detector yet
205 if 'StripCalibrator' not in kwargs:
206 from AthenaConfiguration.Enums import BeamType
207 if flags.Beam.Type is not BeamType.Cosmics:
208 from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
209 from ActsConfig.ActsConfigFlags import StripCalibrationStrategy
210
211 if flags.Acts.StripCalibrationStrategy in (StripCalibrationStrategy.DigitalCalibration,
212 StripCalibrationStrategy.DigitalCalibrationAfterSelection) :
213
214 kwargs.setdefault(
215 'StripCalibrator',
216 acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags,
217 CalibrateAfterMeasurementSelection = flags.Acts.StripCalibrationStrategy is StripCalibrationStrategy.DigitalCalibrationAfterSelection))
218 )
219
220 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
221 from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
222 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
223 ActsTrackFindingMonitoringToolCfg(flags)))
224
225 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
226 return acc
227
228
229

◆ ActsInDetTrackFindingCfg()

ComponentAccumulator ActsTrackFindingInDetConfig.ActsInDetTrackFindingCfg ( flags,
** kwargs )

Definition at line 230 of file ActsTrackFindingInDetConfig.py.

231 **kwargs) -> ComponentAccumulator:
232 acc = ComponentAccumulator()
233
234 # Define Uncalibrated Measurement keys
235 dataPrepPrefix = f'{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}'
236 if not flags.Tracking.ActiveConfig.isSecondaryPass:
237 dataPrepPrefix = ''
238 pixelClusters = f'{dataPrepPrefix}PixelClusters'
239 stripClusters = f'{dataPrepPrefix}SCT_Clusters'
240 # If cache is activated the keys have "_Cached" as postfix
241 if flags.Acts.useCache:
242 pixelClusters += '_Cached'
243 stripClusters += '_Cached'
244 # Consider case detectors are not active
245
246 # Understand what are the seeds we need to consider
247 pixelSeedLabels = ['PPP']
248 stripSeedLabels = ['SSS']
249
250 # Consider if pixel seeds and SCT seeds are needed, for the moment, both are kept for Inner Detector
251
252 # Now set the seed and estimated parameters keys accordingly
253 pixelSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}PixelSeeds']
254 stripSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}SCT_Seeds']
255 pixelDetElements = ['PixelDetectorElementCollection']
256 stripDetElements = ['SCT_DetectorElementCollection']
257 if pixelSeedLabels is None:
258 pixelSeedKeys = None
259 pixelDetElements = None
260 if stripSeedLabels is None:
261 stripSeedKeys = None
262 stripDetElements = None
263
264 kwargs.setdefault('ACTSTracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
265 kwargs.setdefault('UncalibratedMeasurementContainerKeys', isdet(flags, pixel=[pixelClusters], strip=[stripClusters]))
266 kwargs.setdefault('SeedLabels', seedOrder(flags, pixel=pixelSeedLabels, strip=stripSeedLabels))
267 kwargs.setdefault('SeedContainerKeys', seedOrder(flags, pixel=pixelSeedKeys, strip=stripSeedKeys))
268 kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=pixelDetElements, strip=stripDetElements))
269
270 acc.merge(ActsInDetMainTrackFindingAlgCfg(flags,
271 name=f"{flags.Tracking.ActiveConfig.extension}TrackFindingAlg",
272 **kwargs))
273
274 # # Analysis extensions
275 # if flags.Acts.Tracks.doAnalysis:
276 # from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
277 # acc.merge(ActsTrackAnalysisAlgCfg(flags,
278 # name=f"{flags.Tracking.ActiveConfig.extension}TrackAnalysisAlg",
279 # TracksLocation=f"{flags.Tracking.ActiveConfig.extension}Tracks"))
280
281 # # Seed To Track Monitoring
282 # if len(kwargs["SeedContainerKeys"]) != len(kwargs["DetectorElementsKeys"]):
283 # raise AttributeError("SeedContainerKeys and DetectorElementsKeys must have same size")
284
285 # for i in range(0, len(kwargs["SeedContainerKeys"])):
286 # seedKey = kwargs["SeedContainerKeys"][i]
287 # detElKey = kwargs["DetectorElementsKeys"][i]
288
289 # # make seed params
290 # from ActsConfig.ActsAnalysisConfig import ActsBaseSeedsToTrackParamsAlgCfg
291 # acc.merge(ActsBaseSeedsToTrackParamsAlgCfg(flags,
292 # name = f'{seedKey}SeedsToTrackParamsAlg',
293 # InputSeedContainerKey = seedKey,
294 # DetectorElementsKey = detElKey,
295 # OutputTrackParamsCollectionKey = f'{seedKey}Params'))
296
297 # from ActsConfig.ActsAnalysisConfig import ActsSeedToTrackAnalysisAlgCfg
298 # acc.merge(ActsSeedToTrackAnalysisAlgCfg(flags,
299 # name = f'{seedKey}ToTrackAnalysisAlg',
300 # InputSeedCollection = seedKey,
301 # InputTrackParamsCollection = f'{seedKey}Params',
302 # InputDestinyCollection = f'{seedKey}Destiny'))
303
304 # Persistification
305 if flags.Acts.EDM.PersistifyTracks:
306 trackColl = kwargs['ACTSTracksLocation']
307 from ActsConfig.ActsTrackFindingConfig import ActsToXAODTrackConverterAlgCfg
308 acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
309 name = f'{trackColl}ToXAODConverterAlg',
310 InputActsTracksLocation = trackColl,
311 OutputActsTracksLocation = trackColl))
312
313 toAOD = []
314 prefix = f"{flags.Tracking.ActiveConfig.extension}"
315 toAOD += [f"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
316 f"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
317 f"xAOD::TrackStateContainer#{prefix}TrackStates",
318 f"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
319 f"xAOD::TrackParametersContainer#{prefix}TrackParameters",
320 f"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
321 f"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
322 f"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
323 f"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
324 f"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
325 f"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
326 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
327 f"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
328 f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
329 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
330 acc.merge(addToAOD(flags, toAOD))
331
332 return acc
333
334

◆ ActsInDetTrackStatePrinterToolCfg()

ComponentAccumulator ActsTrackFindingInDetConfig.ActsInDetTrackStatePrinterToolCfg ( flags,
str name = "ActsInDetTrackStatePrinterTool",
** kwargs )

Definition at line 34 of file ActsTrackFindingInDetConfig.py.

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

◆ isdet()

list ActsTrackFindingInDetConfig.isdet ( flags,
* ,
list pixel = None,
list strip = None,
bool noStrip = False )

Definition at line 12 of file ActsTrackFindingInDetConfig.py.

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

◆ seedOrder()

list ActsTrackFindingInDetConfig.seedOrder ( flags,
* ,
list pixel = None,
list strip = None )

Definition at line 25 of file ActsTrackFindingInDetConfig.py.

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