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  # Conversion pass
68  if flags.Acts.doITkConversion:
69  # Check that we can schedule the conversion
70  if not flags.Detector.EnableCalo:
71  raise ValueError("Problem in the job configuration: required reconstruction of photon conversion tracks but Calorimeter Detector is not enabled")
72  trackingPasses += [flags.cloneAndReplace(
73  "Tracking.ActiveConfig",
74  "Tracking.ITkActsConversionPass")]
75 
76  # Large Radius pass
77  if flags.Acts.doLargeRadius:
78  trackingPasses += [flags.cloneAndReplace(
79  "Tracking.ActiveConfig",
80  "Tracking.ITkActsLargeRadiusPass")]
81 
82 
83  # Low pT pass
84  if flags.Acts.doLowPt:
85  trackingPasses += [flags.cloneAndReplace(
86  "Tracking.ActiveConfig",
87  "Tracking.ITkActsLowPtPass")]
88 
89  print("List of scheduled passes:")
90  for trackingPass in trackingPasses:
91  print(f'- {trackingPass.Tracking.ActiveConfig.extension}')
92 
93  # Check if we found a primary pass (and only one)
94  nPrimaryPasses = 0
95  for current_flags in trackingPasses:
96  if isPrimaryPass(current_flags):
97  nPrimaryPasses += 1
98  if nPrimaryPasses != 1:
99  raise ValueError(f"Problem in the job configuration: exactly one primary pass is required for a proper configuration, but we found {nPrimaryPasses} instead!")
100 
101  return trackingPasses
102 

◆ getListOfGeneratedTrackParticles()

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

Definition at line 103 of file ITkActsHelpers.py.

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