14 acc = ComponentAccumulator()
16 tritonMode = flags.Acts.Device.tritonMode
17 doDeviceSteps = (flags.Acts.Device.doClusterization,
18 flags.Acts.Device.doSeeding,
19 flags.Acts.Device.doTrackReconstruction)
20 if tritonMode
is DeviceTritonMode.Server
and not all(doDeviceSteps):
21 raise ValueError(
"Acts.Device.tritonMode=Server runs the full chain on "
22 "the device: Acts.Device.doClusterization, doSeeding and "
23 "doTrackReconstruction must all be True.")
24 if tritonMode
is DeviceTritonMode.Client
and any(doDeviceSteps):
25 raise ValueError(
"Acts.Device.tritonMode=Client sends the event to the "
26 "Triton server instead of running on the device: "
27 "Acts.Device.doClusterization, doSeeding and doTrackReconstruction "
31 print(f
"Setting up GPU algorithms with {flags.Device.Backend.value} backend")
33 acc.merge(DeviceDetectorDescriptionCondAlgCfg(flags))
35 if tritonMode
is DeviceTritonMode.Client:
36 from TracccTritonClient.TracccTritonClientConfig
import TritonTracccTrackMakerCfg
37 acc.merge(TritonTracccTrackMakerCfg(flags))
42 if flags.Acts.Device.doClusterization
and tritonMode
is DeviceTritonMode.Server:
44 acc.merge(DeviceClusterizationAlgCfg(flags,
45 InputTracccCells=
"TracccCellCollection",
46 OutputTracccMeasurements=
"TracccMeasurementCollection",
47 OutputTracccClusters=
"TracccClusterCollection",
48 RetrieveClusterCells=
True))
49 clustersLocation = DataLocation.DEVICE
51 elif flags.Acts.Device.doClusterization:
54 if not flags.Tracking.doPixelDigitalClustering:
55 raise ValueError(
"clusterization on device is not compatible "
56 "with analog clustering at the moment due to incorrent "
57 "ToT values for Pixel hits in the simulation data.")
60 from ActsConfig.ActsRegionsOfInterestConfig
import ActsRegionsOfInterestCreatorAlgCfg
61 acc.merge(ActsRegionsOfInterestCreatorAlgCfg(flags,
62 name=f
"{flags.Tracking.ActiveConfig.extension}RegionsOfInterestCreatorAlg"))
64 print(
"Performing clusterization on device")
67 if flags.Acts.EDM.PhaseII :
68 from ActsConfig.ActsPhaseIIRawDataEdmConfig
import (
69 PhaseIIPixelRawDataContainerCfg,
70 PhaseIIStripRawDataContainerCfg,
72 acc.merge(PhaseIIPixelRawDataContainerCfg(flags))
73 acc.merge(PhaseIIStripRawDataContainerCfg(flags))
74 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import PhaseIIRDOtoTracccCellConverterAlgCfg
75 acc.merge(PhaseIIRDOtoTracccCellConverterAlgCfg(flags,
76 TracccCells =
"TracccCellCollection",
79 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import RDOtoTracccCellConverterAlgCfg
80 acc.merge(RDOtoTracccCellConverterAlgCfg(flags,
81 TracccCells =
"TracccCellCollection",
85 acc.merge(DeviceClusterizationAlgCfg(flags,
86 InputTracccCells=
"TracccCellCollection",
87 OutputTracccMeasurements=
"TracccMeasurementCollection",
88 OutputTracccClusters=
"TracccClusterCollection",
89 RetrieveClusterCells=flags.Tracking.doTruth,
90 previousExtension=previousExtension))
91 clustersLocation = DataLocation.DEVICE
94 from InDetConfig.ITkActsDataPreparationConfig
import ITkActsDataPreparationCfg
95 acc.merge(ITkActsDataPreparationCfg(flags, previousExtension=previousExtension))
96 clustersLocation = DataLocation.HOST
99 if flags.Acts.Device.doSeeding:
101 if clustersLocation
is not DataLocation.DEVICE:
102 raise ValueError(
"Device seeding requires device clusterization "
103 "(flags.Acts.Device.doClusterization=True): it reads the "
104 "traccc measurement collection straight out of device memory "
105 "and there is currently no host->device measurement converter.")
108 from ActsGPUDataPreparation.ActsGPUDataPreparationConfig
import DeviceSPFormationAlgCfg
109 acc.merge(DeviceSPFormationAlgCfg(flags,
110 name=
"DeviceSPFormationAlg",
111 InputTracccMeasurements=
"TracccMeasurementCollection",
112 OutputTracccPixelSpacepoints=
"TracccPixelSpacepointCollection"))
114 from ActsConfig.ActsConfigFlags
import SeedingStrategy
116 print(f
"Performing seeding on device with seeding strategy set to {flags.Acts.Device.seedingStrategy}")
117 if flags.Acts.Device.seedingStrategy
is SeedingStrategy.Gbts:
118 from ActsGPUPatternRecognition.ActsGPUPatternRecognitionConfig
import DeviceGBTSSeedingAlgCfg
119 acc.merge(DeviceGBTSSeedingAlgCfg(flags,
120 name=
"DeviceGBTSSeedingAlg",
121 InputTracccPixelSpacepoints=
"TracccPixelSpacepointCollection",
122 InputTracccMeasurements=
"TracccMeasurementCollection",
123 OutputTracccPixelSeeds=
"TracccPixelSeedCollection"))
125 from ActsGPUPatternRecognition.ActsGPUPatternRecognitionConfig
import DeviceTripletSeedingAlgCfg
126 acc.merge(DeviceTripletSeedingAlgCfg(flags,
127 name=
"DeviceTripletSeedingAlg",
128 InputTracccPixelSpacepoints=
"TracccPixelSpacepointCollection",
129 OutputTracccPixelSeeds=
"TracccPixelSeedCollection"))
131 seedsLocation = DataLocation.DEVICE
137 if clustersLocation
is DataLocation.DEVICE:
138 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import TracccMeasurementConverterAlgCfg
139 acc.merge(TracccMeasurementConverterAlgCfg(flags,
140 InputMeasurements=
"TracccMeasurementCollection",
141 InputClusters=
"TracccClusterCollection",
142 InputCells=
"TracccCellCollection",
143 ConvertClustersWithCells = flags.Tracking.doTruth,
144 OutputPixelSpacePoints=
"ITkPixelSpacePoints",
145 OutputPixelClusters=
"ITkPixelClusters",
146 OutputStripClusters=
"ITkStripClusters"
149 from ActsConfig.ActsSpacePointFormationConfig
import ActsStripSpacePointFormationAlgCfg
150 acc.merge(ActsStripSpacePointFormationAlgCfg(flags,
151 name=f
"{flags.Tracking.ActiveConfig.extension}StripSpacePointFormationAlg",
152 StripClusters=
"ITkStripClusters",
153 StripSpacePoints=
"ITkStripSpacePoints",
154 StripOverlapSpacePoints=
"ITkStripOverlapSpacePoints"))
156 clustersLocation = DataLocation.HOST
162 if flags.Tracking.doTruth:
163 from ActsConfig.ActsTruthConfig
import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
164 acc.merge(ActsTruthAssociationAlgCfg(flags))
165 acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
167 from ActsConfig.ActsSeedingConfig
import ActsSeedingCfg
168 acc.merge(ActsSeedingCfg(flags))
169 seedsLocation = DataLocation.HOST
173 if flags.Acts.Device.doTrackReconstruction:
175 if clustersLocation
is not DataLocation.DEVICE
or seedsLocation
is not DataLocation.DEVICE:
176 raise ValueError(
"Device track reconstruction requires device clusterization "
177 "(flags.Acts.Device.doClusterization=True) and device seeding "
178 "(flags.Acts.Device.doSeeding=True): it reads the traccc measurement "
179 "and seed collections straight out of device memory and there is "
180 "currently no host->device converter for these yet.")
183 from ActsGPUMagField.ActsGPUMagFieldConfig
import JSONDeviceMagFieldProviderSvcCfg
184 acc.merge(JSONDeviceMagFieldProviderSvcCfg(flags,
185 DeviceMagFieldObjectName=
"TracccMagneticField",
186 HostMagFieldObjectName=
"TracccHostMagField",
189 from ActsGPUPatternRecognition.ActsGPUPatternRecognitionConfig
import DeviceTrkParamEstimationAlgCfg, DeviceTrackFindingAlgCfg
190 acc.merge(DeviceTrkParamEstimationAlgCfg(flags,
191 InputTracccSpacepoints=
"TracccPixelSpacepointCollection",
192 InputTracccMeasurements=
"TracccMeasurementCollection",
193 InputTracccSeeds=
"TracccPixelSeedCollection",
194 InputTracccMagField=
"TracccMagneticField",
195 OutputTracccTrackParameters=
"TracccTrackParameterCollection",
198 acc.merge(DeviceTrackFindingAlgCfg(flags,
199 InputTracccMeasurements=
"TracccMeasurementCollection",
200 InputTracccMagField=
"TracccMagneticField",
201 InputTracccTrackParameters=
"TracccTrackParameterCollection",
202 InputTracccDetectorGeometry=
"TracccDeviceDetectorGeometry",
203 OutputTracccTracks=
"TracccTrackCollection",
207 if tritonMode
is DeviceTritonMode.Server:
210 if clustersLocation
is not DataLocation.DEVICE:
211 acc.merge(TracccMeasurementConverterAlgCfg(flags,
212 InputMeasurements=
"TracccMeasurementCollection",
213 InputClusters=
"TracccClusterCollection",
214 InputCells=
"TracccCellCollection",
215 ConvertClustersWithCells = flags.Tracking.doTruth,
216 OutputPixelClusters=
"ITkPixelClusters",
217 OutputPixelSpacePoints=
"ITkPixelSpacePoints",
218 OutputMeasToPixelSP=
"ITkTracccMeasToPixelSP",
219 OutputMeasToStripCl=
"ITkTracccMeasToStripCl",
220 OutputStripClusters=
"ITkStripClusters",
221 GeoIdMapping=
"TracccGeoIdMapping",
224 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import TracccTrackConverterAlgCfg, TracccMeasurementConverterAlgCfg
225 if clustersLocation
is DataLocation.DEVICE:
226 acc.merge(TracccMeasurementConverterAlgCfg(flags,
227 InputMeasurements=
"TracccMeasurementCollection",
228 InputClusters=
"TracccClusterCollection",
229 InputCells=
"TracccCellCollection",
230 ConvertClustersWithCells = flags.Tracking.doTruth,
231 OutputPixelClusters=
"ITkPixelClusters",
232 OutputPixelSpacePoints=
"ITkPixelSpacePoints",
233 OutputMeasToPixelSP=
"ITkTracccMeasToPixelSP",
234 OutputMeasToStripCl=
"ITkTracccMeasToStripCl",
235 OutputStripClusters=
"ITkStripClusters"
240 if flags.Tracking.ActiveConfig.useITkStripSeeding
or (flags.Acts.SpacePoints.doStrip
and not flags.Tracking.ActiveConfig.isSecondaryPass):
241 from ActsConfig.ActsSpacePointFormationConfig
import ActsStripSpacePointFormationAlgCfg
242 acc.merge(ActsStripSpacePointFormationAlgCfg(flags,
243 name=f
"{flags.Tracking.ActiveConfig.extension}StripSpacePointFormationAlg",
244 StripClusters=
"ITkStripClusters",
245 StripSpacePoints=
"ITkStripSpacePoints",
246 StripOverlapSpacePoints=
"ITkStripOverlapSpacePoints"))
248 acc.merge(TracccTrackConverterAlgCfg(flags,
249 InputPixelClusters=
"ITkPixelClusters",
250 InputStripClusters=
"ITkStripClusters",
251 InputMeasToPixelSP=
"ITkTracccMeasToPixelSP",
252 InputMeasToStripCl=
"ITkTracccMeasToStripCl",
253 InputTracks=
"TracccTrackCollection",
254 OutputTracks=f
"{flags.Tracking.ActiveConfig.extension}Tracks",
262 if clustersLocation
is DataLocation.DEVICE:
263 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import TracccMeasurementConverterAlgCfg
264 acc.merge(TracccMeasurementConverterAlgCfg(flags,
265 InputMeasurements=
"TracccMeasurementCollection",
266 InputClusters=
"TracccClusterCollection",
267 InputCells=
"TracccCellCollection",
268 ConvertClustersWithCells = flags.Tracking.doTruth,
269 OutputPixelClusters=
"ITkPixelClusters",
270 OutputPixelSpacePoints=
"ITkPixelSpacePoints",
271 OutputMeasToPixelSP=
"ITkTracccMeasToPixelSP",
272 OutputMeasToStripCl=
"ITkTracccMeasToStripCl",
273 OutputStripClusters=
"ITkStripClusters"
275 from ActsConfig.ActsSpacePointFormationConfig
import ActsStripSpacePointFormationAlgCfg
276 acc.merge(ActsStripSpacePointFormationAlgCfg(flags,
277 name=f
"{flags.Tracking.ActiveConfig.extension}StripSpacePointFormationAlg",
278 StripClusters=
"ITkStripClusters",
279 StripSpacePoints=
"ITkStripSpacePoints",
280 StripOverlapSpacePoints=
"ITkStripOverlapSpacePoints"))
281 clustersLocation = DataLocation.HOST
283 if seedsLocation
is DataLocation.DEVICE:
284 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import TracccSeedConverterAlgCfg
286 acc.merge(TracccSeedConverterAlgCfg(flags,
287 name=
"TracccSeedConverterAlg",
288 InputSpacepointsDevice=
"TracccPixelSpacepointCollection",
289 InputSpacepoints=
"ITkPixelSpacePoints",
290 InputMeasToPixelSP=
"ITkTracccMeasToPixelSP",
291 InputSeeds=
"TracccPixelSeedCollection",
292 OutputSeeds=f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds'))
293 seedsLocation = DataLocation.HOST
296 from ActsConfig.ActsTrackFindingConfig
import ActsTrackFindingCfg
297 acc.merge(ActsTrackFindingCfg(flags))
300 if flags.Acts.doAmbiguityResolution:
301 from ActsConfig.ActsTrackFindingConfig
import ActsAmbiguityResolutionCfg
302 acc.merge(ActsAmbiguityResolutionCfg(flags))
309 """PRD association and truth for the tracks of the primary pass, once
310 they are converted back to the host."""
311 acc = ComponentAccumulator()
314 from ActsConfig.ActsPrdAssociationConfig
import ActsPrdAssociationAlgCfg
315 acc.merge(ActsPrdAssociationAlgCfg(flags,
316 name = f
'{flags.Tracking.ActiveConfig.extension}PrdAssociationAlg',
317 previousActsExtension = previousExtension))
320 if flags.Tracking.doTruth:
323 from ActsConfig.ActsTruthConfig
import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
324 acc.merge(ActsTruthAssociationAlgCfg(flags))
325 acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
326 if flags.Acts.doTruthInspection:
327 from ActsConfig.ActsInspectTruthContentConfig
import ActsInspectTruthContentAlgCfg
328 acc.merge(ActsInspectTruthContentAlgCfg(flags))
334 if flags.Tracking.ActiveConfig.storeSiSPSeededTracks
or not flags.Acts.doAmbiguityResolution:
335 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
336 acts_tracks = f
"{flags.Tracking.ActiveConfig.extension}Tracks"
337 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
338 name = f
"{acts_tracks}TrackToTruthAssociationAlg",
339 ACTSTracksLocation = acts_tracks,
340 AssociationMapOut = f
"{acts_tracks}ToTruthParticleAssociation"))
342 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
343 name = f
"{acts_tracks}TrackFindingValidationAlg",
344 TrackToTruthAssociationMap = f
"{acts_tracks}ToTruthParticleAssociation"))
348 if flags.Acts.doAmbiguityResolution:
349 acts_tracks = f
"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
350 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
351 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
352 name = f
"{acts_tracks}TrackToTruthAssociationAlg",
353 ACTSTracksLocation = acts_tracks,
354 AssociationMapOut = f
"{acts_tracks}ToTruthParticleAssociation"))
356 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
357 name = f
"{acts_tracks}TrackFindingValidationAlg",
358 TrackToTruthAssociationMap = f
"{acts_tracks}ToTruthParticleAssociation"))
361 if flags.Tracking.ActiveConfig.storeTrackSeeds
and flags.Acts.Device.doSeeding:
362 from ActsConfig.ActsSeedingConfig
import ActsStoreTrackSeedsCfg
363 from ActsConfig.ActsAnalysisConfig
import ActsPixelSeedsToTrackParamsAlgCfg, ActsStripSeedsToTrackParamsAlgCfg
364 processPixels = flags.Tracking.ActiveConfig.useITkPixelSeeding
365 processStrips = flags.Tracking.ActiveConfig.useITkStripSeeding
367 prefix = flags.Tracking.ActiveConfig.extension
369 if flags.Acts.Device.doTrackReconstruction:
370 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import TracccSeedConverterAlgCfg
371 acc.merge(TracccSeedConverterAlgCfg(flags,
372 name=
"TracccSeedConverterAlg",
373 InputSpacepointsDevice=
"TracccPixelSpacepointCollection",
374 InputSpacepoints=
"ITkPixelSpacePoints",
375 InputMeasToPixelSP=
"ITkTracccMeasToPixelSP",
376 InputSeeds=
"TracccPixelSeedCollection",
377 OutputSeeds=f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds'))
381 acc.merge(ActsPixelSeedsToTrackParamsAlgCfg(
383 name = prefix +
'PixelSeedsToTrackParamsAlg',
384 InputSeedContainerKey = prefix +
'PixelSeeds',
385 OutputTrackParamsCollectionKey = prefix +
'PixelEstimatedTrackParams'))
387 acc.merge(ActsStripSeedsToTrackParamsAlgCfg(
389 name = prefix +
'StripSeedsToTrackParamsAlg',
390 InputSeedContainerKey = prefix +
'StripSeeds',
391 OutputTrackParamsCollectionKey = prefix +
'StripEstimatedTrackParams'))
394 acc.merge(ActsStoreTrackSeedsCfg(flags,processPixels=
True, processStrips=
False))
396 acc.merge(ActsStoreTrackSeedsCfg(flags,processPixels=
False, processStrips=
True))
397 if processPixels
and processStrips:
398 acc.merge(ActsStoreTrackSeedsCfg(flags,processPixels=
True, processStrips=
True))
404 """Secondary tracking pass with data preparation on the host and
405 seeding and track finding on the device.
407 The clusters and space points of the pass are prepared on the host from
408 the objects of the previous pass (PRD association), converted to traccc
409 measurements and spacepoints, and the seeds and tracks are reconstructed
410 on the device. The tracks are converted back to an ACTS track container
411 named as for the host reconstruction of the pass.
413 acc = ComponentAccumulator()
415 if previousExtension
is None:
416 raise ValueError(
"A secondary pass on the device requires a previous pass")
418 extension = flags.Tracking.ActiveConfig.extension
419 prefix = f
"ITk{extension.replace('Acts', '')}"
420 pixelClusters = f
"{prefix}PixelClusters"
421 stripClusters = f
"{prefix}StripClusters"
423 if flags.Tracking.ActiveConfig.useITkPixelSeeding:
424 raise ValueError(
"Pixel seeding on the device is not supported for secondary passes")
425 if not flags.Tracking.ActiveConfig.useITkStripSeeding:
426 raise ValueError(
"Secondary pass on the device requires strip seeding")
428 print(f
"Setting up GPU algorithms for the {extension} pass with {flags.Device.Backend.value} backend")
431 acc.merge(DeviceDetectorDescriptionCondAlgCfg(flags))
433 from ActsGPUMagField.ActsGPUMagFieldConfig
import JSONDeviceMagFieldProviderSvcCfg
434 acc.merge(JSONDeviceMagFieldProviderSvcCfg(flags,
435 DeviceMagFieldObjectName=
"TracccMagneticField",
436 HostMagFieldObjectName=
"TracccHostMagField",
440 from InDetConfig.ITkActsDataPreparationConfig
import ITkActsDataPreparationCfg
441 acc.merge(ITkActsDataPreparationCfg(flags, previousExtension=previousExtension))
444 measurements = f
"Traccc{extension}MeasurementCollection"
445 measToPixelCluster = f
"Traccc{extension}MeasToPixelCluster"
446 measToStripCluster = f
"Traccc{extension}MeasToStripCluster"
447 stripSpacepoints = f
"Traccc{extension}StripSpacepointCollection"
449 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import (
450 xAODToTracccMeasurementConverterAlgCfg,
451 xAODToTracccSpacePointConverterAlgCfg,
453 acc.merge(xAODToTracccMeasurementConverterAlgCfg(flags,
454 name=f
"{extension}MeasurementConverterAlg",
455 InputPixelClusters=pixelClusters,
456 InputStripClusters=stripClusters,
457 OutputTracccMeasurements=measurements,
458 OutputMeasToPixelCluster=measToPixelCluster,
459 OutputMeasToStripCluster=measToStripCluster,
462 stripSpacePoints = [f
"{prefix}StripSpacePoints"]
463 if extension !=
"ActsConversion":
464 stripSpacePoints += [f
"{prefix}StripOverlapSpacePoints"]
465 acc.merge(xAODToTracccSpacePointConverterAlgCfg(flags,
466 name=f
"{extension}StripSpacePointConverterAlg",
467 InputSpacePoints=stripSpacePoints,
468 InputMeasToCluster=measToStripCluster,
469 OutputTracccSpacepoints=stripSpacepoints,
473 seeds = f
"Traccc{extension}StripSeedCollection"
474 from ActsGPUPatternRecognition.ActsGPUPatternRecognitionConfig
import (
475 DeviceLargeRadiusStripTripletSeedingAlgCfg,
476 DeviceTrkParamEstimationAlgCfg,
477 DeviceLargeRadiusTrackFindingAlgCfg,
479 acc.merge(DeviceLargeRadiusStripTripletSeedingAlgCfg(flags,
480 name=f
"{extension}DeviceStripTripletSeedingAlg",
481 InputTracccPixelSpacepoints=stripSpacepoints,
482 OutputTracccPixelSeeds=seeds,
486 trackParameters = f
"Traccc{extension}TrackParameterCollection"
487 tracccTracks = f
"Traccc{extension}TrackCollection"
488 acc.merge(DeviceTrkParamEstimationAlgCfg(flags,
489 name=f
"{extension}DeviceTrkParamEstimationAlg",
490 InputTracccSpacepoints=stripSpacepoints,
491 InputTracccMeasurements=measurements,
492 InputTracccSeeds=seeds,
493 InputTracccMagField=
"TracccMagneticField",
494 OutputTracccTrackParameters=trackParameters,
497 acc.merge(DeviceLargeRadiusTrackFindingAlgCfg(flags,
498 name=f
"{extension}DeviceTrackFindingAlg",
499 InputTracccMeasurements=measurements,
500 InputTracccMagField=
"TracccMagneticField",
501 InputTracccTrackParameters=trackParameters,
502 InputTracccDetectorGeometry=
"TracccDeviceDetectorGeometry",
503 OutputTracccTracks=tracccTracks,
509 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import TracccTrackConverterAlgCfg
510 acc.merge(TracccTrackConverterAlgCfg(flags,
511 name=f
"{extension}TracccTrackConverterAlg",
512 InputPixelClusters=
"ITkPixelClusters",
513 InputStripClusters=
"ITkStripClusters",
514 InputMeasToPixelSP=measToPixelCluster,
515 InputMeasToStripCl=measToStripCluster,
516 InputTracks=tracccTracks,
517 OutputTracks=f
"{extension}Tracks",
518 GeoIdMapping=
"TracccGeometryIdMapping",
519 HostDetectorName=
"TracccHostDetectorGeometry",
523 if flags.Acts.doAmbiguityResolution:
524 from ActsConfig.ActsTrackFindingConfig
import ActsAmbiguityResolutionCfg
525 acc.merge(ActsAmbiguityResolutionCfg(flags))
528 from ActsConfig.ActsPrdAssociationConfig
import ActsPrdAssociationAlgCfg
529 acc.merge(ActsPrdAssociationAlgCfg(flags,
530 name = f
'{extension}PrdAssociationAlg',
531 previousActsExtension = previousExtension))
534 if flags.Tracking.doTruth:
535 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
536 if flags.Tracking.ActiveConfig.storeSiSPSeededTracks
or not flags.Acts.doAmbiguityResolution:
537 acts_tracks = f
"{extension}Tracks"
538 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
539 name = f
"{acts_tracks}TrackToTruthAssociationAlg",
540 ACTSTracksLocation = acts_tracks,
541 AssociationMapOut = f
"{acts_tracks}ToTruthParticleAssociation"))
542 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
543 name = f
"{acts_tracks}TrackFindingValidationAlg",
544 TrackToTruthAssociationMap = f
"{acts_tracks}ToTruthParticleAssociation"))
546 if flags.Acts.doAmbiguityResolution:
547 acts_tracks = f
"{extension}ResolvedTracks"
548 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
549 name = f
"{acts_tracks}TrackToTruthAssociationAlg",
550 ACTSTracksLocation = acts_tracks,
551 AssociationMapOut = f
"{acts_tracks}ToTruthParticleAssociation"))
552 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
553 name = f
"{acts_tracks}TrackFindingValidationAlg",
554 TrackToTruthAssociationMap = f
"{acts_tracks}ToTruthParticleAssociation"))