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