35def extractTrackingPasses(flags) -> list:
36
37 trackingPasses = []
38
39
40
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
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
54 if flags.Acts.doAmbiguityResolution:
55 from ActsConfig.ActsConfigFlags import AmbiguitySolverMode
56
57
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
63 trackingPasses += [flags.cloneAndReplace(
64 "Tracking.ActiveConfig",
65 f"Tracking.{flags.Tracking.ITkPrimaryPassConfig.value}Pass")]
66
67
68 if flags.Acts.doITkConversion:
69
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
77 if flags.Acts.doLargeRadius:
78 trackingPasses += [flags.cloneAndReplace(
79 "Tracking.ActiveConfig",
80 "Tracking.ITkActsLargeRadiusPass")]
81
82
83
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
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
void print(char *figname, TCanvas *c1)