ATLAS Offline Software
Functions
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 ActsMainScoreBasedAmbiguityResolutionAlgCfg (flags, str name="ActsScoreBasedAmbiguityResolutionAlg", **kwargs)
 
ComponentAccumulator ActsMainAmbiguityResolutionAlgCfg (flags, str name="ActsAmbiguityResolutionAlg", **kwargs)
 
ComponentAccumulator ActsAmbiguityResolutionCfg (flags, **kwargs)
 
ComponentAccumulator ActsTrackToTrackParticleCnvAlgCfg (flags, str name="ActsTrackToTrackParticleCnvAlg", **kwargs)
 
ComponentAccumulator ActsToXAODTrackConverterAlgCfg (flags, str name="ActsToXAODTrackConverterAlg", **kwargs)
 

Function Documentation

◆ ActsAmbiguityResolutionCfg()

ComponentAccumulator ActsTrackFindingConfig.ActsAmbiguityResolutionCfg (   flags,
**  kwargs 
)

Definition at line 409 of file ActsTrackFindingConfig.py.

410  **kwargs) -> ComponentAccumulator:
411  acc = ComponentAccumulator()
412  kwargs.setdefault('TracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
413  kwargs.setdefault('ResolvedTracksLocation', f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks")
414  from ActsConfig.ActsConfigFlags import AmbiguitySolverStrategy
415 
416  if flags.Acts.AmbiguitySolverStrategy is AmbiguitySolverStrategy.ScoreBased:
418  name=f"{flags.Tracking.ActiveConfig.extension}ScoreBasedAmbiguityResolutionAlg",
419  **kwargs))
420  else:
421  acc.merge(ActsMainAmbiguityResolutionAlgCfg(flags,
422  name=f"{flags.Tracking.ActiveConfig.extension}AmbiguityResolutionAlg",
423  **kwargs))
424  # Analysis extensions
425  if flags.Acts.Tracks.doAnalysis:
426  from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
427  acc.merge(ActsTrackAnalysisAlgCfg(flags,
428  name=f"{flags.Tracking.ActiveConfig.extension}ResolvedTrackAnalysisAlg",
429  TracksLocation=f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"))
430 
431  # Persistification
432  if flags.Acts.EDM.PersistifyTracks:
433  trackColl = kwargs['ResolvedTracksLocation']
434  from ActsConfig.ActsTrackFindingConfig import ActsToXAODTrackConverterAlgCfg
435  acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
436  name = f'{trackColl}ToXAODConverterAlg',
437  InputActsTracksLocation = trackColl,
438  OutputActsTracksLocation = trackColl))
439 
440  toAOD = []
441  prefix = f"{flags.Tracking.ActiveConfig.extension}Resolved"
442  toAOD += [f"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
443  f"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
444  f"xAOD::TrackStateContainer#{prefix}TrackStates",
445  f"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
446  f"xAOD::TrackParametersContainer#{prefix}TrackParameters",
447  f"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
448  f"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
449  f"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
450  f"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
451  f"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
452  f"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
453  f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
454  f"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
455  f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
456  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
457  acc.merge(addToAOD(flags, toAOD))
458 
459  return acc
460 

◆ ActsMainAmbiguityResolutionAlgCfg()

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

Definition at line 388 of file ActsTrackFindingConfig.py.

389  name: str = "ActsAmbiguityResolutionAlg",
390  **kwargs) -> ComponentAccumulator:
391  acc = ComponentAccumulator()
392 
393  kwargs.setdefault('TracksLocation', 'ActsTracks')
394  kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
395  kwargs.setdefault('MaximumSharedHits', 3)
396  kwargs.setdefault('MaximumIterations', 10000)
397  kwargs.setdefault('NMeasurementsMin', 7)
398 
399  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
400  from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
401  kwargs.setdefault('MonTool', acc.popToolsAndMerge(
403 
404  acc.addEventAlgo(
405  CompFactory.ActsTrk.AmbiguityResolutionAlg(name, **kwargs))
406  return acc
407 
408 

◆ ActsMainScoreBasedAmbiguityResolutionAlgCfg()

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

Definition at line 363 of file ActsTrackFindingConfig.py.

364  name: str = "ActsScoreBasedAmbiguityResolutionAlg",
365  **kwargs) -> ComponentAccumulator:
366  acc = ComponentAccumulator()
367 
368  kwargs.setdefault('TracksLocation', 'ActsTracks')
369  kwargs.setdefault('ResolvedTracksLocation', 'ActsResolvedTracks')
370  kwargs.setdefault('MinScore',1.0)
371  kwargs.setdefault('MinScoreSharedTracks', 1.0)
372  kwargs.setdefault('MaxSharedTracksPerMeasurement', 20)
373  kwargs.setdefault('MaxShared', 5)
374  kwargs.setdefault('MinUnshared', 5)
375  kwargs.setdefault('UseAmbiguityScoring', True)
376  kwargs.setdefault('jsonFileName', 'ActsAmbiguityConfig.json')
377 
378  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
379  from ActsConfig.ActsMonitoringConfig import ActsAmbiguityResolutionMonitoringToolCfg
380  kwargs.setdefault('MonTool', acc.popToolsAndMerge(
382 
383  acc.addEventAlgo(
384  CompFactory.ActsTrk.ScoreBasedAmbiguityResolutionAlg(name, **kwargs))
385  return acc
386 
387 

◆ ActsMainTrackFindingAlgCfg()

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

Definition at line 59 of file ActsTrackFindingConfig.py.

60  name: str = "ActsTrackFindingAlg",
61  **kwargs) -> ComponentAccumulator:
62  def tolist(c):
63  return c if isinstance(c, list) else [c]
64 
65  acc = ComponentAccumulator()
66 
67  from ActsConfig.ActsGeometryConfig import ActsVolumeIdToDetectorCollectionMappingAlgCfg
68  # Remove HGTD Volumes from the propagation unless we need it
69  if not flags.Acts.useHGTDClusterInTrackFinding:
70  # HGTD has volume id:
71  # 2 for negative endcap
72  # 25 for positive endcap
73  kwargs.setdefault('EndOfTheWorldVolumeIds', [2, 25])
74 
76  kwargs.setdefault("ActsVolumeIdToDetectorElementCollectionMapKey", "VolumeIdToDetectorElementCollectionMap")
77  def filterCollections(flags, pixel_col, strip_col) :
78  ret=[]
79  if flags.Detector.GeometryITkPixel:
80  ret += [ pixel_col ]
81  if flags.Detector.GeometryITkStrip:
82  ret += [ strip_col ]
83  return ret
84 
85  if flags.Detector.EnableITkPixel:
86  from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
87  acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
88  if flags.Detector.EnableITkStrip:
89  from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
90  acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
91  kwargs.setdefault("DetElStatus",filterCollections(flags,'ITkStripDetectorElementStatus','ITkPixelDetectorElementStatus'))
92 
93  # Seed labels and collections.
94  # These 3 lists must match element for element, reversed if flags.Acts.useStripSeedsFirst is True.
95  # Maybe it is best to start with strips where the occupancy is lower.
96  kwargs.setdefault("SeedLabels", seedOrder(flags, pixel=["PPP"], strip=["SSS"]))
97  kwargs.setdefault("SeedContainerKeys", seedOrder(flags, pixel=["ActsPixelSeeds"], strip=["ActsStripSeeds"]))
98  kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=['ITkPixelDetectorElementCollection'], strip=['ITkStripDetectorElementCollection']))
99  if flags.Acts.Tracks.doAnalysis:
100  kwargs.setdefault("SeedDestiny", [f'{seedkey}Destiny' for seedkey in kwargs["SeedContainerKeys"]])
101 
102  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"]))
103 
104  kwargs.setdefault('ACTSTracksLocation', 'ActsTracks')
105 
106  kwargs.setdefault("maxPropagationStep", 10000)
107  kwargs.setdefault("skipDuplicateSeeds", flags.Acts.skipDuplicateSeeds)
108  kwargs.setdefault("seedMeasOffset", 1)
109 
110  # Ambi strategy 0 means do the ambiguity resolution outside the track finding.
111  kwargs.setdefault("ambiStrategy", flags.Acts.AmbiguitySolverMode.value)
112 
113  if (not flags.Acts.doAmbiguityResolution) :
114  kwargs.setdefault("MaximumSharedHits", 3)
115  kwargs.setdefault("MaximumIterations", 10000)
116  kwargs.setdefault("NMeasurementsMin", 7)
117 
118  kwargs.setdefault("refitSeeds", seedOrder(flags, pixel=[False], strip=[False]))
119  kwargs.setdefault("doTwoWay", flags.Acts.doTwoWayCKF)
120  kwargs.setdefault("autoReverseSearch", flags.Acts.autoReverseSearchCKF)
121  # forceTrackOnSeed isn't effective with secondary passes, which will have removed most/all of the seed measurements from the measurement containers.
122  kwargs.setdefault("forceTrackOnSeed", flags.Acts.forceTrackOnSeed and not flags.Tracking.ActiveConfig.isSecondaryPass)
123 
124  # Borrow many settings from flags.Tracking.ActiveConfig, normally initialised in createITkTrackingPassFlags() at
125  # https://gitlab.cern.ch/atlas/athena/-/blob/main/Tracking/TrkConfig/python/TrackingPassFlags.py#L121
126 
127  # bins in |eta|, used for both MeasurementSelectorConfig and TrackSelector::EtaBinnedConfig
128  if flags.Detector.GeometryITk:
129  kwargs.setdefault("etaBins", flags.Tracking.ActiveConfig.etaBins)
130  # new default chi2 cuts optimise efficiency vs speed. Set same value as Athena's Xi2maxNoAdd.
131  from InDetConfig.ITkActsHelpers import isFastPrimaryPass
132  if isFastPrimaryPass(flags):
133  kwargs.setdefault("chi2CutOff", [50])
134  kwargs.setdefault("chi2OutlierCutOff", [100])
135  else:
136  kwargs.setdefault("chi2CutOff", [25])
137  kwargs.setdefault("chi2OutlierCutOff", [25])
138  kwargs.setdefault("branchStopperPtMinFactor", 0.9)
139  kwargs.setdefault("branchStopperAbsEtaMaxExtra", 0.1)
140 
141  # Loosen the requirement on the minimum number of measurements on track candidate
142  # during track finding for tracks above a certain eta
143  kwargs.setdefault("branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
144  kwargs.setdefault("branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
145 
146  kwargs.setdefault("numMeasurementsCutOff", [1])
147 
148  # there is always an over and underflow bin so the first bin will be 0. - 0.5 the last bin 3.5 - inf.
149  # if all eta bins are >=0. the counter will be categorized by abs(eta) otherwise eta
150  kwargs.setdefault("StatisticEtaBins", [eta/10. for eta in range(5, 40, 5)]) # eta 0.0 - 4.0 in steps of 0.5
151 
152  kwargs.setdefault("absEtaMax", flags.Tracking.ActiveConfig.maxEta)
153  kwargs.setdefault("ptMin", [p / Units.GeV * UnitConstants.GeV for p in tolist(flags.Tracking.ActiveConfig.minPT)])
154  # 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.
155  kwargs.setdefault("z0Min", [-flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
156  kwargs.setdefault("z0Max", [ flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
157  kwargs.setdefault("d0Min", [-d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
158  kwargs.setdefault("d0Max", [ d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
159  kwargs.setdefault("minMeasurements", tolist(flags.Tracking.ActiveConfig.minClusters))
160  kwargs.setdefault("maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
161  kwargs.setdefault("minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
162  kwargs.setdefault("maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
163  kwargs.setdefault("maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
164  # The shared hits are not calculated until *after* the track selection, so maxSharedHits is not used.
165  # Even if that were not the case, we need the ambiguity solver to decide which track to drop.
166 
167 
168  # GBTS produces much purer seeds, so the branch stopper selections aren't needed with GBTS seeds.
169  if flags.Acts.SeedingStrategy is not SeedingStrategy.Gbts2:
170  kwargs.setdefault("ptMinMeasurements", seedOrder(flags, pixel=[3], strip=[6]))
171  kwargs.setdefault("absEtaMaxMeasurements", seedOrder(flags, pixel=[3], strip=[999999]))
172 
173  if 'TrackingGeometryTool' not in kwargs:
174  from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
175  kwargs.setdefault(
176  "TrackingGeometryTool",
177  acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)),
178  )
179 
180  if 'ATLASConverterTool' not in kwargs:
181  from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
182  kwargs.setdefault('ATLASConverterTool', acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
183 
184  if 'TrackParamsEstimationTool' not in kwargs:
185  from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
186  kwargs.setdefault('TrackParamsEstimationTool', acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags)))
187 
188  if 'ExtrapolationTool' not in kwargs:
189  from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
190  kwargs.setdefault(
191  "ExtrapolationTool",
192  acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=10000)),
193  )
194 
195  if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
196  kwargs.setdefault(
197  "TrackStatePrinter",
198  acc.popToolsAndMerge(ActsTrackStatePrinterToolCfg(flags)),
199  )
200 
201  if 'FitterTool' not in kwargs:
202  from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
203  kwargs.setdefault(
204  'FitterTool',
205  acc.popToolsAndMerge(ActsFitterCfg(flags,
206  ReverseFilteringPt=0,
207  OutlierChi2Cut=float('inf')))
208  )
209 
210  if 'PixelCalibrator' not in kwargs:
211  from AthenaConfiguration.Enums import BeamType
212 
213  if not (flags.Beam.Type is BeamType.Cosmics):
214  from ActsConfig.ActsConfigFlags import PixelCalibrationStrategy
215  from ActsConfig.ActsMeasurementCalibrationConfig import ActsAnalogueClusteringToolCfg
216 
217  if flags.Acts.PixelCalibrationStrategy in (PixelCalibrationStrategy.AnalogueClustering,
218  PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
219 
220  kwargs.setdefault(
221  'PixelCalibrator',
222  acc.popToolsAndMerge(ActsAnalogueClusteringToolCfg(flags,
223  CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
224  )
225 
226  if 'StripCalibrator' not in kwargs:
227  from AthenaConfiguration.Enums import BeamType
228  if not (flags.Beam.Type is BeamType.Cosmics):
229  from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
230  from ActsConfig.ActsConfigFlags import StripCalibrationStrategy
231 
232  if flags.Acts.StripCalibrationStrategy in (StripCalibrationStrategy.DigitalCalibration,
233  StripCalibrationStrategy.DigitalCalibrationAfterSelection) :
234 
235  kwargs.setdefault(
236  'StripCalibrator',
237  acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags,
238  CalibrateAfterMeasurementSelection = flags.Acts.StripCalibrationStrategy is StripCalibrationStrategy.DigitalCalibrationAfterSelection))
239  )
240 
241 
242  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
243  from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
244  kwargs.setdefault('MonTool', acc.popToolsAndMerge(
246 
247  acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
248  return acc
249 
250 
251 

◆ ActsToXAODTrackConverterAlgCfg()

ComponentAccumulator ActsTrackFindingConfig.ActsToXAODTrackConverterAlgCfg (   flags,
str   name = "ActsToXAODTrackConverterAlg",
**  kwargs 
)

Definition at line 496 of file ActsTrackFindingConfig.py.

497  name: str = "ActsToXAODTrackConverterAlg",
498  **kwargs) -> ComponentAccumulator:
499  acc = ComponentAccumulator()
500 
501  kwargs.setdefault('InputActsTracksLocation', '')
502  kwargs.setdefault('OutputActsTracksLocation', '')
503 
504  if 'TrackingGeometryTool' not in kwargs:
505  from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
506  kwargs.setdefault('TrackingGeometryTool', acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)))
507 
508  acc.addEventAlgo(CompFactory.ActsTrk.ActsToXAODTrackConverterAlg(name, **kwargs))
509  return acc

◆ ActsTrackFindingCfg()

ComponentAccumulator ActsTrackFindingConfig.ActsTrackFindingCfg (   flags,
**  kwargs 
)

Definition at line 252 of file ActsTrackFindingConfig.py.

252 def ActsTrackFindingCfg(flags,
253  **kwargs) -> ComponentAccumulator:
254  acc = ComponentAccumulator()
255 
256  # Define Uncalibrated Measurement keys
257  dataPrepPrefix = f'{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}'
258  if not flags.Tracking.ActiveConfig.isSecondaryPass:
259  dataPrepPrefix = ''
260  pixelClusters = f'ITk{dataPrepPrefix}PixelClusters'
261  stripClusters = f'ITk{dataPrepPrefix}StripClusters'
262  hgtdClusters = f'{dataPrepPrefix}HGTD_Clusters'
263  # If cache is activated the keys have "_Cached" as postfix
264  if flags.Acts.useCache:
265  pixelClusters += '_Cached'
266  stripClusters += '_Cached'
267  # Consider case detectors are not active
268 
269  # Understand what are the seeds we need to consider
270  pixelSeedLabels = ['PPP']
271  stripSeedLabels = ['SSS']
272  # Conversion and LRT do not process pixel seeds
273  from InDetConfig.ITkActsHelpers import isFastPrimaryPass
274  if flags.Tracking.ActiveConfig.extension in ['ActsConversion', 'ActsLargeRadius', 'ActsValidateLargeRadiusStandalone']:
275  pixelSeedLabels = None
276  # Main pass does not process strip seeds in the fast tracking configuration
277  elif isFastPrimaryPass(flags):
278  stripSeedLabels = None
279 
280  # Now set the seed and estimated parameters keys accordingly
281  pixelSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}PixelSeeds']
282  stripSeedKeys = [f'{flags.Tracking.ActiveConfig.extension}StripSeeds']
283  pixelDetElements = ['ITkPixelDetectorElementCollection']
284  stripDetElements = ['ITkStripDetectorElementCollection']
285  if pixelSeedLabels is None:
286  pixelSeedKeys = None
287  pixelDetElements = None
288  if stripSeedLabels is None:
289  stripSeedKeys = None
290  stripDetElements = None
291 
292  kwargs.setdefault('ACTSTracksLocation', f"{flags.Tracking.ActiveConfig.extension}Tracks")
293  kwargs.setdefault('UncalibratedMeasurementContainerKeys', isdet(flags, pixel=[pixelClusters], strip=[stripClusters], hgtd=[hgtdClusters]))
294  kwargs.setdefault('SeedLabels', seedOrder(flags, pixel=pixelSeedLabels, strip=stripSeedLabels))
295  kwargs.setdefault('SeedContainerKeys', seedOrder(flags, pixel=pixelSeedKeys, strip=stripSeedKeys))
296  kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=pixelDetElements, strip=stripDetElements))
297 
298  acc.merge(ActsMainTrackFindingAlgCfg(flags,
299  name=f"{flags.Tracking.ActiveConfig.extension}TrackFindingAlg",
300  **kwargs))
301 
302  # Analysis extensions
303  if flags.Acts.Tracks.doAnalysis:
304  from ActsConfig.ActsAnalysisConfig import ActsTrackAnalysisAlgCfg
305  acc.merge(ActsTrackAnalysisAlgCfg(flags,
306  name=f"{flags.Tracking.ActiveConfig.extension}TrackAnalysisAlg",
307  TracksLocation=f"{flags.Tracking.ActiveConfig.extension}Tracks"))
308 
309  # Seed To Track Monitoring
310  if len(kwargs["SeedContainerKeys"]) != len(kwargs["DetectorElementsKeys"]):
311  raise AttributeError("SeedContainerKeys and DetectorElementsKeys must have same size")
312 
313  for i in range(0, len(kwargs["SeedContainerKeys"])):
314  seedKey = kwargs["SeedContainerKeys"][i]
315  detElKey = kwargs["DetectorElementsKeys"][i]
316 
317  # make seed params
318  from ActsConfig.ActsAnalysisConfig import ActsBaseSeedsToTrackParamsAlgCfg
319  acc.merge(ActsBaseSeedsToTrackParamsAlgCfg(flags,
320  name = f'{seedKey}SeedsToTrackParamsAlg',
321  InputSeedContainerKey = seedKey,
322  DetectorElementsKey = detElKey,
323  OutputTrackParamsCollectionKey = f'{seedKey}Params'))
324 
325  from ActsConfig.ActsAnalysisConfig import ActsSeedToTrackAnalysisAlgCfg
326  acc.merge(ActsSeedToTrackAnalysisAlgCfg(flags,
327  name = f'{seedKey}ToTrackAnalysisAlg',
328  InputSeedCollection = seedKey,
329  InputTrackParamsCollection = f'{seedKey}Params',
330  InputDestinyCollection = f'{seedKey}Destiny'))
331 
332  # Persistification
333  if flags.Acts.EDM.PersistifyTracks:
334  trackColl = kwargs['ACTSTracksLocation']
335  from ActsConfig.ActsTrackFindingConfig import ActsToXAODTrackConverterAlgCfg
336  acc.merge(ActsToXAODTrackConverterAlgCfg(flags,
337  name = f'{trackColl}ToXAODConverterAlg',
338  InputActsTracksLocation = trackColl,
339  OutputActsTracksLocation = trackColl))
340 
341  toAOD = []
342  prefix = f"{flags.Tracking.ActiveConfig.extension}"
343  toAOD += [f"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
344  f"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
345  f"xAOD::TrackStateContainer#{prefix}TrackStates",
346  f"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
347  f"xAOD::TrackParametersContainer#{prefix}TrackParameters",
348  f"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
349  f"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
350  f"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
351  f"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
352  f"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
353  f"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
354  f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
355  f"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
356  f"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
357  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
358  acc.merge(addToAOD(flags, toAOD))
359 
360  return acc
361 
362 

◆ ActsTrackStatePrinterToolCfg()

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

Definition at line 37 of file ActsTrackFindingConfig.py.

38  name: str = "ActsTrackStatePrinterTool",
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  if 'TrackingGeometryTool' not in kwargs:
48  from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
49  kwargs.setdefault(
50  "TrackingGeometryTool",
51  acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)),
52  )
53 
54  acc.setPrivateTools(CompFactory.ActsTrk.TrackStatePrinterTool(name, **kwargs))
55  return acc
56 
57 # ACTS only algorithm
58 

◆ ActsTrackToTrackParticleCnvAlgCfg()

ComponentAccumulator ActsTrackFindingConfig.ActsTrackToTrackParticleCnvAlgCfg (   flags,
str   name = "ActsTrackToTrackParticleCnvAlg",
**  kwargs 
)

Definition at line 461 of file ActsTrackFindingConfig.py.

462  name: str = "ActsTrackToTrackParticleCnvAlg",
463  **kwargs) -> ComponentAccumulator:
464  acc = ComponentAccumulator()
465 
466  # Beam Spot Cond is a requirement
467  from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
468  acc.merge(BeamSpotCondAlgCfg(flags))
469 
470  if 'ExtrapolationTool' not in kwargs:
471  from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
472  kwargs.setdefault('ExtrapolationTool', acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags)) )
473 
474  kwargs.setdefault('BeamSpotKey', 'BeamSpotData')
475  kwargs.setdefault('FirstAndLastParameterOnly',True)
476  kwargs.setdefault('ComputeExpectedLayerPattern',True)
477 
478  det_elements=[]
479  element_types=[]
480  if flags.Detector.EnableITkPixel:
481  det_elements += ['ITkPixelDetectorElementCollection']
482  element_types += [1]
483  if flags.Detector.EnableITkStrip:
484  det_elements += ['ITkStripDetectorElementCollection']
485  element_types += [2]
486 
487  kwargs.setdefault('SiDetectorElementCollections',det_elements)
488  kwargs.setdefault('SiDetEleCollToMeasurementType',element_types)
489  kwargs.setdefault("PerigeeExpression", flags.Tracking.perigeeExpression)
490  kwargs.setdefault('VertexContainerKey', 'PrimaryVertices')
491  acc.addEventAlgo(
492  CompFactory.ActsTrk.TrackToTrackParticleCnvAlg(name, **kwargs))
493 
494  return acc
495 

◆ isdet()

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

Definition at line 13 of file ActsTrackFindingConfig.py.

13 def isdet(flags,
14  *,
15  pixel: list = None,
16  strip: list = None,
17  hgtd: list = None,
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 ActsTrackFindingConfig.seedOrder (   flags,
*list   pixel = None,
list   strip = None 
)

Definition at line 28 of file ActsTrackFindingConfig.py.

28 def seedOrder(flags,
29  *,
30  pixel: list = None,
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 
ActsTrackFindingConfig.ActsTrackFindingCfg
ComponentAccumulator ActsTrackFindingCfg(flags, **kwargs)
Definition: ActsTrackFindingConfig.py:252
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.BeamSpotConditionsConfig.BeamSpotCondAlgCfg
def BeamSpotCondAlgCfg(flags, name="BeamSpotCondAlg", **kwargs)
Definition: BeamSpotConditionsConfig.py:7
ITkPixelConditionsConfig.ITkPixelDetectorElementStatusAlgCfg
def ITkPixelDetectorElementStatusAlgCfg(flags, name="ITkPixelDetectorElementStatusAlg", **kwargs)
Definition: ITkPixelConditionsConfig.py:178
ActsMonitoringConfig.ActsTrackFindingMonitoringToolCfg
ComponentAccumulator ActsTrackFindingMonitoringToolCfg(flags, str name="ActsTrackFindingMonitoringTool", **kwargs)
Definition: ActsMonitoringConfig.py:198
ActsEventCnvConfig.ActsToTrkConverterToolCfg
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", **kwargs)
Definition: ActsEventCnvConfig.py:6
ActsMeasurementCalibrationConfig.ActsAnalogueClusteringToolCfg
ComponentAccumulator ActsAnalogueClusteringToolCfg(flags, str name='ActsAnalogueClusteringTool', **kwargs)
Definition: ActsMeasurementCalibrationConfig.py:6
python.ITkStripConditionsAlgorithmsConfig.ITkStripDetectorElementStatusAlgCfg
def ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:91
ActsAnalysisConfig.ActsTrackAnalysisAlgCfg
ComponentAccumulator ActsTrackAnalysisAlgCfg(flags, str name="ActsTrackAnalysisAlg", **kwargs)
Definition: ActsAnalysisConfig.py:179
ActsTrackFindingConfig.ActsMainScoreBasedAmbiguityResolutionAlgCfg
ComponentAccumulator ActsMainScoreBasedAmbiguityResolutionAlgCfg(flags, str name="ActsScoreBasedAmbiguityResolutionAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:363
ActsGeometryConfig.ActsVolumeIdToDetectorCollectionMappingAlgCfg
ComponentAccumulator ActsVolumeIdToDetectorCollectionMappingAlgCfg(flags, str name="ActsVolumeIdToDetectorCollectionMappingAlgCfg", **kwargs)
Definition: ActsGeometryConfig.py:295
ActsTrackFittingConfig.ActsFitterCfg
ComponentAccumulator ActsFitterCfg(flags, str name="ActsFitterTool", Optional[TrackFitterType] fitterKind=None, **kwargs)
Definition: ActsTrackFittingConfig.py:8
ActsTrackFindingConfig.isdet
list isdet(flags, *list pixel=None, list strip=None, list hgtd=None, bool noStrip=False)
Definition: ActsTrackFindingConfig.py:13
ActsTrackFindingConfig.seedOrder
list seedOrder(flags, *list pixel=None, list strip=None)
Definition: ActsTrackFindingConfig.py:28
ActsTrackFindingConfig.ActsToXAODTrackConverterAlgCfg
ComponentAccumulator ActsToXAODTrackConverterAlgCfg(flags, str name="ActsToXAODTrackConverterAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:496
ActsGeometryConfig.ActsExtrapolationToolCfg
ComponentAccumulator ActsExtrapolationToolCfg(flags, str name="ActsExtrapolationTool", **kwargs)
Definition: ActsGeometryConfig.py:153
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
ActsTrackFindingConfig.ActsTrackStatePrinterToolCfg
ComponentAccumulator ActsTrackStatePrinterToolCfg(flags, str name="ActsTrackStatePrinterTool", **kwargs)
Definition: ActsTrackFindingConfig.py:37
ActsTrackParamsEstimationConfig.ActsTrackParamsEstimationToolCfg
ComponentAccumulator ActsTrackParamsEstimationToolCfg(ConfigFlags, str name="ActsTrackParamsEstimationTool", **kwargs)
Definition: ActsTrackParamsEstimationConfig.py:6
ActsGeometryConfig.ActsTrackingGeometryToolCfg
ComponentAccumulator ActsTrackingGeometryToolCfg(flags, str name="ActsTrackingGeometryTool")
Definition: ActsGeometryConfig.py:144
ActsAnalysisConfig.ActsBaseSeedsToTrackParamsAlgCfg
ComponentAccumulator ActsBaseSeedsToTrackParamsAlgCfg(flags, str name="", **kwargs)
Definition: ActsAnalysisConfig.py:826
ActsTrackFindingConfig.ActsAmbiguityResolutionCfg
ComponentAccumulator ActsAmbiguityResolutionCfg(flags, **kwargs)
Definition: ActsTrackFindingConfig.py:409
ActsMonitoringConfig.ActsAmbiguityResolutionMonitoringToolCfg
ComponentAccumulator ActsAmbiguityResolutionMonitoringToolCfg(flags, str name="ActsAmbiguityResolutionMonitoringTool", **kwargs)
Definition: ActsMonitoringConfig.py:215
ActsTrackFindingConfig.ActsMainAmbiguityResolutionAlgCfg
ComponentAccumulator ActsMainAmbiguityResolutionAlgCfg(flags, str name="ActsAmbiguityResolutionAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:388
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:202
ActsMeasurementCalibrationConfig.ActsStripCalibrationToolCfg
ComponentAccumulator ActsStripCalibrationToolCfg(flags, str name='ActsStripCalibrationTool', **kwargs)
Definition: ActsMeasurementCalibrationConfig.py:40
ActsTrackFindingConfig.ActsMainTrackFindingAlgCfg
ComponentAccumulator ActsMainTrackFindingAlgCfg(flags, str name="ActsTrackFindingAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:59
python.ITkActsHelpers.isFastPrimaryPass
bool isFastPrimaryPass(flags)
Definition: ITkActsHelpers.py:13
ActsTrackFindingConfig.ActsTrackToTrackParticleCnvAlgCfg
ComponentAccumulator ActsTrackToTrackParticleCnvAlgCfg(flags, str name="ActsTrackToTrackParticleCnvAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:461
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
ActsAnalysisConfig.ActsSeedToTrackAnalysisAlgCfg
ComponentAccumulator ActsSeedToTrackAnalysisAlgCfg(flags, str name="ActsSeedToTrackAnalysisAlg", **kwargs)
Definition: ActsAnalysisConfig.py:7