ATLAS Offline Software
Loading...
Searching...
No Matches
ActsSeedingConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from ActsConfig.ActsConfigFlags import SeedingStrategy
6from AthenaCommon.Utils.unixtools import find_datafile
7from ActsInterop import UnitConstants as ActsUnits
8import AthenaCommon.SystemOfUnits as GaudiUnits
9
10
11def ActsGbtsFtfSeedingTrigToolCfg(flags,name: str = "GbtsFtfActsSeedingTool", **kwargs) -> ComponentAccumulator:
12 acc = ComponentAccumulator()
13
14 if "layerNumberTool" not in kwargs:
15 from TrigFastTrackFinder.TrigFastTrackFinderConfig import (
16 ITkTrigL2LayerNumberToolCfg)
17 kwargs.setdefault("layerNumberTool", acc.popToolsAndMerge(
18 ITkTrigL2LayerNumberToolCfg(
19 flags, UseNewLayerScheme=True,
20 dumpGbtsGeometry=flags.Acts.Gbts.dumpGbtsGeometry,
21 geometryDump=flags.Acts.Gbts.geometryDump)))
22
23 kwargs.setdefault("DoPhiFiltering", False) #no phi-filtering for full-scan tracking
24 kwargs.setdefault("UseBeamTilt", False)
25 kwargs.setdefault("pTmin", flags.Tracking.ActiveConfig.minPTSeed)
26 kwargs.setdefault("MaxGraphEdges", 3000000)
27
28 isLargeD0 = flags.Tracking.ActiveConfig.isLargeD0
29 kwargs.setdefault("ConnectionFileName",
30 "binTables_ITK_RUN4_LRT.txt" if isLargeD0 else
31 "binTables_ITK_RUN4.txt")
32
33 acc.setPrivateTools(CompFactory.GbtsFtfActsSeedingTool(name, **kwargs))
34 return acc
35
36
37# ACTS tools
39 flags, name: str = "ActsPixelGridTripletSeedingTool",
40 **kwargs) -> ComponentAccumulator:
41 acc = ComponentAccumulator()
42
43
44 kwargs.setdefault("numSeedIncrement" , float("inf"))
45 kwargs.setdefault("deltaZMax" , float("inf"))
46 kwargs.setdefault("maxPtScattering", float("inf"))
47 kwargs.setdefault("useVariableMiddleSPRange", False)
48 kwargs.setdefault("rMax", 320. * ActsUnits.mm)
49 kwargs.setdefault("minPt", flags.Tracking.ActiveConfig.minPTSeed *
50 ActsUnits.GeV / GaudiUnits.GeV)
51 kwargs.setdefault("impactMax", flags.Tracking.ActiveConfig.maxPrimaryImpactSeed *
52 ActsUnits.mm / GaudiUnits.mm)
53 kwargs.setdefault("rBinEdges", [0, kwargs['rMax']])
54 kwargs.setdefault("rRangeMiddleSP", [
55 [0,0],
56 [140, 260],
57 [40, 260],
58 [40, 260],
59 [40, 260],
60 [40, 260],
61 [70, 260],
62 [40, 260],
63 [40, 260],
64 [40, 260],
65 [40, 260],
66 [140, 260],
67 [0, 0]])
68
69 kwargs.setdefault("useHVCollisionRegion",
70 flags.Tracking.ActiveConfig.useHoughVertexFilter)
71 kwargs.setdefault("hvCollisionRegionTolerance", 10. * ActsUnits.mm)
72 kwargs.setdefault( "inputHoughVtx",
73 "HoughVertices" if flags.Tracking.ActiveConfig.useHoughVertexFilter else "")
74
75 acc.setPrivateTools(CompFactory.ActsTrk.GridTripletSeedingTool(name, **kwargs))
76 return acc
77
79 name: str = "ActsFastPixelSeedingTool",
80 **kwargs) -> ComponentAccumulator:
81
82 kwargs.setdefault("sigmaScattering", 2.)
83 kwargs.setdefault("maxSeedsPerSpM", 3)
84 kwargs.setdefault("collisionRegionMin", -flags.Tracking.ActiveConfig.maxZImpactSeed *
85 ActsUnits.mm / GaudiUnits.mm)
86 kwargs.setdefault("collisionRegionMax", flags.Tracking.ActiveConfig.maxZImpactSeed *
87 ActsUnits.mm / GaudiUnits.mm)
88 kwargs.setdefault("maxPhiBins", 200)
89 kwargs.setdefault("gridRMax", 250 * ActsUnits.mm)
90 kwargs.setdefault("deltaRMax", 200 * ActsUnits.mm)
91 kwargs.setdefault("zBinsCustomLooping" , [2, 10, 3, 9, 6, 4, 8, 5, 7])
92 kwargs.setdefault("rRangeMiddleSP", [
93 [0.0, 0.0],
94 [60.0, 165.0],
95 [60.0, 200.0],
96 [60.0, 200.0],
97 [60.0, 260.0],
98 [60.0, 260.0],
99 [60.0, 260.0],
100 [60.0, 200.0],
101 [60.0, 200.0],
102 [60.0, 165.0],
103 [0.0, 0.0]])
104
105 kwargs.setdefault("zBinNeighborsTop", [
106 [0, 0], # -3000, -2000
107 [-1, 0], # -2000, -1400
108 [-1, 0], # -1400, -910
109 [-1, 0], # -910, -500
110 [-1, 0], # -500, -250
111 [-1, 1], # -250, 250
112 [0, 1], # 250, 500
113 [0, 1], # 500, 910
114 [0, 1], # 910, 1400
115 [0, 1], # 1400, 2000
116 [0, 0] # 2000, 3000
117 ])
118 kwargs.setdefault("zBinNeighborsBottom", [
119 [0, 0], # -3000, -2000
120 [0, 1], # -2000, -1400
121 [0, 1], # -1400, -910
122 [0, 1], # -910, -500
123 [0, 1], # -500, -250
124 [0, 0], # -250, 250
125 [-1, 0], # 250, 500
126 [-1, 0], # 500, 910
127 [-1, 0], # 910, 1400
128 [-1, 0], # 1400, 2000
129 [0, 0] # 2000, 3000
130 ])
131
132 kwargs.setdefault("zBinEdges", [-3000., -2000, -1400., -910., -500., -250., 250., 500., 910., 1400., 2000, 3000.])
133 kwargs.setdefault("useExperimentCuts", True)
134
135 kwargs.setdefault("deltaRMaxTopSP", 220 * ActsUnits.mm)
136 kwargs.setdefault("deltaRMaxBottomSP", 135 * ActsUnits.mm)
137
138 return ActsPixelGridTripletSeedingToolCfg(flags, name, **kwargs)
139
141 name: str = "ActsStripSeedingTool",
142 **kwargs) -> ComponentAccumulator:
143 acc = ComponentAccumulator()
144
145
146 kwargs.setdefault("doSeedQualitySelection", False)
147 # For SpacePointGridConfig
148 kwargs.setdefault("gridRMax", 1000. * ActsUnits.mm)
149 kwargs.setdefault("deltaRMax", 600. * ActsUnits.mm)
150 kwargs.setdefault("impactMax", flags.Tracking.ActiveConfig.maxPrimaryImpactSeed *
151 ActsUnits.mm / GaudiUnits.mm)
152 kwargs.setdefault("minPt", flags.Tracking.ActiveConfig.minPTSeed *
153 ActsUnits.GeV / GaudiUnits.GeV)
154 # For SeedfinderConfig
155 kwargs.setdefault("rMax", flags.Tracking.ActiveConfig.radMax)
156 kwargs.setdefault("deltaRMinTopSP", 20. * ActsUnits.mm)
157 kwargs.setdefault("deltaRMaxTopSP", 300. * ActsUnits.mm)
158 kwargs.setdefault("deltaRMinBottomSP", 20. * ActsUnits.mm)
159 kwargs.setdefault("deltaRMaxBottomSP", 300. * ActsUnits.mm)
160 kwargs.setdefault("deltaZMax", 900. * ActsUnits.mm)
161 kwargs.setdefault("interactionPointCut", False)
162 kwargs.setdefault("zBinsCustomLooping", [7, 8, 6, 9, 5, 10, 4, 11, 3, 12, 2])
163 kwargs.setdefault("deltaRMiddleMinSPRange", 30 * ActsUnits.mm)
164 kwargs.setdefault("deltaRMiddleMaxSPRange", 150 * ActsUnits.mm)
165 kwargs.setdefault("useDetailedDoubleMeasurementInfo", True)
166 kwargs.setdefault("maxPtScattering", float("inf"))
167 # For SeedFilterConfig
168 kwargs.setdefault("useDeltaRorTopRadius", False)
169 kwargs.setdefault("seedConfirmationInFilter", False)
170 kwargs.setdefault("impactWeightFactor", 1.)
171 kwargs.setdefault("compatSeedLimit", 4)
172 kwargs.setdefault("numSeedIncrement", 1.)
173 kwargs.setdefault("seedWeightIncrement", 10100.)
174 kwargs.setdefault("maxSeedsPerSpMConf", 100)
175 kwargs.setdefault("maxQualitySeedsPerSpMConf", 100)
176 # For seeding algorithm
177 kwargs.setdefault("zBinNeighborsBottom", [
178 (0,0),(0,1),(0,1),(0,1),(0,2),(0,1),(0,0),
179 (-1,0),(-2,0),(-1,0),(-1,0),(-1,0),(0,0)] )
180 # Any other
181 kwargs.setdefault("rBinEdges", [0, kwargs['rMax']])
182 kwargs.setdefault("collisionRegionMin", -flags.Tracking.ActiveConfig.maxZImpactSeed *
183 ActsUnits.mm / GaudiUnits.mm)
184 kwargs.setdefault("collisionRegionMax", flags.Tracking.ActiveConfig.maxZImpactSeed *
185 ActsUnits.mm / GaudiUnits.mm)
186 kwargs.setdefault("useHVCollisionRegion",
187 flags.Tracking.ActiveConfig.useHoughVertexFilter)
188 kwargs.setdefault("hvCollisionRegionTolerance", 10. * ActsUnits.mm)
189 kwargs.setdefault("inputHoughVtx",
190 "HoughVertices" if flags.Tracking.ActiveConfig.useHoughVertexFilter else "")
191
192 acc.setPrivateTools(CompFactory.ActsTrk.GridTripletSeedingTool(name, **kwargs))
193 return acc
194
196 name: str = "ActsLargeRadiusStripSeedingTool",
197 **kwargs) -> ComponentAccumulator:
198
199 kwargs.setdefault("interactionPointCut", True)
200 kwargs.setdefault("impactMax", flags.Tracking.ActiveConfig.maxPrimaryImpactSeed *
201 ActsUnits.mm / GaudiUnits.mm)
202
204 kwargs.setdefault("doubletDPhiCut", True)
205 kwargs.setdefault("doubletDPhiCap", 0.10)
206
210 kwargs.setdefault("deltaRMax", 400. * ActsUnits.mm)
211 kwargs.setdefault("collisionRegionMin", -flags.Tracking.ActiveConfig.maxZImpactSeed *
212 ActsUnits.mm / GaudiUnits.mm)
213 kwargs.setdefault("collisionRegionMax", flags.Tracking.ActiveConfig.maxZImpactSeed *
214 ActsUnits.mm / GaudiUnits.mm)
215 kwargs.setdefault("deltaRMiddleMaxSPRange", 75 * ActsUnits.mm)
216 kwargs.setdefault("deltaRMinTopSP", 50. * ActsUnits.mm)
217 kwargs.setdefault("deltaRMaxTopSP", 250. * ActsUnits.mm)
218 kwargs.setdefault("deltaRMinBottomSP", 50. * ActsUnits.mm)
219 kwargs.setdefault("deltaRMaxBottomSP", 250. * ActsUnits.mm)
220 kwargs.setdefault("deltaZMax", 850. * ActsUnits.mm)
221 kwargs.setdefault("cotThetaMax", 5.0)
222 kwargs.setdefault("maxSeedsPerSpM", 1)
223 kwargs.setdefault("maxStripDeltaCotTheta", 0.3)
224 kwargs.setdefault("absDeltaEtaWeightFactor", 10.)
225 kwargs.setdefault("absDeltaEtaMinImpact", 2.)
226 kwargs.setdefault("zBinEdges", [-3000., -2500, -1400., -910., -500., -250.,
227 250., 500., 910., 1400., 2500, 3000.])
228 kwargs.setdefault("zBinsCustomLooping" , [2, 10, 3, 9, 6, 4, 8, 5, 7])
229 kwargs.setdefault("useVariableMiddleSPRange", False)
230 kwargs.setdefault("zBinNeighborsTop", [
231 [0, 0], # -3000, -2500
232 [-1, 0], # -2500, -1400
233 [-1, 0], # -1400, -910
234 [-1, 0], # -910, -500
235 [-1, 0], # -500, -250
236 [-1, 1], # -250, 250
237 [0, 1], # 250, 500
238 [0, 1], # 500, 910
239 [0, 1], # 910, 1400
240 [0, 1], # 1400, 2500
241 [0, 0] # 2500, 3000
242 ])
243 kwargs.setdefault("zBinNeighborsBottom", [
244 [0, 0], # -3000, -2500
245 [0, 1], # -2500, -1400
246 [0, 1], # -1400, -910
247 [0, 1], # -910, -500
248 [0, 1], # -500, -250
249 [0, 0], # -250, 250
250 [-1, 0], # 250, 500
251 [-1, 0], # 500, 910
252 [-1, 0], # 910, 1400
253 [-1, 0], # 1400, 2500
254 [0, 0] # 2500, 3000
255 ])
256 kwargs.setdefault("rRangeMiddleSP", [
257 [0.0, 0.0], # -3000, -2500
258 [400.0, 850.0], # -2500, -1400
259 [500.0, 800.0], # -1400, -910
260 [500.0, 800.0], # -910, -500
261 [500.0, 800.0], # -500, -250
262 [500.0, 800.0], # -250, 250
263 [500.0, 800.0], # 250, 500
264 [500.0, 800.0], # 500, 910
265 [500.0, 800.0], # 910, 1400
266 [400.0, 850.0], # 1400, 2500
267 [0.0, 0.0] # 2500, 3000
268 ])
269
270 kwargs.setdefault("seedConfirmation", True)
271 kwargs.setdefault("seedConfirmationInFilter", True)
272 kwargs.setdefault("zOriginWeightFactor", 1.)
273 kwargs.setdefault("maxSeedsPerSpMConf", 1)
274 kwargs.setdefault("maxQualitySeedsPerSpMConf", 1)
275 kwargs.setdefault("seedConfCentralZMin", -1400. * ActsUnits.mm)
276 kwargs.setdefault("seedConfCentralZMax", 1400. * ActsUnits.mm)
277 kwargs.setdefault("seedConfCentralRMax", 140. * ActsUnits.mm)
278 kwargs.setdefault("seedConfCentralNTopLargeR", 1)
279 kwargs.setdefault("seedConfCentralNTopSmallR", 0)
280 kwargs.setdefault("seedConfCentralMinBottomRadius", 0. * ActsUnits.mm)
281 kwargs.setdefault("seedConfCentralMaxZOrigin", 1500. * ActsUnits.mm)
282 kwargs.setdefault("seedConfCentralMinImpact", 200. * ActsUnits.mm)
283 kwargs.setdefault("seedConfForwardZMin", -3000. * ActsUnits.mm)
284 kwargs.setdefault("seedConfForwardZMax", 3000. * ActsUnits.mm)
285 kwargs.setdefault("seedConfForwardRMax", 140. * ActsUnits.mm)
286 kwargs.setdefault("seedConfForwardNTopLargeR", 1)
287 kwargs.setdefault("seedConfForwardNTopSmallR", 0)
288 kwargs.setdefault("seedConfForwardMinBottomRadius", 350. * ActsUnits.mm)
289 kwargs.setdefault("seedConfForwardMaxZOrigin", 1500. * ActsUnits.mm)
290 kwargs.setdefault("seedConfForwardMinImpact", 200. * ActsUnits.mm)
291
292 return ActsStripGridTripletSeedingToolCfg(flags, name, **kwargs)
293
295 name: str = "ActsGbtsLayerTool",
296 **kwargs) -> ComponentAccumulator:
297 """The GBTS layer geometry, built from the ITk readout geometry.
298
299 One instance is shared by every GBTS seeding tool: the layer indices it
300 hands out have to agree with the connection table they all read.
301 """
302 acc = ComponentAccumulator()
303 kwargs.setdefault("dumpGbtsGeometry", flags.Acts.Gbts.dumpGbtsGeometry)
304 kwargs.setdefault("geometryDump", flags.Acts.Gbts.geometryDump)
305 acc.setPrivateTools(CompFactory.ActsTrk.GbtsLayerTool(name, **kwargs))
306 return acc
307
308
310 name: str = "ActsPixelGbtsSeedingTool",
311 **kwargs) -> ComponentAccumulator:
312 acc = ComponentAccumulator()
313 if "layerTool" not in kwargs:
314 kwargs.setdefault(
315 "layerTool",
316 acc.popToolsAndMerge(ActsGbtsLayerToolCfg(flags))
317 )
318
319
320 kwargs.setdefault("connectorInputFile" , find_datafile(flags.Acts.Gbts.connectionTable))
321 kwargs.setdefault("lutInputFile" , find_datafile("gbts_ml_pixel_barrel_loose.lut"))
322 kwargs.setdefault("minPt" , flags.Tracking.ActiveConfig.minPTSeed *
323 ActsUnits.GeV / GaudiUnits.GeV)
324 kwargs.setdefault("d0Max", flags.Tracking.ActiveConfig.maxPrimaryImpactSeed *
325 ActsUnits.mm / GaudiUnits.mm)
326
327 acc.setPrivateTools(CompFactory.ActsTrk.GbtsSeedingTool(name, **kwargs))
328 return acc
329
331 name: str = "ActsStripGbtsSeedingTool",
332 **kwargs) -> ComponentAccumulator:
333 acc = ComponentAccumulator()
334 if "layerTool" not in kwargs:
335 kwargs.setdefault(
336 "layerTool",
337 acc.popToolsAndMerge(ActsGbtsLayerToolCfg(flags))
338 )
339
340
341 kwargs.setdefault("LRTmode", True)
342 kwargs.setdefault("usePixelConnections", False)
343 kwargs.setdefault("useStripConnections", True)
344 kwargs.setdefault("useML", False)
345 kwargs.setdefault("connectorInputFile", find_datafile(flags.Acts.Gbts.connectionTableLrt))
346
347 kwargs.setdefault("minPt", flags.Tracking.ActiveConfig.minPTSeed *
348 ActsUnits.GeV / GaudiUnits.GeV)
349 kwargs.setdefault("d0Max", flags.Tracking.ActiveConfig.maxPrimaryImpactSeed *
350 ActsUnits.mm / GaudiUnits.mm)
351 kwargs.setdefault("filterMaxZ0", 500. * ActsUnits.mm)
352 kwargs.setdefault("cutDPhiMax", 0.07)
353 kwargs.setdefault("cutDCurvMax", 0.015)
354 kwargs.setdefault("tauRatioCut", 0.015)
355 kwargs.setdefault("minZ0", -flags.Tracking.ActiveConfig.maxZImpactSeed *
356 ActsUnits.mm / GaudiUnits.mm)
357 kwargs.setdefault("maxZ0", flags.Tracking.ActiveConfig.maxZImpactSeed *
358 ActsUnits.mm / GaudiUnits.mm)
359 kwargs.setdefault("minDeltaPhi", 0.01)
360 kwargs.setdefault("maxOuterRadius", 1050.0)
361 acc.setPrivateTools(CompFactory.ActsTrk.GbtsSeedingTool(name, **kwargs))
362 return acc
363
364
365# ACTS algorithm using Athena objects upstream
367 name: str = 'PixelSeedingAlg',
368 **kwargs) -> ComponentAccumulator:
369 acc = ComponentAccumulator()
370
371 # Beam Spot Cond is a requirement
372 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
373 acc.merge(BeamSpotCondAlgCfg(flags))
374
375 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
376 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
377
378 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
379 acc.merge(ITkPixelReadoutGeometryCfg(flags))
380
381 from InDetConfig.ITkActsHelpers import isFastPrimaryPass
382 useFastTracking = kwargs.get("useFastTracking", isFastPrimaryPass(flags))
383
384 if "SeedTool" not in kwargs:
385 if flags.Tracking.ActiveConfig.SeedingStrategy is SeedingStrategy.Gbts:
386 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(
388 elif flags.Tracking.ActiveConfig.SeedingStrategy is SeedingStrategy.GbtsFtf:
389 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(
391 elif flags.Tracking.ActiveConfig.SeedingStrategy is SeedingStrategy.GridTriplet:
392 if useFastTracking:
393 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(
395 else:
396 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(
398
399 kwargs.setdefault("useFastTracking", useFastTracking)
400
401 suffix = '_Cached' if flags.Acts.useCache else ''
402 pixelSpacePoints = ['ITkPixelSpacePoints' + suffix]
403 if flags.Tracking.ActiveConfig.isSecondaryPass:
404 pixelSpacePoints = [
405 'ITk' + flags.Tracking.ActiveConfig.extension.replace("Acts", "") +
406 'PixelSpacePoints' + suffix]
407 kwargs.setdefault('InputSpacePoints', pixelSpacePoints)
408
409 kwargs.setdefault('OutputSeeds',
410 f'{flags.Tracking.ActiveConfig.extension}PixelSeeds')
411 kwargs.setdefault('UsePixel', True)
412
413 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
414 from ActsConfig.ActsMonitoringConfig import ActsITkPixelSeedingMonitoringToolCfg
415 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
416 ActsITkPixelSeedingMonitoringToolCfg(flags)))
417
418 acc.addEventAlgo(CompFactory.ActsTrk.GenericSeedingAlg(
419 flags.Tracking.ActiveConfig.extension + name, **kwargs))
420 return acc
421
422
424 name: str = 'StripSeedingAlg',
425 **kwargs) -> ComponentAccumulator:
426 acc = ComponentAccumulator()
427
428 # Beam Spot Cond is a requirement
429 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
430 acc.merge(BeamSpotCondAlgCfg(flags))
431
432 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
433 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
434
435 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
436 acc.merge(ITkStripReadoutGeometryCfg(flags))
437
438 if "SeedTool" not in kwargs:
439 if flags.Tracking.ActiveConfig.SeedingStrategy in [
440 SeedingStrategy.Gbts, SeedingStrategy.GbtsFtf]:
441 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(ActsStripGbtsSeedingToolCfg(flags)))
442 elif flags.Tracking.ActiveConfig.SeedingStrategy is SeedingStrategy.GridTriplet:
443 if flags.Tracking.ActiveConfig.isLargeD0:
444 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(
446 else:
447 kwargs.setdefault('SeedTool', acc.popToolsAndMerge(
449
450 suffix = "_Cached" if flags.Acts.useCache else ""
451 stripSpacePoints = ['ITkStripSpacePoints' + suffix,
452 'ITkStripOverlapSpacePoints' + suffix]
453 if flags.Tracking.ActiveConfig.isSecondaryPass:
454 prefix = 'ITk' + flags.Tracking.ActiveConfig.extension.replace("Acts", "")
455 stripSpacePoints = [prefix + 'StripSpacePoints' + suffix,
456 prefix + 'StripOverlapSpacePoints' + suffix]
457 # Conversion pass does not use overlap space points
458 if flags.Tracking.ActiveConfig.extension == 'ActsConversion':
459 stripSpacePoints = [prefix + 'StripSpacePoints' + suffix]
460 kwargs.setdefault('InputSpacePoints', stripSpacePoints)
461
462 kwargs.setdefault('OutputSeeds',
463 f'{flags.Tracking.ActiveConfig.extension}StripSeeds')
464 kwargs.setdefault('UsePixel', False)
465
466 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
467 from ActsConfig.ActsMonitoringConfig import ActsITkStripSeedingMonitoringToolCfg
468 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
469 ActsITkStripSeedingMonitoringToolCfg(flags)))
470
471 acc.addEventAlgo(CompFactory.ActsTrk.GenericSeedingAlg(
472 flags.Tracking.ActiveConfig.extension + name, **kwargs))
473 return acc
474
475
477 name: str = "ActsSeedToTrackCnvAlg",
478 **kwargs: dict) -> ComponentAccumulator:
479 acc = ComponentAccumulator()
480
481 kwargs.setdefault(
482 'ACTSTracksLocation',
483 f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}Tracks')
484
485 acc.addEventAlgo(CompFactory.ActsTrk.SeedToTrackCnvAlg(name, **kwargs))
486 return acc
487
488
489def ActsSeedingCfg(flags) -> ComponentAccumulator:
490 acc = ComponentAccumulator()
491
492 processPixels = flags.Tracking.ActiveConfig.useITkPixelSeeding
493 processStrips = flags.Tracking.ActiveConfig.useITkStripSeeding
494
495 if processPixels:
496 acc.merge(ActsPixelSeedingAlgCfg(flags))
497 if processStrips:
498 acc.merge(ActsStripSeedingAlgCfg(flags))
499
500 prefix = flags.Tracking.ActiveConfig.extension
501 if (flags.Tracking.ActiveConfig.storeTrackSeeds or flags.Acts.Seeds.doAnalysis):
502 if processPixels:
503 from ActsConfig.ActsAnalysisConfig import ActsPixelSeedsToTrackParamsAlgCfg
504 acc.merge(ActsPixelSeedsToTrackParamsAlgCfg(
505 flags, name = prefix + 'PixelSeedsToTrackParamsAlg',
506 InputSeedContainerKey = prefix + 'PixelSeeds',
507 OutputTrackParamsCollectionKey = prefix + 'PixelEstimatedTrackParams'))
508
509 if processStrips:
510 from ActsConfig.ActsAnalysisConfig import ActsStripSeedsToTrackParamsAlgCfg
511 acc.merge(ActsStripSeedsToTrackParamsAlgCfg(
512 flags, name = prefix + 'StripSeedsToTrackParamsAlg',
513 InputSeedContainerKey = prefix + 'StripSeeds',
514 OutputTrackParamsCollectionKey = prefix + 'StripEstimatedTrackParams'))
515
516 if flags.Acts.Seeds.doAnalysis:
517 if processPixels:
518 from ActsConfig.ActsAnalysisConfig import (
519 ActsPixelSeedAnalysisAlgCfg, ActsPixelEstimatedTrackParamsAnalysisAlgCfg)
520 acc.merge(ActsPixelSeedAnalysisAlgCfg(
521 flags, name = prefix + 'PixelSeedAnalysisAlg',
522 extension = prefix, InputSeedCollection = prefix + 'PixelSeeds'))
523
524 acc.merge(ActsPixelEstimatedTrackParamsAnalysisAlgCfg(
525 flags, name = prefix + 'PixelEstimatedTrackParamsAnalysisAlg',
526 extension = prefix,
527 InputTrackParamsCollection = prefix + 'PixelEstimatedTrackParams'))
528
529 if processStrips:
530 from ActsConfig.ActsAnalysisConfig import (
531 ActsStripSeedAnalysisAlgCfg, ActsStripEstimatedTrackParamsAnalysisAlgCfg)
532 acc.merge(ActsStripSeedAnalysisAlgCfg(
533 flags, name = prefix + 'StripSeedAnalysisAlg',
534 extension = prefix, InputSeedCollection = prefix + 'StripSeeds'))
535
536 acc.merge(ActsStripEstimatedTrackParamsAnalysisAlgCfg(
537 flags, name = prefix + 'StripEstimatedTrackParamsAnalysisAlg',
538 extension = prefix,
539 InputTrackParamsCollection = prefix + 'StripEstimatedTrackParams'))
540
541 if flags.Tracking.ActiveConfig.storeTrackSeeds:
542 if processPixels:
543 acc.merge(ActsStoreTrackSeedsCfg(
544 flags, processPixels=True, processStrips=False))
545 if processStrips:
546 acc.merge(ActsStoreTrackSeedsCfg(
547 flags, processPixels=False, processStrips=True))
548 if processPixels and processStrips:
549 acc.merge(ActsStoreTrackSeedsCfg(
550 flags, processPixels=True, processStrips=True))
551
552 return acc
553
554
556 processPixels: bool,
557 processStrips: bool) -> ComponentAccumulator:
558
559 acc = ComponentAccumulator()
560
561 prefix = flags.Tracking.ActiveConfig.extension
562 if processPixels and not processStrips:
563 prefix = prefix + 'Pixel'
564 if processStrips and not processPixels:
565 prefix = prefix + 'Strip'
566 processBoth = processPixels and processStrips
567 tracks = 'SiSPTracksSeedSegments' + prefix + 'Tracks'
568
569 # Convert seed to Acts track
570 acc.merge(ActsSeedToTrackCnvAlgCfg(
571 flags, name = prefix + 'PixelSeedToTrackCnvAlg',
572 EstimatedTrackParametersKey = (
573 [prefix + 'PixelEstimatedTrackParams', prefix + 'StripEstimatedTrackParams']
574 if processBoth else [prefix + 'EstimatedTrackParams']),
575 SeedContainerKey = (
576 [prefix + 'PixelSeeds', prefix + 'StripSeeds']
577 if processBoth else [prefix + 'Seeds']),
578 ACTSTracksLocation = tracks))
579
580 # Truth
581 if flags.Tracking.doTruth:
582 from ActsConfig.ActsTruthConfig import (
583 ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg)
584 acc.merge(ActsTrackToTruthAssociationAlgCfg(
585 flags, name = prefix + 'SeedTrackToTruthAssociationAlg',
586 ACTSTracksLocation = tracks,
587 AssociationMapOut = tracks + 'ToTruthParticleAssociation'))
588
589 acc.merge(ActsTrackFindingValidationAlgCfg(
590 flags, name = prefix + 'SeedTrackFindingValidationAlg',
591 TrackToTruthAssociationMap = tracks + 'ToTruthParticleAssociation'))
592
593 # Track Particle creation and persistification
594 from InDetConfig.ITkActsParticleCreationConfig import (
595 ITkActsTrackParticleCreationCfg)
596 acc.merge(ITkActsTrackParticleCreationCfg(
597 flags,
598 TrackContainers = [tracks],
599 TrackParticleContainer = 'SiSPSeedSegments' + prefix + 'TrackParticles'))
600
601 return acc
ComponentAccumulator ActsPixelSeedingAlgCfg(flags, str name='PixelSeedingAlg', **kwargs)
ComponentAccumulator ActsStripGridTripletSeedingToolCfg(flags, str name="ActsStripSeedingTool", **kwargs)
ComponentAccumulator ActsGbtsFtfSeedingTrigToolCfg(flags, str name="GbtsFtfActsSeedingTool", **kwargs)
ComponentAccumulator ActsGbtsLayerToolCfg(flags, str name="ActsGbtsLayerTool", **kwargs)
ComponentAccumulator ActsSeedingCfg(flags)
ComponentAccumulator ActsSeedToTrackCnvAlgCfg(flags, str name="ActsSeedToTrackCnvAlg", **dict kwargs)
ComponentAccumulator ActsStripGbtsSeedingToolCfg(flags, str name="ActsStripGbtsSeedingTool", **kwargs)
ComponentAccumulator ActsStripSeedingAlgCfg(flags, str name='StripSeedingAlg', **kwargs)
ComponentAccumulator ActsFastPixelSeedingToolCfg(flags, str name="ActsFastPixelSeedingTool", **kwargs)
ComponentAccumulator ActsStoreTrackSeedsCfg(flags, bool processPixels, bool processStrips)
ComponentAccumulator ActsLargeRadiusStripSeedingToolCfg(flags, str name="ActsLargeRadiusStripSeedingTool", **kwargs)
ComponentAccumulator ActsPixelGbtsSeedingToolCfg(flags, str name="ActsPixelGbtsSeedingTool", **kwargs)
ComponentAccumulator ActsPixelGridTripletSeedingToolCfg(flags, str name="ActsPixelGridTripletSeedingTool", **kwargs)