ATLAS Offline Software
Functions
python.ITkActsHelpers Namespace Reference

Functions

bool isPrimaryPass (flags)
 
bool isFastPrimaryPass (flags)
 
bool isValidationPass (flags)
 
bool isProductionPass (flags)
 
bool primaryPassUsesActs (flags)
 
str primaryPassExtension (flags)
 
list extractTrackingPasses (flags)
 
list[strgetListOfGeneratedTrackParticles (flags)
 

Function Documentation

◆ extractTrackingPasses()

list python.ITkActsHelpers.extractTrackingPasses (   flags)

Definition at line 35 of file ITkActsHelpers.py.

35 def extractTrackingPasses(flags) -> list:
36  # Function for extracting the requested tracking passes that need to be scheduled
37  trackingPasses = []
38 
39  # Check there is only one chain
40  # for the time being we still technically allow for a list, but we should move to a single value eventually
41  if len(flags.Tracking.recoChain) != 1:
42  raise ValueError(f"Conflicting reco configuration: Tracking.recoChain should have only one element but we found {flags.Tracking.recoChain}")
43 
44  # Quick check about fast tracking configuration
45  from TrkConfig.TrkConfigFlags import ITkPrimaryPassConfig
46  if flags.Tracking.ITkPrimaryPassConfig is ITkPrimaryPassConfig.Acts:
47  if not flags.Tracking.doITkFastTracking:
48  raise ValueError(f"Main pass is set to Acts Fast Tracking but Tracking.doITkFastTracking is set to {flags.Tracking.doITkFastTracking}")
49  else:
50  if flags.Tracking.doITkFastTracking:
51  raise ValueError(f"Main pass is NOT set to Fast Tracking but Tracking.doITkFastTracking is set to {flags.Tracking.doITkFastTracking}")
52 
53  # Check the ambiguity resolution strategy
54  if flags.Acts.doAmbiguityResolution:
55  from ActsConfig.ActsConfigFlags import AmbiguitySolverMode
56  # If ambiguity resolution is requested, it means we want to schedule the ambiguity resolution algorithm
57  # this means that we must have AmbiguitySolverMode.OUTSIDE_TF
58  if flags.Acts.AmbiguitySolverMode is not AmbiguitySolverMode.OUTSIDE_TF:
59  raise ValueError(f"Conflicting reco configuration: Acts.doAmbiguityResolution has been requested and this will schedule the ACTS ambiguity solver algorithm, yet the ambiguity mode (set to {flags.Acts.AmbiguitySolverMode}) is not compatible with this.")
60 
61 
62  # Primary pass
63  trackingPasses += [flags.cloneAndReplace(
64  "Tracking.ActiveConfig",
65  f"Tracking.{flags.Tracking.ITkPrimaryPassConfig.value}Pass")]
66 
67  # Large Radius pass
68  if flags.Acts.doLargeRadius:
69  trackingPasses += [flags.cloneAndReplace(
70  "Tracking.ActiveConfig",
71  "Tracking.ITkActsLargeRadiusPass")]
72 
73  # Conversion pass
74  if flags.Acts.doITkConversion:
75  # Check that we can schedule the conversion
76  if not flags.Detector.EnableCalo:
77  raise ValueError("Problem in the job configuration: required reconstruction of photon conversion tracks but Calorimeter Detector is not enabled")
78  trackingPasses += [flags.cloneAndReplace(
79  "Tracking.ActiveConfig",
80  "Tracking.ITkActsConversionPass")]
81 
82  # Low pT pass
83  if flags.Acts.doLowPt:
84  trackingPasses += [flags.cloneAndReplace(
85  "Tracking.ActiveConfig",
86  "Tracking.ITkActsLowPtPass")]
87 
88  print("List of scheduled passes:")
89  for trackingPass in trackingPasses:
90  print(f'- {trackingPass.Tracking.ActiveConfig.extension}')
91 
92  # Check if we found a primary pass (and only one)
93  nPrimaryPasses = 0
94  for current_flags in trackingPasses:
95  if isPrimaryPass(current_flags):
96  nPrimaryPasses += 1
97  if nPrimaryPasses != 1:
98  raise ValueError(f"Problem in the job configuration: exactly one primary pass is required for a proper configuration, but we found {nPrimaryPasses} instead!")
99 
100  return trackingPasses
101 

◆ getListOfGeneratedTrackParticles()

list[str] python.ITkActsHelpers.getListOfGeneratedTrackParticles (   flags)

Definition at line 102 of file ITkActsHelpers.py.

102 def getListOfGeneratedTrackParticles(flags) -> list[str]:
103  generateTrackCollections = ["InDetTrackParticles"]
104 
105  # loop on tracking passes
106  scheduledTrackingPasses: list = extractTrackingPasses(flags)
107  for currentFlags in scheduledTrackingPasses:
108  # Add the seed tracks
109  if currentFlags.Tracking.ActiveConfig.storeTrackSeeds:
110  # pixel seeds
111  generatePixelSegments = currentFlags.Detector.EnableITkPixel
112  generateStripSegments = currentFlags.Detector.EnableITkStrip
113 
114  # For conversion pass we do not process pixels
115  if currentFlags.Tracking.ActiveConfig.extension in ["ActsConversion", "ActsLargeRadius"]:
116  generatePixelSegments = False
117  # For main pass disable strips if fast tracking configuration
118  elif isFastPrimaryPass(currentFlags):
119  generateStripSegments = False
120 
121  if generatePixelSegments:
122  generateTrackCollections += [f'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}PixelTrackParticles']
123  if generateStripSegments:
124  generateTrackCollections += [f'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}StripTrackParticles']
125  if generatePixelSegments and generateStripSegments:
126  generateTrackCollections += [f'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
127 
128  # Add CKF tracks
129  if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
130  generateTrackCollections += [f'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
131 
132  # Add tracks after ambi
133  # this is necessary only if ambiguity resolution is run and we
134  # store track particles in a separate container w.r.t InDetTrackParticles
135  if currentFlags.Acts.doAmbiguityResolution and currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
136  generateTrackCollections += [f'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
137 
138  print('Here is the list of generated track particle collections:')
139  for collection in generateTrackCollections:
140  print(f'- {collection}')
141 
142  return generateTrackCollections

◆ isFastPrimaryPass()

bool python.ITkActsHelpers.isFastPrimaryPass (   flags)

Definition at line 13 of file ITkActsHelpers.py.

13 def isFastPrimaryPass(flags) -> bool:
14  if flags.hasCategory("Tracking.ActiveConfig") and flags.Tracking.ActiveConfig.extension in ["ActsValidateF100", "ActsValidateF150"] and flags.Tracking.doITkFastTracking:
15  return True
16  return flags.Tracking.doITkFastTracking and isPrimaryPass(flags)
17 

◆ isPrimaryPass()

bool python.ITkActsHelpers.isPrimaryPass (   flags)

Definition at line 3 of file ITkActsHelpers.py.

3 def isPrimaryPass(flags) -> bool:
4  if not flags.hasCategory("Tracking.ActiveConfig"):
5  return False
6  # Support for non ACTS passes, that do not respect the convention
7  # This comes from Athena legacy passes
8  if flags.Tracking.ActiveConfig.extension in ["", "HeavyIon"]:
9  return True
10  # For ACTS the convention is respected: ITk{extension} + Pass
11  return f"ITk{flags.Tracking.ActiveConfig.extension}" == flags.Tracking.ITkPrimaryPassConfig.value
12 

◆ isProductionPass()

bool python.ITkActsHelpers.isProductionPass (   flags)

Definition at line 21 of file ITkActsHelpers.py.

21 def isProductionPass(flags) -> bool:
22  return not isValidationPass(flags)
23 

◆ isValidationPass()

bool python.ITkActsHelpers.isValidationPass (   flags)

Definition at line 18 of file ITkActsHelpers.py.

18 def isValidationPass(flags) -> bool:
19  return "Validate" in flags.Tracking.ActiveConfig.extension
20 

◆ primaryPassExtension()

str python.ITkActsHelpers.primaryPassExtension (   flags)

Definition at line 30 of file ITkActsHelpers.py.

30 def primaryPassExtension(flags) -> str:
31  # we rely on the fact that flags.Tracking.ITkPrimaryPassConfig.value is
32  # equal to ITk{extension}
33  return flags.Tracking.ITkPrimaryPassConfig.value.replace("ITk", "")
34 

◆ primaryPassUsesActs()

bool python.ITkActsHelpers.primaryPassUsesActs (   flags)

Definition at line 24 of file ITkActsHelpers.py.

24 def primaryPassUsesActs(flags) -> bool:
25  from TrkConfig.TrkConfigFlags import ITkPrimaryPassConfig
26  return flags.Tracking.ITkPrimaryPassConfig in [ITkPrimaryPassConfig.Acts, \
27  ITkPrimaryPassConfig.ActsLegacy, \
28  ITkPrimaryPassConfig.ActsHeavyIon]
29 
python.ITkActsHelpers.isPrimaryPass
bool isPrimaryPass(flags)
Definition: ITkActsHelpers.py:3
python.ITkActsHelpers.getListOfGeneratedTrackParticles
list[str] getListOfGeneratedTrackParticles(flags)
Definition: ITkActsHelpers.py:102
python.ITkActsHelpers.primaryPassUsesActs
bool primaryPassUsesActs(flags)
Definition: ITkActsHelpers.py:24
python.ITkActsHelpers.isProductionPass
bool isProductionPass(flags)
Definition: ITkActsHelpers.py:21
python.ITkActsHelpers.extractTrackingPasses
list extractTrackingPasses(flags)
Definition: ITkActsHelpers.py:35
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
python.ITkActsHelpers.isValidationPass
bool isValidationPass(flags)
Definition: ITkActsHelpers.py:18
python.ITkActsHelpers.primaryPassExtension
str primaryPassExtension(flags)
Definition: ITkActsHelpers.py:30
python.ITkActsHelpers.isFastPrimaryPass
bool isFastPrimaryPass(flags)
Definition: ITkActsHelpers.py:13