61 **kwargs) -> ComponentAccumulator:
62 def tolist(c):
63 return c if isinstance(c, list) else [c]
64
65 acc = ComponentAccumulator()
66
67 from ActsConfig.ActsGeometryConfig import ActsVolumeIdToDetectorCollectionMappingAlgCfg
68
69 if not flags.Acts.useHGTDClusterInTrackFinding:
70
71
72
73 kwargs.setdefault('EndOfTheWorldVolumeIds', [2, 25])
74
75 acc.merge( ActsVolumeIdToDetectorCollectionMappingAlgCfg(flags) )
76 kwargs.setdefault("ActsVolumeIdToDetectorElementCollectionMapKey", "VolumeIdToDetectorElementCollectionMap")
77
78 if flags.Detector.EnableITkPixel:
79 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
80 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
81 if flags.Detector.EnableITkStrip:
82 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
83 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
84 kwargs.setdefault("DetElStatus", seedOrder(flags, pixel=["ITkPixelDetectorElementStatus"], strip=["ITkStripDetectorElementStatus"]))
85
86
87
88
89 kwargs.setdefault("SeedLabels", seedOrder(flags, pixel=["PPP"], strip=["SSS"]))
90 kwargs.setdefault("SeedContainerKeys", seedOrder(flags, pixel=["ActsPixelSeeds"], strip=["ActsStripSeeds"]))
91 kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=['ITkPixelDetectorElementCollection'], strip=['ITkStripDetectorElementCollection']))
92 if flags.Acts.Tracks.doAnalysis:
93 kwargs.setdefault("SeedDestiny", [f'{seedkey}Destiny' for seedkey in kwargs["SeedContainerKeys"]])
94
95 kwargs.setdefault("UncalibratedMeasurementContainerKeys", isdet(flags, pixel=["ITkPixelClusters_Cached" if flags.Acts.useCache else "ITkPixelClusters"], strip=["ITkStripClusters_Cached" if flags.Acts.useCache else "ITkStripClusters"], hgtd=["HGTD_Clusters"]))
96
97 kwargs.setdefault('ACTSTracksLocation', 'ActsTracks')
98
99 kwargs.setdefault("maxPropagationStep", 10000)
100 kwargs.setdefault("skipDuplicateSeeds", flags.Acts.skipDuplicateSeeds)
101 kwargs.setdefault("seedMeasOffset", 1)
102
103
104 kwargs.setdefault("ambiStrategy", flags.Acts.AmbiguitySolverMode.value)
105
106 if (not flags.Acts.doAmbiguityResolution) :
107 kwargs.setdefault("MaximumSharedHits", 3)
108 kwargs.setdefault("MaximumIterations", 10000)
109 kwargs.setdefault("NMeasurementsMin", 7)
110
111 kwargs.setdefault("refitSeeds", seedOrder(flags, pixel=[False], strip=[False]))
112 kwargs.setdefault("doTwoWay", flags.Acts.doTwoWayCKF)
113 kwargs.setdefault("autoReverseSearch", flags.Acts.autoReverseSearchCKF)
114
115 kwargs.setdefault("forceTrackOnSeed", flags.Acts.forceTrackOnSeed and not flags.Tracking.ActiveConfig.isSecondaryPass)
116
117
118
119
120
121 if flags.Detector.GeometryITk:
122 kwargs.setdefault("etaBins", flags.Tracking.ActiveConfig.etaBins)
123
124 kwargs.setdefault("chi2CutOff", flags.Tracking.ActiveConfig.Xi2max)
125 kwargs.setdefault("chi2OutlierCutOff", flags.Tracking.ActiveConfig.Xi2maxNoAdd)
126
127 kwargs.setdefault("branchStopperPtMinFactor", 0.9)
128 kwargs.setdefault("branchStopperAbsEtaMaxExtra", 0.1)
129
130
131
132 kwargs.setdefault("branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
133 kwargs.setdefault("branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
134
135 kwargs.setdefault("numMeasurementsCutOff", [1])
136
137
138
139 kwargs.setdefault("StatisticEtaBins", [eta/10. for eta in range(5, 40, 5)])
140
141 kwargs.setdefault("absEtaMax", flags.Tracking.ActiveConfig.maxEta)
142 kwargs.setdefault("ptMin", [p / Units.GeV * UnitConstants.GeV for p in tolist(flags.Tracking.ActiveConfig.minPT)])
143
144 kwargs.setdefault("z0Min", [-flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
145 kwargs.setdefault("z0Max", [ flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
146 kwargs.setdefault("d0Min", [-d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
147 kwargs.setdefault("d0Max", [ d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
148 kwargs.setdefault("minMeasurements", tolist(flags.Tracking.ActiveConfig.minClusters))
149 kwargs.setdefault("maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
150 kwargs.setdefault("minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
151 kwargs.setdefault("maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
152 kwargs.setdefault("maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
153
154
155
156
157
158 if flags.Acts.SeedingStrategy is not SeedingStrategy.Gbts2:
159 kwargs.setdefault("ptMinMeasurements", seedOrder(flags, pixel=[3], strip=[6]))
160 kwargs.setdefault("absEtaMaxMeasurements", seedOrder(flags, pixel=[3], strip=[999999]))
161
162 if 'TrackingGeometryTool' not in kwargs:
163 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
164 kwargs.setdefault(
165 "TrackingGeometryTool",
166 acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)),
167 )
168
169 if 'ATLASConverterTool' not in kwargs:
170 from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
171 kwargs.setdefault('ATLASConverterTool', acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags)))
172
173 if 'TrackParamsEstimationTool' not in kwargs:
174 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
175
176 tpe_tool_kwargs = {}
177 if flags.Tracking.ActiveConfig.extension in ['ActsLargeRadius', 'ActsValidateLargeRadiusStandalone']:
178 tpe_tool_kwargs["allowPropagatorFailure"] = True
179
180 kwargs.setdefault('TrackParamsEstimationTool', acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags, **tpe_tool_kwargs)))
181
182 if 'ExtrapolationTool' not in kwargs:
183 from ActsConfig.ActsGeometryConfig import ActsExtrapolationToolCfg
184 kwargs.setdefault(
185 "ExtrapolationTool",
186 acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=10000)),
187 )
188
189 if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
190 kwargs.setdefault(
191 "TrackStatePrinter",
192 acc.popToolsAndMerge(ActsTrackStatePrinterToolCfg(flags)),
193 )
194
195 if 'FitterTool' not in kwargs:
196 from ActsConfig.ActsTrackFittingConfig import ActsFitterCfg
197 kwargs.setdefault(
198 'FitterTool',
199 acc.popToolsAndMerge(ActsFitterCfg(flags,
200 ReverseFilteringPt=0,
201 OutlierChi2Cut=float('inf')))
202 )
203
204 if 'PixelCalibrator' not in kwargs:
205 from AthenaConfiguration.Enums import BeamType
206
207 if not (flags.Beam.Type is BeamType.Cosmics):
208 from ActsConfig.ActsConfigFlags import PixelCalibrationStrategy
209 from ActsConfig.ActsMeasurementCalibrationConfig import ActsAnalogueClusteringToolCfg
210
211 if flags.Acts.PixelCalibrationStrategy in (PixelCalibrationStrategy.AnalogueClustering,
212 PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
213
214 kwargs.setdefault(
215 'PixelCalibrator',
216 acc.popToolsAndMerge(ActsAnalogueClusteringToolCfg(flags,
217 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
218 )
219
220 if 'StripCalibrator' not in kwargs:
221 from AthenaConfiguration.Enums import BeamType
222 if not (flags.Beam.Type is BeamType.Cosmics):
223 from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
224 from ActsConfig.ActsConfigFlags import StripCalibrationStrategy
225
226 if flags.Acts.StripCalibrationStrategy in (StripCalibrationStrategy.DigitalCalibration,
227 StripCalibrationStrategy.DigitalCalibrationAfterSelection) :
228
229 kwargs.setdefault(
230 'StripCalibrator',
231 acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags,
232 CalibrateAfterMeasurementSelection = flags.Acts.StripCalibrationStrategy is StripCalibrationStrategy.DigitalCalibrationAfterSelection))
233 )
234
235
236 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
237 from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
238 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
239 ActsTrackFindingMonitoringToolCfg(flags)))
240
241 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
242 return acc
243
244
245