Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Functions | Variables
python.ITkTrackRecoConfig Namespace Reference

Functions

def CombinedTrackingPassFlagSets (flags)
 
def ITkClusterSplitProbabilityContainerName (flags)
 
ComponentAccumulator ITkStoreTrackSeparateContainerCfg (flags, str TrackContainer="", str ClusterSplitProbContainer="")
 
def ITkTrackRecoPassCfg (flags, str previousActsExtension=None, list[str] InputCombinedITkTracks=None, list[str] InputCombinedActsTracks=None, list[str] InputExtendedITkTracks=None, list[str] StatTrackCollections=None, list[str] StatTrackTruthCollections=None, str ClusterSplitProbContainer="")
 
ComponentAccumulator ITkActsTrackFinalCfg (flags, list[str] InputCombinedITkTracks=None, ActsTrackContainerName="InDetActsTrackParticles")
 
def ITkTrackFinalCfg (flags, list[str] InputCombinedITkTracks=None, list[str] StatTrackCollections=None, list[str] StatTrackTruthCollections=None)
 
def ITkStatsCfg (flags, StatTrackCollections=None, StatTrackTruthCollections=None)
 
def ITkActsExtendedPRDInfoCfg (flags)
 
def ITkExtendedPRDInfoCfg (flags)
 
ComponentAccumulator ITkTrackRecoCfg (flags)
 Main ITk tracking config #####################. More...
 

Variables

list _flags_set = []
 
list _extensions_list = []
 
list _actsExtensions = ['Acts', 'ActsFast', 'ActsConversion', 'ActsLargeRadius', 'ActsLowPt']
 
list _outputExtensions = []
 
 flags = initConfigFlags()
 
 EnableCalo
 
 Files
 
 useITkFTF
 
 doITkFastTracking
 
 top_acc = MainServicesCfg(flags)
 
 OutputLevel
 
 withDetails
 
 True
 
 summariseProps
 
 sc = top_acc.run(5)
 

Function Documentation

◆ CombinedTrackingPassFlagSets()

def python.ITkTrackRecoConfig.CombinedTrackingPassFlagSets (   flags)

Definition at line 13 of file ITkTrackRecoConfig.py.

14  global _flags_set
15  if _flags_set:
16  return _flags_set
17 
18  flags_set = []
19 
20  # Primary Pass(es)
21  from TrkConfig.TrkConfigFlags import TrackingComponent
22  validation_configurations = {
23  TrackingComponent.ActsValidateClusters : "ActsValidateClusters",
24  TrackingComponent.ActsValidateSpacePoints : "ActsValidateSpacePoints",
25  TrackingComponent.ActsValidateSeeds : "ActsValidateSeeds",
26  TrackingComponent.ActsValidateConversionSeeds : "ActsValidateConversionSeeds",
27  TrackingComponent.ActsValidateLargeRadiusSeeds: "ActsValidateLargeRadiusSeeds",
28  TrackingComponent.ActsValidateTracks : "ActsValidateTracks",
29  TrackingComponent.ActsValidateAmbiguityResolution : "ActsValidateAmbiguityResolution",
30  }
31 
32  # Athena Pass
33  if TrackingComponent.AthenaChain in flags.Tracking.recoChain:
34  flags_set += [flags.cloneAndReplace(
35  "Tracking.ActiveConfig",
36  f"Tracking.{flags.Tracking.ITkPrimaryPassConfig.value}Pass")]
37 
38  # Acts Pass
39  if TrackingComponent.ActsChain in flags.Tracking.recoChain:
40  flags_set += [flags.cloneAndReplace(
41  "Tracking.ActiveConfig",
42  "Tracking.ITkActsPass")]
43 
44  # Acts Fast Pass
45  if TrackingComponent.ActsFastChain in flags.Tracking.recoChain:
46  flags_set += [flags.cloneAndReplace(
47  "Tracking.ActiveConfig",
48  "Tracking.ITkActsFastPass")]
49 
50  # Acts Heavy Ion Pass
51  if TrackingComponent.ActsHeavyIon in flags.Tracking.recoChain:
52  flags_set += [flags.cloneAndReplace(
53  "Tracking.ActiveConfig",
54  "Tracking.ITkActsHeavyIonPass")]
55 
56  # GNN pass
57  if TrackingComponent.GNNChain in flags.Tracking.recoChain:
58  flags_set += [flags.cloneAndReplace(
59  "Tracking.ActiveConfig",
60  "Tracking.ITkGNNPass")]
61 
62  # Acts Large Radius Pass
63  if flags.Acts.doLargeRadius:
64  flags_set += [flags.cloneAndReplace(
65  "Tracking.ActiveConfig",
66  "Tracking.ITkActsLargeRadiusPass")]
67 
68  # Acts Conversion Pass
69  if flags.Detector.EnableCalo and flags.Acts.doITkConversion and \
70  TrackingComponent.ActsValidateConversionSeeds not in flags.Tracking.recoChain:
71  flags_set += [flags.cloneAndReplace(
72  "Tracking.ActiveConfig",
73  "Tracking.ITkActsConversionPass")]
74 
75  # Acts Low Pt Pass
76  if flags.Acts.doLowPt:
77  flags_set += [flags.cloneAndReplace(
78  "Tracking.ActiveConfig",
79  "Tracking.ITkActsLowPtPass")]
80 
81  # Acts Validation Passes
82  for [configuration, key] in validation_configurations.items():
83  if configuration in flags.Tracking.recoChain:
84  toAdd = eval(f"flags.cloneAndReplace('Tracking.ActiveConfig', 'Tracking.ITk{key}Pass')")
85  flags_set += [toAdd]
86 
87  # LRT
88  if flags.Tracking.doLargeD0:
89  if flags.Tracking.useITkFTF:
90  flagsLRT = flags.cloneAndReplace("Tracking.ActiveConfig",
91  "Tracking.ITkFTFLargeD0Pass")
92  elif flags.Tracking.doITkFastTracking:
93  flagsLRT = flags.cloneAndReplace("Tracking.ActiveConfig",
94  "Tracking.ITkLargeD0FastPass")
95  else:
96  flagsLRT = flags.cloneAndReplace("Tracking.ActiveConfig",
97  "Tracking.ITkLargeD0Pass")
98  flags_set += [flagsLRT]
99 
100 
101  if TrackingComponent.FPGAChain in flags.Tracking.recoChain:
102  flags_set += [flags.cloneAndReplace(
103  "Tracking.ActiveConfig",
104  "Tracking.ITkFPGAPass")]
105 
106  # Photon conversion tracking reco
107  if flags.Detector.EnableCalo and flags.Tracking.doITkConversion:
108  flagsConv = flags.cloneAndReplace("Tracking.ActiveConfig",
109  "Tracking.ITkConversionPass")
110  flags_set += [flagsConv]
111 
112  # LowPt
113  if flags.Tracking.doLowPt:
114  flagsLowPt = flags.cloneAndReplace("Tracking.ActiveConfig",
115  "Tracking.ITkLowPtPass")
116  flags_set += [flagsLowPt]
117 
118  _flags_set = flags_set # Put into cache
119 
120  return flags_set
121 
122 

◆ ITkActsExtendedPRDInfoCfg()

def python.ITkTrackRecoConfig.ITkActsExtendedPRDInfoCfg (   flags)

Definition at line 428 of file ITkTrackRecoConfig.py.

428 def ITkActsExtendedPRDInfoCfg(flags):
429  result = ComponentAccumulator()
430 
431  #Add the truth origin to the truth particles
432  from InDetConfig.InDetPrepRawDataToxAODConfig import ITkActsPrepDataToxAODCfg
433  result.merge(ITkActsPrepDataToxAODCfg(flags))
434 
435  return result
436 

◆ ITkActsTrackFinalCfg()

ComponentAccumulator python.ITkTrackRecoConfig.ITkActsTrackFinalCfg (   flags,
list[str]   InputCombinedITkTracks = None,
  ActsTrackContainerName = "InDetActsTrackParticles" 
)

Definition at line 294 of file ITkTrackRecoConfig.py.

294 def ITkActsTrackFinalCfg(flags,
295  InputCombinedITkTracks: list[str] = None,
296  ActsTrackContainerName="InDetActsTrackParticles") -> ComponentAccumulator:
297  # Inputs must not be None
298  assert InputCombinedITkTracks is not None and isinstance(InputCombinedITkTracks, list)
299 
300  acc = ComponentAccumulator()
301  if len(InputCombinedITkTracks) == 0:
302  return acc
303 
304  # Schedule Track particle creation
305  from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg
306  acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, "ActsCombinedTrackToTrackParticleCnvAlg",
307  ACTSTracksLocation=InputCombinedITkTracks,
308  TrackParticlesOutKey=ActsTrackContainerName))
309  if flags.Tracking.doTruth :
310  from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
311  track_to_truth_maps=[]
312  for track_container in InputCombinedITkTracks :
313  track_to_truth_maps += [f'{track_container}ToTruthParticleAssociation']
314  # note: suppress stat dumps from ActsTrackParticleTruthDecorationAlg if there is only
315  # a single input collection, because it duplicates in that case the output of
316  # the TrackFindingValidationAlg
318  flags,
319  name=f'{ActsTrackContainerName}TruthDecorationAlg',
320  TrackToTruthAssociationMaps = track_to_truth_maps,
321  TrackParticleContainerName = ActsTrackContainerName,
322  OutputLevel=WARNING if len(InputCombinedITkTracks)==1 else INFO,
323  ComputeTrackRecoEfficiency=False if len(InputCombinedITkTracks)==1 else True
324  ))
325  return acc
326 

◆ ITkClusterSplitProbabilityContainerName()

def python.ITkTrackRecoConfig.ITkClusterSplitProbabilityContainerName (   flags)

Definition at line 123 of file ITkTrackRecoConfig.py.

124  flags_set = CombinedTrackingPassFlagSets(flags)
125  extension = flags_set[-1].Tracking.ActiveConfig.extension
126  ClusterSplitProbContainer = "ITkAmbiguityProcessorSplitProb" + extension
127  return ClusterSplitProbContainer
128 
129 

◆ ITkExtendedPRDInfoCfg()

def python.ITkTrackRecoConfig.ITkExtendedPRDInfoCfg (   flags)

Definition at line 437 of file ITkTrackRecoConfig.py.

437 def ITkExtendedPRDInfoCfg(flags):
438  result = ComponentAccumulator()
439 
440  if flags.Tracking.doTIDE_AmbiTrackMonitoring:
441  from InDetConfig.InDetPrepRawDataToxAODConfig import (
442  ITkPixelPrepDataToxAOD_ExtraTruthCfg as PixelPrepDataToxAODCfg,
443  ITkStripPrepDataToxAOD_ExtraTruthCfg as StripPrepDataToxAODCfg)
444  else:
445  from InDetConfig.InDetPrepRawDataToxAODConfig import (
446  ITkPixelPrepDataToxAODCfg as PixelPrepDataToxAODCfg,
447  ITkStripPrepDataToxAODCfg as StripPrepDataToxAODCfg)
448 
449  result.merge(PixelPrepDataToxAODCfg(
450  flags,
451  ClusterSplitProbabilityName=(
452  "" if flags.Tracking.doITkFastTracking else
454  result.merge(StripPrepDataToxAODCfg(flags))
455 
456  from DerivationFrameworkInDet.InDetToolsConfig import (
457  ITkTSOS_CommonKernelCfg)
458  result.merge(ITkTSOS_CommonKernelCfg(flags))
459 
460  if flags.Tracking.doStoreSiSPSeededTracks:
461  listOfExtensionsRequesting = [
462  e for e in _extensions_list if (e=='') or
463  flags.Tracking[f"ITk{e}Pass"].storeSiSPSeededTracks ]
464  from DerivationFrameworkInDet.InDetToolsConfig import (
465  ITkSiSPTSOS_CommonKernelCfg)
466  result.merge(ITkSiSPTSOS_CommonKernelCfg(flags, listOfExtensions = listOfExtensionsRequesting))
467 
468  if flags.Input.isMC:
469  listOfExtensionsRequesting = [
470  e for e in _extensions_list if (e=='') or
471  (flags.Tracking[f"ITk{e}Pass"].storeSiSPSeededTracks and
472  flags.Tracking[f"ITk{e}Pass"].storeSeparateContainer) ]
473  from InDetPhysValMonitoring.InDetPhysValDecorationConfig import (
474  ITkPhysHitDecoratorAlgCfg)
475  for extension in listOfExtensionsRequesting:
476  result.merge(ITkPhysHitDecoratorAlgCfg(
477  flags,
478  name=f"ITkPhysHit{extension}DecoratorAlg",
479  TrackParticleContainerName=f"InDet{extension}TrackParticles"))
480 
481  return result
482 
483 

◆ ITkStatsCfg()

def python.ITkTrackRecoConfig.ITkStatsCfg (   flags,
  StatTrackCollections = None,
  StatTrackTruthCollections = None 
)

Definition at line 406 of file ITkTrackRecoConfig.py.

406 def ITkStatsCfg(flags, StatTrackCollections=None,
407  StatTrackTruthCollections=None):
408  result = ComponentAccumulator()
409 
410  from InDetConfig.InDetRecStatisticsConfig import (
411  ITkRecStatisticsAlgCfg)
412  result.merge(ITkRecStatisticsAlgCfg(
413  flags,
414  TrackCollectionKeys=StatTrackCollections,
415  TrackTruthCollectionKeys=(
416  StatTrackTruthCollections if flags.Tracking.doTruth else [])))
417 
418  if flags.Tracking.doTruth:
419  from InDetConfig.InDetTrackClusterAssValidationConfig import (
420  ITkTrackClusterAssValidationCfg)
421  result.merge(ITkTrackClusterAssValidationCfg(
422  flags,
423  TracksLocation=StatTrackCollections))
424 
425  return result
426 
427 

◆ ITkStoreTrackSeparateContainerCfg()

ComponentAccumulator python.ITkTrackRecoConfig.ITkStoreTrackSeparateContainerCfg (   flags,
str   TrackContainer = "",
str   ClusterSplitProbContainer = "" 
)

Definition at line 130 of file ITkTrackRecoConfig.py.

131  TrackContainer: str ="",
132  ClusterSplitProbContainer: str = "") -> ComponentAccumulator:
133  result = ComponentAccumulator()
134  extension = flags.Tracking.ActiveConfig.extension
135  if hasattr(flags.TrackOverlay, "ActiveConfig"):
136  doTrackOverlay = getattr(flags.TrackOverlay.ActiveConfig, "doTrackOverlay", None)
137  else:
138  doTrackOverlay = flags.Overlay.doTrackOverlay
139 
140  if doTrackOverlay:
141  # schedule merger to combine signal and background tracks
142  InputTracks = [flags.Overlay.SigPrefix+TrackContainer,
143  flags.Overlay.BkgPrefix+TrackContainer]
144  AssociationMapName = ("PRDtoTrackMapMerge_Resolved" +
145  extension + "Tracks")
146  MergerOutputTracks = TrackContainer
147 
148  from TrkConfig.TrkTrackCollectionMergerConfig import TrackCollectionMergerAlgCfg
149  result.merge(TrackCollectionMergerAlgCfg(
150  flags,
151  name="TrackCollectionMergerAlgCfg"+extension,
152  InputCombinedTracks=InputTracks,
153  OutputCombinedTracks=MergerOutputTracks,
154  AssociationMapName=AssociationMapName))
155 
156  # Run truth, but only do this for non ACTS workflows
157  if flags.Tracking.doTruth and extension not in _actsExtensions:
158  from InDetConfig.ITkTrackTruthConfig import ITkTrackTruthCfg
159  result.merge(ITkTrackTruthCfg(
160  flags,
161  Tracks=TrackContainer,
162  DetailedTruth=TrackContainer+"DetailedTruth",
163  TracksTruth=TrackContainer+"TruthCollection"))
164 
165  # Create track particles from all the different track collections
166  # We have different algorithms depending on the EDM being used
167  if extension not in _actsExtensions:
168  # Workflows that use Trk Tracks
169  from xAODTrackingCnv.xAODTrackingCnvConfig import ITkTrackParticleCnvAlgCfg
170  result.merge(ITkTrackParticleCnvAlgCfg(
171  flags,
172  name=extension + "TrackParticleCnvAlg",
173  TrackContainerName=TrackContainer,
174  xAODTrackParticlesFromTracksContainerName=(
175  "InDet" + extension + "TrackParticles"),
176  ClusterSplitProbabilityName=(
177  "" if flags.Tracking.doITkFastTracking else
178  ClusterSplitProbContainer),
179  AssociationMapName=""))
180  else:
181  # Workflows that use Acts Tracks
182  from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg
183  # The following few lines will disappear once we have imposed a proper nomenclature for our algorithms and collection
184  prefix = flags.Tracking.ActiveConfig.extension
185  result.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, f"{prefix}ResolvedTrackToAltTrackParticleCnvAlg",
186  ACTSTracksLocation=[TrackContainer],
187  TrackParticlesOutKey=f'InDet{prefix}TrackParticles'))
188 
189  if flags.Tracking.doTruth :
190  from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
191  result.merge(ActsTrackParticleTruthDecorationAlgCfg(flags,
192  name=f'{TrackContainer}ParticleTruthDecorationAlg',
193  TrackToTruthAssociationMaps = [f'{TrackContainer}ToTruthParticleAssociation'],
194  TrackParticleContainerName = f'InDet{prefix}TrackParticles'
195  ))
196  return result
197 
198 
199 # Returns CA + ClusterSplitProbContainer

◆ ITkTrackFinalCfg()

def python.ITkTrackRecoConfig.ITkTrackFinalCfg (   flags,
list[str]   InputCombinedITkTracks = None,
list[str]   StatTrackCollections = None,
list[str]   StatTrackTruthCollections = None 
)

Definition at line 327 of file ITkTrackRecoConfig.py.

327 def ITkTrackFinalCfg(flags,
328  InputCombinedITkTracks: list[str] = None,
329  StatTrackCollections: list[str] = None,
330  StatTrackTruthCollections: list[str] = None):
331  # None of the input collection is supposed to be None
332  assert InputCombinedITkTracks is not None and isinstance(InputCombinedITkTracks, list)
333  assert StatTrackCollections is not None and isinstance(StatTrackCollections, list)
334  assert StatTrackTruthCollections is not None and isinstance(StatTrackTruthCollections, list)
335 
336  # If there are no tracks return directly
337  result = ComponentAccumulator()
338  if len(InputCombinedITkTracks) == 0:
339  return result
340 
341  if hasattr(flags.TrackOverlay, "ActiveConfig"):
342  doTrackOverlay = getattr(flags.TrackOverlay.ActiveConfig, "doTrackOverlay", None)
343  else:
344  doTrackOverlay = flags.Overlay.doTrackOverlay
345 
346  TrackContainer = "CombinedITkTracks"
347  if doTrackOverlay:
348  #schedule merge to combine signal and background tracks
349  InputCombinedITkTracks += [flags.Overlay.BkgPrefix + TrackContainer]
350 
351  from TrkConfig.TrkConfigFlags import TrackingComponent
352  doGNNWithoutAmbiReso = (TrackingComponent.GNNChain in flags.Tracking.recoChain and (not flags.Tracking.GNN.doAmbiResolution))
353  skipClusterMerge = doGNNWithoutAmbiReso or flags.Tracking.doITkFastTracking
354  # This merges track collections
355  from TrkConfig.TrkTrackCollectionMergerConfig import (
356  ITkTrackCollectionMergerAlgCfg)
357  result.merge(ITkTrackCollectionMergerAlgCfg(
358  flags,
359  InputCombinedTracks=InputCombinedITkTracks,
360  OutputCombinedTracks=TrackContainer,
361  AssociationMapName=(
362  "" if skipClusterMerge else
363  f"PRDtoTrackMapMerge_{TrackContainer}")))
364 
365  if flags.Tracking.doTruth:
366  from InDetConfig.ITkTrackTruthConfig import ITkTrackTruthCfg
367  result.merge(ITkTrackTruthCfg(
368  flags,
369  Tracks=TrackContainer,
370  DetailedTruth=f"{TrackContainer}DetailedTruth",
371  TracksTruth=f"{TrackContainer}TruthCollection"))
372 
373  StatTrackCollections += [TrackContainer]
374  StatTrackTruthCollections += [f"{TrackContainer}TruthCollection"]
375 
376  if flags.Tracking.doSlimming:
377  from TrkConfig.TrkTrackSlimmerConfig import TrackSlimmerCfg
378  result.merge(TrackSlimmerCfg(
379  flags,
380  TrackLocation=[TrackContainer]))
381 
382  splitProbName = ITkClusterSplitProbabilityContainerName(flags)
383 
384  # This creates track particles
385  if flags.Tracking.perigeeExpression == "BeamLine":
386  from xAODTrackingCnv.xAODTrackingCnvConfig import ITkTrackParticleCnvAlgCfg
387  result.merge(ITkTrackParticleCnvAlgCfg(
388  flags,
389  ClusterSplitProbabilityName=(
390  "" if skipClusterMerge else
391  splitProbName),
392  AssociationMapName=(
393  "" if skipClusterMerge else
394  f"PRDtoTrackMapMerge_{TrackContainer}"),
395  isActsAmbi = 'ActsValidateResolvedTracks' in splitProbName or \
396  'ActsValidateAmbiguityResolution' in splitProbName or \
397  'ActsValidateScoreBasedAmbiguityResolution' in splitProbName or \
398  'ActsConversion' in splitProbName or \
399  'ActsLargeRadius' in splitProbName or \
400  'ActsLowPt' in splitProbName or \
401  ('Acts' in splitProbName and 'Validate' not in splitProbName) ))
402 
403  return result
404 
405 

◆ ITkTrackRecoCfg()

ComponentAccumulator python.ITkTrackRecoConfig.ITkTrackRecoCfg (   flags)

Main ITk tracking config #####################.

Configures complete ITk tracking 

Definition at line 489 of file ITkTrackRecoConfig.py.

489 def ITkTrackRecoCfg(flags) -> ComponentAccumulator:
490  """Configures complete ITk tracking """
491 
492  from InDetConfig.ITkActsHelpers import primaryPassUsesActs
493  if primaryPassUsesActs(flags):
494  from InDetConfig.ITkActsTrackRecoConfig import ITkActsTrackRecoCfg
495  return ITkActsTrackRecoCfg(flags)
496 
497  result = ComponentAccumulator()
498 
499  if flags.Input.Format is Format.BS:
500  # TODO: ITk BS providers
501  raise RuntimeError("ByteStream inputs not supported")
502 
503  # Get all the requested tracking passes
504  flags_set = CombinedTrackingPassFlagSets(flags)
505 
506  # Store the names of several collections from all the different passes
507  # These collections will then be used for different purposes
508 
509  # Tracks to be ultimately merged in InDetTrackParticle collection
510  InputCombinedITkTracks = []
511  # Same but for ACTS collection
512  InputCombinedActsTracks = []
513  # Includes also tracks which end in standalone TrackParticle collections
514  InputExtendedITkTracks = []
515  # Cluster split prob container for measurement removal
516  ClusterSplitProbContainer = ""
517  # To be passed to the InDetRecStatistics alg
518  StatTrackCollections = []
519  StatTrackTruthCollections = []
520  # Record previous ACTS extension
521  previousActsExtension = None
522 
523  from InDetConfig.SiliconPreProcessing import ITkRecPreProcessingSiliconCfg
524 
525  for current_flags in flags_set:
526  printActiveConfig(current_flags)
527 
528 
529  extension = current_flags.Tracking.ActiveConfig.extension
530  if extension not in _actsExtensions:
531  _extensions_list.append(extension)
532 
533  # Add the extension to the output job option
534  _outputExtensions.append(extension)
535 
536  # Data Preparation
537  # According to the tracking pass we have different data preparation
538  # sequences. We may have:
539  # (1) Full Athena data preparation
540  # (2) Full Acts data preparation
541  # (3) Hybrid configurations with EDM converters
542  result.merge(ITkRecPreProcessingSiliconCfg(current_flags,
543  previousActsExtension=previousActsExtension))
544 
545  # Track Reconstruction
546  # This includes track finding and ambiguity resolution
547  # The output is the component accumulator to be added to the sequence
548  # and the name of the cluster split prob container that is used for
549  # removing measurements used by previous passes
550  # This last object will also assure the proper sequence of the tracking passes
551  # since it will create a data dependency from the prevous pass
552  acc, ClusterSplitProbContainer = ITkTrackRecoPassCfg(
553  current_flags,
554  previousActsExtension,
555  InputCombinedITkTracks=InputCombinedITkTracks,
556  InputCombinedActsTracks=InputCombinedActsTracks,
557  InputExtendedITkTracks=InputExtendedITkTracks,
558  StatTrackCollections=StatTrackCollections,
559  StatTrackTruthCollections=StatTrackTruthCollections,
560  ClusterSplitProbContainer=ClusterSplitProbContainer)
561  result.merge(acc)
562 
563  # Store ACTS extension
564  if 'Acts' in extension:
565  previousActsExtension = extension
566 
567  # This merges the track collection in InputCombinedITkTracks
568  # and creates a track particle collection from that
569  if InputCombinedITkTracks:
570 
571  result.merge(
572  ITkTrackFinalCfg(flags,
573  InputCombinedITkTracks=InputCombinedITkTracks,
574  StatTrackCollections=StatTrackCollections,
575  StatTrackTruthCollections=StatTrackTruthCollections))
576 
577 
578 
579 
580  # Now handle ACTS tracks instead if present in the event
581  if InputCombinedActsTracks:
582 
583  # The name of the Acts xAOD container name depends on what
584  # workflow has been executed, which we get by checking
585  # the size of the track containers.
586 
587  ActsTrackContainerName = "InDetTrackParticles" if not InputCombinedITkTracks else "InDetActsTrackParticles"
588  ActsPrimaryVertices = "PrimaryVertices" if not InputCombinedITkTracks else "ActsPrimaryVertices"
589 
590  result.merge(ITkActsTrackFinalCfg(flags,
591  InputCombinedITkTracks=InputCombinedActsTracks,
592  ActsTrackContainerName=ActsTrackContainerName))
593 
594  # Perform vertex finding
595  if flags.Tracking.doVertexFinding:
596 
597  from InDetConfig.InDetPriVxFinderConfig import primaryVertexFindingCfg
598 
599  # Schedule the usual vertex finding for Athena workflow(s)
600  # ONLY schedule this if there are Athena Legacy Track collections
601  if InputCombinedITkTracks:
602  result.merge(primaryVertexFindingCfg(flags))
603 
604  # Schedule the same vertex finding for Acts workflow(s)
605  # For now this is separate from the Athena counterpart, but in the
606  # end the difference will not be needed anymore
607  # ONLY schedule this if there are ACTS Track collections
608  if InputCombinedActsTracks:
609  result.merge(primaryVertexFindingCfg(flags,
610  name="ActsPriVxFinderAlg",
611  TracksName=ActsTrackContainerName,
612  vxCandidatesOutputName=ActsPrimaryVertices))
613 
614  # Post Processing
615  # This is mainly for validation support
616  print("-------- POST PROCESSING --------")
617  for current_flags in flags_set:
618  extension = current_flags.Tracking.ActiveConfig.extension
619  print(f"- Running post-processing for extension: {extension}")
620 
621  # Persistify the Seeds
622  # This is done for the InDet EDM, while for ACTS seeds the persistification
623  # support is done while scheduling the seeding algorithms
624  # This means that here we only care about the legacy seeds, that are
625  # produced whem the legacy Track Finding is scheduled
626  # - flags.Tracking.ActiveConfig.doAthenaTrack
627  # This also covers the case of the Acts->InDet Seed conversion, since that
628  # runs the legacy track finding as well
629  #
630  # At the end of this we have a track collection (segments from the seeds)
631  # and the corresponding track particle collection
632  if current_flags.Tracking.ActiveConfig.doAthenaTrack:
633  if current_flags.Tracking.doStoreTrackSeeds:
634  from InDetConfig.ITkPersistificationConfig import ITkTrackSeedsFinalCfg
635  result.merge(ITkTrackSeedsFinalCfg(current_flags))
636 
637  # Persistify Track from Track Finding
638  # Currently this is only possible for Trk Tracks
639  # For legacy tracking passes the CKF Trk Tracks are always produced
640  # - flags.Tracking.ActiveConfig.doAthenaTrack
641  # For hybrid ACTS-Athena tracking passes they are produced only after Track EDM conversion
642  # - flags.Tracking.ActiveConfig.doActsToAthenaTrack
643  if current_flags.Tracking.ActiveConfig.doAthenaTrack or current_flags.Tracking.ActiveConfig.doActsToAthenaTrack:
644  if current_flags.Tracking.doStoreSiSPSeededTracks:
645  from InDetConfig.ITkPersistificationConfig import ITkSiSPSeededTracksFinalCfg
646  result.merge(ITkSiSPSeededTracksFinalCfg(current_flags))
647 
648  if flags.Tracking.doStats:
649  if _extensions_list:
650  result.merge(ITkStatsCfg(
651  flags_set[0], # Use cuts from primary pass
652  StatTrackCollections=StatTrackCollections,
653  StatTrackTruthCollections=StatTrackTruthCollections))
654 
655 
656 
657  if flags.Tracking.writeExtendedSi_PRDInfo:
658  if _extensions_list:
659  result.merge(ITkExtendedPRDInfoCfg(flags))
660 
661  #Acts algorithm
662  else:
663  result.merge(ITkActsExtendedPRDInfoCfg(flags))
664 
665  # output
666  from InDetConfig.ITkTrackOutputConfig import ITkTrackRecoOutputCfg
667  result.merge(ITkTrackRecoOutputCfg(flags, _outputExtensions))
668  result.printConfig(withDetails = False, summariseProps = False)
669  return result
670 
671 

◆ ITkTrackRecoPassCfg()

def python.ITkTrackRecoConfig.ITkTrackRecoPassCfg (   flags,
str   previousActsExtension = None,
list[str]   InputCombinedITkTracks = None,
list[str]   InputCombinedActsTracks = None,
list[str]   InputExtendedITkTracks = None,
list[str]   StatTrackCollections = None,
list[str]   StatTrackTruthCollections = None,
str   ClusterSplitProbContainer = "" 
)

Definition at line 200 of file ITkTrackRecoConfig.py.

200 def ITkTrackRecoPassCfg(flags,
201  previousActsExtension: str = None,
202  InputCombinedITkTracks: list[str] = None,
203  InputCombinedActsTracks: list[str] = None,
204  InputExtendedITkTracks: list[str] = None,
205  StatTrackCollections: list[str] = None,
206  StatTrackTruthCollections: list[str] = None,
207  ClusterSplitProbContainer: str = ""):
208  # We use these lists to store the collections from all the tracking passes, thus keeping the history
209  # of previous passes. None of these lists is allowed to be a None
210  assert InputCombinedITkTracks is not None and isinstance(InputCombinedITkTracks, list)
211  assert InputCombinedActsTracks is not None and isinstance(InputCombinedActsTracks, list)
212  assert InputExtendedITkTracks is not None and isinstance(InputExtendedITkTracks, list)
213  assert StatTrackCollections is not None and isinstance(StatTrackCollections, list)
214  assert StatTrackTruthCollections is not None and isinstance(StatTrackTruthCollections ,list)
215 
216  # Get the tracking pass extension name
217  extension = flags.Tracking.ActiveConfig.extension
218 
219  result = ComponentAccumulator()
220  if hasattr(flags.TrackOverlay, "ActiveConfig"):
221  doTrackOverlay = getattr(flags.TrackOverlay.ActiveConfig, "doTrackOverlay", None)
222  else:
223  doTrackOverlay = flags.Overlay.doTrackOverlay
224 
225  # Define collection name(s)
226  # This is the track collection AFTER the ambiguity resolution
227  TrackContainer = "Resolved" + extension + "Tracks"
228  # For Acts we have another convention, with the extention as the first element in the name
229  if extension in _actsExtensions:
230  TrackContainer = extension + "ResolvedTracks"
231  if doTrackOverlay and extension == "Conversion":
232  TrackContainer = flags.Overlay.SigPrefix + TrackContainer
233 
234  # This is the track collection BEFORE the ambiguity resolution
235  SiSPSeededTracks = "SiSPSeeded" + extension + "Tracks"
236  # For ACTS the name is totally different
237  if extension in _actsExtensions:
238  SiSPSeededTracks = extension + "Tracks"
239 
240  # This performs track finding
241  from InDetConfig.ITkTrackingSiPatternConfig import ITkTrackingSiPatternCfg
242  result.merge(ITkTrackingSiPatternCfg(
243  flags,
244  previousActsExtension=previousActsExtension,
245  InputCollections=InputExtendedITkTracks,
246  ResolvedTrackCollectionKey=TrackContainer,
247  SiSPSeededTrackCollectionKey=SiSPSeededTracks,
248  ClusterSplitProbContainer=ClusterSplitProbContainer))
249  StatTrackCollections += [SiSPSeededTracks, TrackContainer]
250  StatTrackTruthCollections += [SiSPSeededTracks+"TruthCollection",
251  TrackContainer+"TruthCollection"]
252 
253  if doTrackOverlay and extension == "Conversion":
254  TrackContainer = "Resolved" + extension + "Tracks"
256  flags,
257  TrackContainer=TrackContainer,
258  ClusterSplitProbContainer=ClusterSplitProbContainer))
259 
260  if flags.Tracking.ActiveConfig.storeSeparateContainer:
261  # If we do not want the track collection to be merged with another collection
262  # then we immediately create the track particles from it
263  # This happens inside ITkStoreTrackSeparateContainerCfg
264 
265  # Track container, for ACTS workflow, depends on whether we activated the ambiguity resolution or not
266  inputTrack = TrackContainer
267  if extension in _actsExtensions and not flags.Tracking.ActiveConfig.doActsAmbiguityResolution:
268  inputTrack = SiSPSeededTracks
269 
271  flags,
272  TrackContainer=inputTrack,
273  ClusterSplitProbContainer=ClusterSplitProbContainer))
274  else:
275  # ClusterSplitProbContainer is used for removing measurements used in previous passes
276  # For ACTS this is still not possible, TO BE IMPLEMENTED
277  ClusterSplitProbContainer = (
278  "ITkAmbiguityProcessorSplitProb" + extension)
279  # Collect all the Trk Track collections to be then merged in a single big collection
280  # Merging will be done later, and after that we create track particles from the merged collection
281  if extension not in _actsExtensions:
282  InputCombinedITkTracks += [TrackContainer]
283  else:
284  InputCombinedActsTracks += [TrackContainer]
285 
286  # This is only used in this same function for the Track-PRD association
287  # Not yet supported for ACTS tracks
288  if extension not in _actsExtensions:
289  InputExtendedITkTracks += [TrackContainer]
290 
291  return result, ClusterSplitProbContainer
292 
293 

Variable Documentation

◆ _actsExtensions

list python.ITkTrackRecoConfig._actsExtensions = ['Acts', 'ActsFast', 'ActsConversion', 'ActsLargeRadius', 'ActsLowPt']
private

Definition at line 10 of file ITkTrackRecoConfig.py.

◆ _extensions_list

list python.ITkTrackRecoConfig._extensions_list = []
private

Definition at line 9 of file ITkTrackRecoConfig.py.

◆ _flags_set

list python.ITkTrackRecoConfig._flags_set = []
private

Definition at line 8 of file ITkTrackRecoConfig.py.

◆ _outputExtensions

list python.ITkTrackRecoConfig._outputExtensions = []
private

Definition at line 11 of file ITkTrackRecoConfig.py.

◆ doITkFastTracking

python.ITkTrackRecoConfig.doITkFastTracking

Definition at line 685 of file ITkTrackRecoConfig.py.

◆ EnableCalo

python.ITkTrackRecoConfig.EnableCalo

Definition at line 677 of file ITkTrackRecoConfig.py.

◆ Files

python.ITkTrackRecoConfig.Files

Definition at line 680 of file ITkTrackRecoConfig.py.

◆ flags

python.ITkTrackRecoConfig.flags = initConfigFlags()

Definition at line 674 of file ITkTrackRecoConfig.py.

◆ OutputLevel

python.ITkTrackRecoConfig.OutputLevel

Definition at line 702 of file ITkTrackRecoConfig.py.

◆ sc

python.ITkTrackRecoConfig.sc = top_acc.run(5)

Definition at line 707 of file ITkTrackRecoConfig.py.

◆ summariseProps

python.ITkTrackRecoConfig.summariseProps

Definition at line 703 of file ITkTrackRecoConfig.py.

◆ top_acc

python.ITkTrackRecoConfig.top_acc = MainServicesCfg(flags)

Definition at line 690 of file ITkTrackRecoConfig.py.

◆ True

python.ITkTrackRecoConfig.True

Definition at line 703 of file ITkTrackRecoConfig.py.

◆ useITkFTF

python.ITkTrackRecoConfig.useITkFTF

Definition at line 684 of file ITkTrackRecoConfig.py.

◆ withDetails

python.ITkTrackRecoConfig.withDetails

Definition at line 703 of file ITkTrackRecoConfig.py.

python.ITkTrackRecoConfig.ITkExtendedPRDInfoCfg
def ITkExtendedPRDInfoCfg(flags)
Definition: ITkTrackRecoConfig.py:437
python.ITkTrackRecoConfig.ITkTrackRecoCfg
ComponentAccumulator ITkTrackRecoCfg(flags)
Main ITk tracking config #####################.
Definition: ITkTrackRecoConfig.py:489
python.ActsPriVxFinderConfig.primaryVertexFindingCfg
ComponentAccumulator primaryVertexFindingCfg(flags, str name="InDetPriVxFinder", *str TracksName, str vxCandidatesOutputName=None, **kwargs)
Definition: InnerDetector/InDetConfig/python/ActsPriVxFinderConfig.py:29
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.ITkTrackTruthConfig.ITkTrackTruthCfg
def ITkTrackTruthCfg(flags, Tracks="CombinedITkTracks", DetailedTruth="CombinedITkTracksDetailedTrackTruth", TracksTruth="CombinedITkTracksTrackTruthCollection")
Definition: ITkTrackTruthConfig.py:10
python.InDetToolsConfig.ITkTSOS_CommonKernelCfg
def ITkTSOS_CommonKernelCfg(flags, name="ITkTSOS_CommonKernel")
Definition: InDetToolsConfig.py:314
python.InDetRecStatisticsConfig.ITkRecStatisticsAlgCfg
def ITkRecStatisticsAlgCfg(flags, name='ITkRecStatistics', **kwargs)
Definition: InDetRecStatisticsConfig.py:62
python.ITkActsHelpers.primaryPassUsesActs
bool primaryPassUsesActs(flags)
Definition: ITkActsHelpers.py:6
python.SiliconPreProcessing.ITkRecPreProcessingSiliconCfg
def ITkRecPreProcessingSiliconCfg(flags, *str previousActsExtension=None)
Definition: SiliconPreProcessing.py:91
xAODTrackingCnvConfig.ITkTrackParticleCnvAlgCfg
def ITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg", ClusterSplitProbabilityName="", AssociationMapName="", bool isActsAmbi=False, **kwargs)
Definition: xAODTrackingCnvConfig.py:287
python.ITkTrackRecoConfig.ITkActsTrackFinalCfg
ComponentAccumulator ITkActsTrackFinalCfg(flags, list[str] InputCombinedITkTracks=None, ActsTrackContainerName="InDetActsTrackParticles")
Definition: ITkTrackRecoConfig.py:294
python.TrackingPassFlags.printActiveConfig
def printActiveConfig(flags)
Definition: TrackingPassFlags.py:1008
python.TrkTrackCollectionMergerConfig.ITkTrackCollectionMergerAlgCfg
def ITkTrackCollectionMergerAlgCfg(flags, name="ITkTrackCollectionMerger", InputCombinedTracks=None, OutputCombinedTracks="CombinedITkTracks", **kwargs)
Definition: TrkTrackCollectionMergerConfig.py:31
python.ITkPersistificationConfig.ITkSiSPSeededTracksFinalCfg
ComponentAccumulator ITkSiSPSeededTracksFinalCfg(flags)
Definition: ITkPersistificationConfig.py:37
python.InDetToolsConfig.ITkSiSPTSOS_CommonKernelCfg
def ITkSiSPTSOS_CommonKernelCfg(flags, name="ITkSiSPTSOS_CommonKernel", listOfExtensions=[])
Definition: InDetToolsConfig.py:360
python.ITkTrackOutputConfig.ITkTrackRecoOutputCfg
def ITkTrackRecoOutputCfg(flags, extensions_list=None)
Definition: ITkTrackOutputConfig.py:6
python.TrkTrackSlimmerConfig.TrackSlimmerCfg
def TrackSlimmerCfg(flags, name="TrackSlimmer", **kwargs)
Definition: TrkTrackSlimmerConfig.py:6
python.ITkTrackRecoConfig.ITkStatsCfg
def ITkStatsCfg(flags, StatTrackCollections=None, StatTrackTruthCollections=None)
Definition: ITkTrackRecoConfig.py:406
python.ITkTrackRecoConfig.ITkStoreTrackSeparateContainerCfg
ComponentAccumulator ITkStoreTrackSeparateContainerCfg(flags, str TrackContainer="", str ClusterSplitProbContainer="")
Definition: ITkTrackRecoConfig.py:130
python.ITkTrackRecoConfig.ITkTrackFinalCfg
def ITkTrackFinalCfg(flags, list[str] InputCombinedITkTracks=None, list[str] StatTrackCollections=None, list[str] StatTrackTruthCollections=None)
Definition: ITkTrackRecoConfig.py:327
python.ITkTrackRecoConfig.ITkClusterSplitProbabilityContainerName
def ITkClusterSplitProbabilityContainerName(flags)
Definition: ITkTrackRecoConfig.py:123
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.ITkActsTrackRecoConfig.ITkActsTrackRecoCfg
ComponentAccumulator ITkActsTrackRecoCfg(flags)
Definition: ITkActsTrackRecoConfig.py:6
python.ITkTrackRecoConfig.ITkActsExtendedPRDInfoCfg
def ITkActsExtendedPRDInfoCfg(flags)
Definition: ITkTrackRecoConfig.py:428
InDetPhysValDecorationConfig.ITkPhysHitDecoratorAlgCfg
def ITkPhysHitDecoratorAlgCfg(flags, name="ITkPhysHitDecoratorAlg", **kwargs)
Definition: InDetPhysValDecorationConfig.py:65
python.InDetTrackClusterAssValidationConfig.ITkTrackClusterAssValidationCfg
def ITkTrackClusterAssValidationCfg(flags, name='ITkTrackClusterAssValidation', **kwargs)
Definition: InDetTrackClusterAssValidationConfig.py:41
python.ITkTrackingSiPatternConfig.ITkTrackingSiPatternCfg
def ITkTrackingSiPatternCfg(flags, InputCollections=None, ResolvedTrackCollectionKey=None, SiSPSeededTrackCollectionKey=None, ClusterSplitProbContainer='', previousActsExtension=None)
Definition: ITkTrackingSiPatternConfig.py:11
python.ITkPersistificationConfig.ITkTrackSeedsFinalCfg
ComponentAccumulator ITkTrackSeedsFinalCfg(flags)
Definition: ITkPersistificationConfig.py:7
python.InDetPrepRawDataToxAODConfig.ITkActsPrepDataToxAODCfg
ComponentAccumulator ITkActsPrepDataToxAODCfg(flags, PixelMeasurementContainer="ITkPixelMeasurements", StripMeasurementContainer="ITkStripMeasurements")
Definition: InDetPrepRawDataToxAODConfig.py:46
python.TrkTrackCollectionMergerConfig.TrackCollectionMergerAlgCfg
def TrackCollectionMergerAlgCfg(flags, name="InDetTrackCollectionMerger", InputCombinedTracks=None, OutputCombinedTracks="", **kwargs)
Definition: TrkTrackCollectionMergerConfig.py:7
python.ITkTrackRecoConfig.ITkTrackRecoPassCfg
def ITkTrackRecoPassCfg(flags, str previousActsExtension=None, list[str] InputCombinedITkTracks=None, list[str] InputCombinedActsTracks=None, list[str] InputExtendedITkTracks=None, list[str] StatTrackCollections=None, list[str] StatTrackTruthCollections=None, str ClusterSplitProbContainer="")
Definition: ITkTrackRecoConfig.py:200
ActsTruthConfig.ActsTrackParticleTruthDecorationAlgCfg
ComponentAccumulator ActsTrackParticleTruthDecorationAlgCfg(flags, str name='ActsTrackParticleTruthDecorationAlg', **dict kwargs)
Definition: ActsTruthConfig.py:116
python.ITkTrackRecoConfig.CombinedTrackingPassFlagSets
def CombinedTrackingPassFlagSets(flags)
Definition: ITkTrackRecoConfig.py:13
ActsTrackFindingConfig.ActsTrackToTrackParticleCnvAlgCfg
ComponentAccumulator ActsTrackToTrackParticleCnvAlgCfg(flags, str name="ActsTrackToTrackParticleCnvAlg", **kwargs)
Definition: ActsTrackFindingConfig.py:383