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