56def extractTrackingPasses(flags) -> list:
57
58 trackingPasses = []
59
60
61
62 if len(flags.Tracking.recoChain) != 1:
63 raise ValueError(f"Conflicting reco configuration: Tracking.recoChain should have only one element but we found {flags.Tracking.recoChain}")
64
65
66 from TrkConfig.TrkConfigFlags import ITkPrimaryPassConfig
67 if flags.Tracking.ITkPrimaryPassConfig is ITkPrimaryPassConfig.Acts:
68 if not flags.Tracking.doITkFastTracking:
69 raise ValueError(f"Main pass is set to Acts Fast Tracking but Tracking.doITkFastTracking is set to {flags.Tracking.doITkFastTracking}")
70 else:
71 if flags.Tracking.doITkFastTracking:
72 raise ValueError(f"Main pass is NOT set to Fast Tracking but Tracking.doITkFastTracking is set to {flags.Tracking.doITkFastTracking}")
73
74
75 if flags.Acts.doAmbiguityResolution:
76 from ActsConfig.ActsConfigFlags import AmbiguitySolverMode
77
78
79 if flags.Acts.AmbiguitySolverMode is not AmbiguitySolverMode.OUTSIDE_TF:
80 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.")
81
82
83
84 trackingPasses += [flags.cloneAndReplace(
85 "Tracking.ActiveConfig",
86 f"Tracking.{flags.Tracking.ITkPrimaryPassConfig.value}Pass")]
87
88
89 if flags.Acts.doITkConversion:
90
91 if not flags.Detector.EnableCalo:
92 raise ValueError("Problem in the job configuration: required reconstruction of photon conversion tracks but Calorimeter Detector is not enabled")
93 trackingPasses += [flags.cloneAndReplace(
94 "Tracking.ActiveConfig",
95 "Tracking.ITkActsConversionPass")]
96
97
98 if flags.Acts.doLargeRadius and primaryPassUsesActs(flags):
99 trackingPasses += [flags.cloneAndReplace(
100 "Tracking.ActiveConfig",
101 "Tracking.ITkActsLargeRadiusPass")]
102
103
104
105 if flags.Acts.doLowPt:
106 trackingPasses += [flags.cloneAndReplace(
107 "Tracking.ActiveConfig",
108 "Tracking.ITkActsLowPtPass")]
109
110 print(
"List of scheduled passes:")
111 for trackingPass in trackingPasses:
112 print(f
'- {trackingPass.Tracking.ActiveConfig.extension}')
113
114
115 nPrimaryPasses = 0
116 for current_flags in trackingPasses:
117 if isPrimaryPass(current_flags):
118 nPrimaryPasses += 1
119 if nPrimaryPasses != 1:
120 raise ValueError(f"Problem in the job configuration: exactly one primary pass is required for a proper configuration, but we found {nPrimaryPasses} instead!")
121
122 return trackingPasses
123
void print(char *figname, TCanvas *c1)