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

Functions

list isdet (flags, *, list pixel=None, list strip=None, list hgtd=None, bool noStrip=False)
list seedOrder (flags, *, list pixel=None, list strip=None)
ComponentAccumulator ActsTrackStatePrinterToolCfg (flags, str name="ActsTrackStatePrinterTool", **kwargs)
ComponentAccumulator ActsMainTrackFindingAlgCfg (flags, str name="ActsTrackFindingAlg", **kwargs)
ComponentAccumulator ActsTrackFindingCfg (flags, **kwargs)
ComponentAccumulator ActsTrackFindingGNNCfg (flags, **kwargs)
ComponentAccumulator ActsMainScoreBasedAmbiguityResolutionAlgCfg (flags, str name="ActsScoreBasedAmbiguityResolutionAlg", **kwargs)
ComponentAccumulator ActsMainAmbiguityResolutionAlgCfg (flags, str name="ActsAmbiguityResolutionAlg", **kwargs)
ComponentAccumulator ActsAmbiguityResolutionCfg (flags, **kwargs)

Function Documentation

◆ ActsAmbiguityResolutionCfg()

ComponentAccumulator ActsAmbiguityResolutionCfg ( flags,
** kwargs )

Definition at line 430 of file ActsTrackFindingConfig.py.

431 **kwargs) -> ComponentAccumulator:
432 acc = ComponentAccumulator()
433 kwargs.setdefault('TracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
434 kwargs.setdefault('ResolvedTracksLocation', f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks")
435 from ActsConfig.ActsConfigFlags import AmbiguitySolverStrategy
436
437 if flags.Acts.AmbiguitySolverStrategy is AmbiguitySolverStrategy.ScoreBased:
438 acc.merge(ActsMainScoreBasedAmbiguityResolutionAlgCfg(flags,
439 name=f"{flags.Tracking.ActiveConfig.extension}ScoreBasedAmbiguityResolutionAlg",
440 **kwargs))
441 else:
442 acc.merge(ActsMainAmbiguityResolutionAlgCfg(flags,
443 name=f"{flags.Tracking.ActiveConfig.extension}AmbiguityResolutionAlg",
444 **kwargs))
445 # Analysis extensions
446 if flags.Acts.Tracks.doAnalysis:
447 from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
448 acc.merge(ActsTrackAnalysisAlgCfg(flags,
449 name=f"{flags.Tracking.ActiveConfig.extension}ResolvedTrackAnalysisAlg",
450 TracksLocation=f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"))
451
452 # Persistification
453 if flags.Acts.EDM.PersistifyTracks or flags.Output.doWriteESD:
454 trackColl = kwargs['ResolvedTracksLocation']
455 from ActsConfig.ActsEventCnvConfig import ActsToXAODTrackConverterAlgCfg
456 acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
457 name = f'{trackColl}ToXAODConverterAlg',
458 InputActsTracksLocation = trackColl,
459 OutputActsTracksLocation = trackColl))
460
461 prefix = f"{flags.Tracking.ActiveConfig.extension}Resolved"
462 from ActsConfig.ActsPersistificationConfig import PersistifyTracks
463 acc.merge(PersistifyTracks(flags,
464 extensions=[prefix]))
465
466 return acc
467
468

◆ ActsMainAmbiguityResolutionAlgCfg()

ComponentAccumulator ActsMainAmbiguityResolutionAlgCfg ( flags,
str name = "ActsAmbiguityResolutionAlg",
** kwargs )

Definition at line 409 of file ActsTrackFindingConfig.py.

411 **kwargs) -> ComponentAccumulator:
412 acc = ComponentAccumulator()
413
414 kwargs.setdefault('TracksLocation', 'ActsTracks')
415 kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
416 kwargs.setdefault('MaximumSharedHits', 3)
417 kwargs.setdefault('MaximumIterations', 10000)
418 kwargs.setdefault('NMeasurementsMin', 7)
419
420 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
421 from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
422 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
423 ActsAmbiguityResolutionMonitoringToolCfg(flags)))
424
425 acc.addEventAlgo(
426 CompFactory.ActsTrk.AmbiguityResolutionAlg(name, **kwargs))
427 return acc
428
429

◆ ActsMainScoreBasedAmbiguityResolutionAlgCfg()

ComponentAccumulator ActsMainScoreBasedAmbiguityResolutionAlgCfg ( flags,
str name = "ActsScoreBasedAmbiguityResolutionAlg",
** kwargs )

Definition at line 384 of file ActsTrackFindingConfig.py.

386 **kwargs) -> ComponentAccumulator:
387 acc = ComponentAccumulator()
388
389 kwargs.setdefault('TracksLocation', 'ActsTracks')
390 kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
391 kwargs.setdefault('MinScore',1.0)
392 kwargs.setdefault('MinScoreSharedTracks', 1.0)
393 kwargs.setdefault('MaxSharedTracksPerMeasurement', 20)
394 kwargs.setdefault('MaxShared', 5)
395 kwargs.setdefault('MinUnshared', 5)
396 kwargs.setdefault('UseAmbiguityScoring', True)
397 kwargs.setdefault('jsonFileName', 'ActsAmbiguityConfig.json')
398
399 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
400 from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
401 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
402 ActsAmbiguityResolutionMonitoringToolCfg(flags)))
403
404 acc.addEventAlgo(
405 CompFactory.ActsTrk.ScoreBasedAmbiguityResolutionAlg(name, **kwargs))
406 return acc
407
408

◆ ActsMainTrackFindingAlgCfg()

ComponentAccumulator ActsMainTrackFindingAlgCfg ( flags,
str name = "ActsTrackFindingAlg",
** kwargs )

Definition at line 52 of file ActsTrackFindingConfig.py.

54 **kwargs) -> ComponentAccumulator:
55 def tolist(c):
56 return c if isinstance(c, list) else [c]
57
58 acc = ComponentAccumulator()
59
60 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
61 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometrySvcCfg
62 acc.merge(ActsGeometryContextAlgCfg(flags))
63 acc.merge(ActsTrackingGeometrySvcCfg(flags))
64
65 from ActsConfig.ActsGeometryConfig import ActsVolumeIdToDetectorCollectionMappingAlgCfg
66 # Remove HGTD Volumes from the propagation unless we need it
67 if not flags.Acts.useHGTDClusterInTrackFinding:
68 # HGTD has volume id:
69 # 2 for negative endcap
70 # 25 for positive endcap
71 kwargs.setdefault('EndOfTheWorldVolumeIds', [2, 25])
72
73 acc.merge( ActsVolumeIdToDetectorCollectionMappingAlgCfg(flags) )
74 kwargs.setdefault("ActsVolumeIdToDetectorElementCollectionMapKey", "VolumeIdToDetectorElementCollectionMap")
75
76 if flags.Detector.EnableITkPixel:
77 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
78 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
79 if flags.Detector.EnableITkStrip:
80 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
81 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
82 kwargs.setdefault("DetElStatus", seedOrder(flags, pixel=["ITkPixelDetectorElementStatus"], strip=["ITkStripDetectorElementStatus"]))
83
84 # Seed labels and collections.
85 # These 3 lists must match element for element, reversed if flags.Acts.useStripSeedsFirst is True.
86 # Maybe it is best to start with strips where the occupancy is lower.
87 kwargs.setdefault("SeedLabels", seedOrder(flags, pixel=["PPP"], strip=["SSS"]))
88 kwargs.setdefault("SeedContainerKeys", seedOrder(flags, pixel=["ActsPixelSeeds"], strip=["ActsStripSeeds"]))
89 if flags.Acts.Tracks.doAnalysis:
90 kwargs.setdefault("SeedDestiny", [f'{seedkey}Destiny' for seedkey in kwargs["SeedContainerKeys"]])
91
92 kwargs.setdefault("UncalibratedMeasurementContainerKeys", isdet(flags, pixel=["ITkPixelClusters_Cached" if flags.Acts.useCache else "ITkPixelClusters"], strip=["ITkStripClusters_Cached" if flags.Acts.useCache else "ITkStripClusters"], hgtd=["HGTD_Clusters"]))
93
94 kwargs.setdefault('ACTSTracksLocation', 'ActsTracks')
95
96 kwargs.setdefault("maxPropagationStep", 10000)
97 kwargs.setdefault("skipDuplicateSeeds", flags.Acts.skipDuplicateSeeds)
98 kwargs.setdefault("seedMeasOffset", 1)
99
100 # Ambi strategy 0 means do the ambiguity resolution outside the track finding.
101 kwargs.setdefault("ambiStrategy", flags.Acts.AmbiguitySolverMode.value)
102
103 if (not flags.Acts.doAmbiguityResolution) :
104 kwargs.setdefault("MaximumSharedHits", 3)
105 kwargs.setdefault("MaximumIterations", 10000)
106 kwargs.setdefault("NMeasurementsMin", 7)
107
108 kwargs.setdefault("doTwoWay", flags.Acts.doTwoWayCKF)
109 # drop the track states on material-only surfaces: nothing downstream reads them, and the CKF is faster without
110 kwargs.setdefault("recordMaterialStates", False)
111 kwargs.setdefault("autoReverseSearch", flags.Tracking.ActiveConfig.autoReverseSearch)
112 # forceTrackOnSeed isn't effective with secondary passes, which will have removed most/all of the seed measurements from the measurement containers.
113 kwargs.setdefault("forceTrackOnSeed", flags.Acts.forceTrackOnSeed and not flags.Tracking.ActiveConfig.isSecondaryPass)
114
115 # Borrow many settings from flags.Tracking.ActiveConfig, normally initialised in createITkTrackingPassFlags() at
116 # https://gitlab.cern.ch/atlas/athena/-/blob/main/Tracking/TrkConfig/python/TrackingPassFlags.py#L121
117
118 # bins in |eta|, used for both MeasurementSelectorConfig and TrackSelector::EtaBinnedConfig
119 if flags.Detector.GeometryITk:
120 kwargs.setdefault("etaBins", flags.Tracking.ActiveConfig.etaBins)
121 # new default chi2 cuts optimise efficiency vs speed. Set same value as Athena's Xi2maxNoAdd.
122 kwargs.setdefault("chi2CutOff", flags.Tracking.ActiveConfig.Xi2max)
123 kwargs.setdefault("chi2OutlierCutOff", flags.Tracking.ActiveConfig.Xi2maxNoAdd)
124
125 kwargs.setdefault("branchStopperPtMinFactor", 0.9)
126 kwargs.setdefault("branchStopperAbsEtaMaxExtra", 0.1)
127 if not flags.Tracking.ActiveConfig.isLargeD0: # consider seedRefitPtMinFactor later, with other LRT optimisations
128 kwargs.setdefault("seedRefitPtMinFactor", 0.9)
129
130 # Loosen the requirement on the minimum number of measurements on track candidate
131 # during track finding for tracks above a certain eta
132 kwargs.setdefault("branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
133 kwargs.setdefault("branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
134
135 kwargs.setdefault("numMeasurementsCutOff", [1])
136
137 # there is always an over and underflow bin so the first bin will be 0. - 0.5 the last bin 3.5 - inf.
138 # if all eta bins are >=0. the counter will be categorized by abs(eta) otherwise eta
139 kwargs.setdefault("StatisticEtaBins", [eta/10. for eta in range(5, 40, 5)]) # eta 0.0 - 4.0 in steps of 0.5
140
141 kwargs.setdefault("absEtaMax", flags.Tracking.ActiveConfig.maxEta)
142 kwargs.setdefault("ptMin", [p / Units.GeV * UnitConstants.GeV for p in tolist(flags.Tracking.ActiveConfig.minPT)])
143 # 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.
144 kwargs.setdefault("z0Min", [-flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
145 kwargs.setdefault("z0Max", [ flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
146 kwargs.setdefault("d0Min", [-d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
147 kwargs.setdefault("d0Max", [ d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
148 kwargs.setdefault("minMeasurements", tolist(flags.Tracking.ActiveConfig.minClusters))
149 kwargs.setdefault("maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
150 kwargs.setdefault("minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
151 kwargs.setdefault("maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
152 kwargs.setdefault("maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
153 # The shared hits are not calculated until *after* the track selection, so maxSharedHits is not used.
154 # Even if that were not the case, we need the ambiguity solver to decide which track to drop.
155
156
157 # GBTS produces much purer seeds, so the branch stopper selections aren't needed with GBTS seeds.
158 if flags.Tracking.ActiveConfig.SeedingStrategy not in [
159 SeedingStrategy.GbtsFtf, SeedingStrategy.Gbts]:
160 kwargs.setdefault("ptMinMeasurements", seedOrder(flags, pixel=[3], strip=[6]))
161 kwargs.setdefault("absEtaMaxMeasurements", seedOrder(flags, pixel=[3], strip=[999999]))
162
163 if 'TrackParamsEstimationTool' not in kwargs:
164 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
165
166 # set TrackParamsEstimationTool in case not defined by caller
167 tpe_tool_kwargs = {}
168 if flags.Tracking.ActiveConfig.isLargeD0:
169 tpe_tool_kwargs["allowPropagatorFailure"] = True
170 tpe_tool_kwargs["stripCalibrationIterations"] = flags.Acts.stripCalibrationIterations
171 tpe = acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags, **tpe_tool_kwargs))
172
173 kwargs.setdefault('TrackParamsEstimationTool', seedOrder(flags, pixel=[tpe], strip=[tpe]))
174
175 if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
176 kwargs.setdefault(
177 "TrackStatePrinter",
178 acc.popToolsAndMerge(ActsTrackStatePrinterToolCfg(flags)),
179 )
180
181 if 'PixelCalibrator' not in kwargs:
182 from AthenaConfiguration.Enums import BeamType
183
184 if flags.Beam.Type is not BeamType.Cosmics and flags.Acts.PixelCalibrationStrategy.usesCalibration():
185 from ActsConfig.ActsMeasurementCalibrationConfig import ActsPixelCalibrationToolCfg
186
187 kwargs.setdefault(
188 'PixelCalibrator',
189 acc.popToolsAndMerge(ActsPixelCalibrationToolCfg(flags))
190 )
191
192 if 'StripCalibrator' not in kwargs:
193 from AthenaConfiguration.Enums import BeamType
194
195 if flags.Beam.Type is not BeamType.Cosmics and flags.Acts.StripCalibrationStrategy.usesCalibration():
196 from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
197
198 kwargs.setdefault(
199 'StripCalibrator',
200 acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags))
201 )
202
203
204 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
205 from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
206 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
207 ActsTrackFindingMonitoringToolCfg(flags)))
208
209 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
210 return acc
211
212
213

◆ ActsTrackFindingCfg()

ComponentAccumulator ActsTrackFindingCfg ( flags,
** kwargs )

Definition at line 214 of file ActsTrackFindingConfig.py.

215 **kwargs) -> ComponentAccumulator:
216 acc = ComponentAccumulator()
217
218 # Define Uncalibrated Measurement keys
219 dataPrepPrefix = f'{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}'
220 if not flags.Tracking.ActiveConfig.isSecondaryPass:
221 dataPrepPrefix = ''
222 pixelClusters = f'ITk{dataPrepPrefix}PixelClusters'
223 stripClusters = f'ITk{dataPrepPrefix}StripClusters'
224 hgtdClusters = f'{dataPrepPrefix}HGTD_Clusters'
225 # If cache is activated the keys have "_Cached" as postfix
226 if flags.Acts.useCache:
227 pixelClusters += '_Cached'
228 stripClusters += '_Cached'
229 # Consider case detectors are not active
230
231 # Understand what are the seeds we need to consider
232 pixelSeedLabels = ['PPP']
233 stripSeedLabels = ['SSS']
234 # Conversion and LRT do not process pixel seeds
235 from InDetConfig.ITkActsHelpers import isFastPrimaryPass
236 if flags.Tracking.ActiveConfig.extension == 'ActsConversion' or flags.Tracking.ActiveConfig.isLargeD0:
237 pixelSeedLabels = None
238 # Main pass does not process strip seeds in the fast tracking configuration
239 elif isFastPrimaryPass(flags):
240 stripSeedLabels = None
241
242 # Now set the seed and estimated parameters keys accordingly
243 pixelSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}PixelSeeds']
244 stripSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}StripSeeds']
245 pixelDetElements = ['ITkPixelDetectorElementCollection']
246 stripDetElements = ['ITkStripDetectorElementCollection']
247
248 tpe_tool_kwargs = {}
249 if flags.Tracking.ActiveConfig.isLargeD0:
250 tpe_tool_kwargs["allowPropagatorFailure"] = True
251 tpe_tool_kwargs["stripCalibrationIterations"] = flags.Acts.stripCalibrationIterations
252
253 if pixelSeedLabels is None:
254 pixelSeedKeys = None
255 pixelDetElements = None
256 pixelTpe = None
257 elif 'TrackParamsEstimationTool' not in kwargs:
258 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
259 pixelTpe = [acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags, "PixelTrackParamsEstimationTool", **tpe_tool_kwargs))]
260
261 if stripSeedLabels is None:
262 stripSeedKeys = None
263 stripDetElements = None
264 stripTpe = None
265 elif 'TrackParamsEstimationTool' not in kwargs:
266 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
267 if flags.Tracking.ActiveConfig.isLargeD0 and flags.Acts.LrtStripSeedRefit:
268 tpe_tool_kwargs["refitSeeds"] = True
269 stripTpe = [acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags, "StripTrackParamsEstimationTool", **tpe_tool_kwargs))]
270
271 kwargs.setdefault("TrackParamsEstimationTool", seedOrder(flags, pixel=pixelTpe, strip=stripTpe))
272 kwargs.setdefault('ACTSTracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
273 kwargs.setdefault('UncalibratedMeasurementContainerKeys', isdet(flags, pixel=[pixelClusters], strip=[stripClusters], hgtd=[hgtdClusters]))
274 kwargs.setdefault('SeedLabels', seedOrder(flags, pixel=pixelSeedLabels, strip=stripSeedLabels))
275 kwargs.setdefault('SeedContainerKeys', seedOrder(flags, pixel=pixelSeedKeys, strip=stripSeedKeys))
276
277 acc.merge(ActsMainTrackFindingAlgCfg(flags,
278 name=f"{flags.Tracking.ActiveConfig.extension}TrackFindingAlg",
279 **kwargs))
280
281 # Analysis extensions
282 if flags.Acts.Tracks.doAnalysis:
283 from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
284 acc.merge(ActsTrackAnalysisAlgCfg(flags,
285 name=f"{flags.Tracking.ActiveConfig.extension}TrackAnalysisAlg",
286 TracksLocation=f"{flags.Tracking.ActiveConfig.extension}Tracks"))
287
288 # Seed To Track Monitoring
289 DetectorElementsKeys=seedOrder(flags, pixel=pixelDetElements, strip=stripDetElements)
290 if len(kwargs["SeedContainerKeys"]) != len(DetectorElementsKeys):
291 raise AttributeError("SeedContainerKeys and DetectorElementsKeys must have same size")
292
293 for i in range(0, len(kwargs["SeedContainerKeys"])):
294 seedKey = kwargs["SeedContainerKeys"][i]
295 detElKey = DetectorElementsKeys[i]
296
297 # make seed params
298 from ActsConfig.ActsAnalysisConfig import ActsBaseSeedsToTrackParamsAlgCfg
299 acc.merge(ActsBaseSeedsToTrackParamsAlgCfg(flags,
300 name = f'{seedKey}SeedsToTrackParamsAlg',
301 InputSeedContainerKey = seedKey,
302 DetectorElementsKey = detElKey,
303 OutputTrackParamsCollectionKey = f'{seedKey}Params'))
304
305 from ActsConfig.ActsAnalysisConfig import ActsSeedToTrackAnalysisAlgCfg
306 acc.merge(ActsSeedToTrackAnalysisAlgCfg(flags,
307 name = f'{seedKey}ToTrackAnalysisAlg',
308 InputSeedCollection = seedKey,
309 InputTrackParamsCollection = f'{seedKey}Params',
310 InputDestinyCollection = f'{seedKey}Destiny'))
311
312 # Persistification
313 if flags.Acts.EDM.PersistifyTracks or flags.Output.doWriteESD:
314 trackColl = kwargs['ACTSTracksLocation']
315 from ActsConfig.ActsEventCnvConfig import ActsToXAODTrackConverterAlgCfg
316 acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
317 name = f'{trackColl}ToXAODConverterAlg',
318 InputActsTracksLocation = trackColl,
319 OutputActsTracksLocation = trackColl))
320
321 prefix = f"{flags.Tracking.ActiveConfig.extension}"
322 from ActsConfig.ActsPersistificationConfig import PersistifyTracks
323 acc.merge(PersistifyTracks(flags,
324 extensions=[prefix]))
325
326 return acc
327
328

◆ ActsTrackFindingGNNCfg()

ComponentAccumulator ActsTrackFindingGNNCfg ( flags,
** kwargs )

Definition at line 329 of file ActsTrackFindingConfig.py.

329def ActsTrackFindingGNNCfg(flags, **kwargs) -> ComponentAccumulator:
330 acc = ComponentAccumulator()
331
332 # This is added in the seeding step of the CKF chain...
333 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
334 acc.merge(BeamSpotCondAlgCfg(flags))
335
336 # Adopt standard convention
337 kwargs.setdefault('ACTSTracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
338
339 # The GNN inference (graph construction, edge classification, track building)
340 if 'GnnPipelineTool' not in kwargs:
341 kwargs.setdefault('GnnPipelineTool', CompFactory.ActsTrk.GnnPipelineTool(
342 "GnnPipeline",
343 moduleMapPath=flags.Acts.GNN.ModuleMapPath,
344 gnnPath=flags.Acts.GNN.ModelPath,
345 numTrtContexts=flags.Acts.GNN.NumTrtContexts,
346 maxGpuInstances=flags.Acts.GNN.MaxGpuInstances,
347 edgeCut=flags.Acts.GNN.EdgeCut,
348 minCandidateMeasurements=flags.Acts.GNN.MinCandidateMeasurements,
349 ))
350
351 kwargs.setdefault("varianceInflation", flags.Acts.GNN.VarianceInflation)
352 kwargs.setdefault("tightSeeds", flags.Acts.GNN.TightSeeds)
353 kwargs.setdefault("minDeltaR", flags.Acts.GNN.MinDeltaR)
354 kwargs.setdefault("relaxCentralHoleSel", flags.Acts.GNN.RelaxCentralHoleSel)
355 kwargs.setdefault("relaxMeasurementSel", flags.Acts.GNN.RelaxMeasurementSel)
356 kwargs.setdefault("offlineZ0Sel", flags.Acts.GNN.OfflineZ0Sel)
357
358 # Wire parameter estimation and fitter tools like the main Acts path
359 if 'TrackParamsEstimationTool' not in kwargs:
360 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
361 kwargs.setdefault('TrackParamsEstimationTool', acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags)))
362
363 # The fitter tool is used in the GNN track finding to fit the track candidates after the GNN has selected the measurements.
364 if 'FitterTool' not in kwargs:
365 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
366 kwargs.setdefault('FitterTool', acc.popToolsAndMerge(ActsFitterCfg(flags,
367 ReverseFilteringPt=0,
368 OutlierChi2Cut=float('inf'))))
369
370 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
371 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometrySvcCfg
372 acc.merge(ActsGeometryContextAlgCfg(flags))
373 acc.merge(ActsTrackingGeometrySvcCfg(flags))
374
375 acc.addEventAlgo(
376 CompFactory.ActsTrk.TrackFindingGNNAlg("TrackFindingGNNAlg", **kwargs)
377 )
378
379 return acc
380
381
382
383

◆ ActsTrackStatePrinterToolCfg()

ComponentAccumulator ActsTrackStatePrinterToolCfg ( flags,
str name = "ActsTrackStatePrinterTool",
** kwargs )

Definition at line 37 of file ActsTrackFindingConfig.py.

39 **kwargs) -> ComponentAccumulator:
40 acc = ComponentAccumulator()
41
42 from InDetConfig.ITkActsHelpers import isFastPrimaryPass
43 kwargs.setdefault("InputSpacePoints", isdet(flags, noStrip=isFastPrimaryPass(flags),
44 pixel=['ITkPixelSpacePoints_Cached'] if flags.Acts.useCache else ['ITkPixelSpacePoints'],
45 strip=['ITkStripSpacePoints_Cached', 'ITkStripOverlapSpacePoints_Cached'] if flags.Acts.useCache else ['ITkStripSpacePoints', 'ITkStripOverlapSpacePoints']))
46
47 acc.setPrivateTools(CompFactory.ActsTrk.TrackStatePrinterTool(name, **kwargs))
48 return acc
49
50# ACTS only algorithm
51

◆ isdet()

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

Definition at line 13 of file ActsTrackFindingConfig.py.

18 noStrip: bool = False) -> list:
19 keys = []
20 if flags.Detector.EnableITkPixel and pixel is not None:
21 keys += pixel
22 if flags.Detector.EnableITkStrip and strip is not None and not noStrip:
23 keys += strip
24 if flags.Acts.useHGTDClusterInTrackFinding and hgtd is not None:
25 keys += hgtd
26 return keys
27

◆ seedOrder()

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

Definition at line 28 of file ActsTrackFindingConfig.py.

31 strip: list = None) -> list:
32 keys = isdet(flags, pixel=pixel, strip=strip)
33 if flags.Acts.useStripSeedsFirst:
34 keys.reverse()
35 return keys
36