11def ITkActsDeviceTrackRecoCfg(flags, *, previousExtension=None):
12 acc = ComponentAccumulator()
13
14
15 print(f
"Setting up GPU algorithms with {flags.Device.Backend.value} backend")
16
17
18 acc.merge(JSONDeviceDetectorDescriptionProviderSvcCfg(flags,
19 HostConditionsObjectName="TracccHostCondConfig",
20 HostDigitizationObjectName="TracccHostDigitizationConfig",
21 DeviceConditionsObjectName="TracccDeviceCondConfig",
22 DeviceDigitizationObjectName="TracccDeviceDigitizationConfig"
23 ))
24
25
26 if flags.Acts.Device.doClusterization:
27
28
29 if not flags.Tracking.doPixelDigitalClustering:
30 raise ValueError("clusterization on device is not compatible "
31 "with analog clustering at the moment due to incorrent "
32 "ToT values for Pixel hits in the simulation data.")
33
34
35 from ActsConfig.ActsRegionsOfInterestConfig import ActsRegionsOfInterestCreatorAlgCfg
36 acc.merge(ActsRegionsOfInterestCreatorAlgCfg(flags,
37 name=f"{flags.Tracking.ActiveConfig.extension}RegionsOfInterestCreatorAlg"))
38
39 print(
"Performing clusterization on device")
40
41
42 if flags.Acts.EDM.PhaseII :
43 from ActsConfig.ActsPhaseIIRawDataEdmConfig import (
44 PhaseIIPixelRawDataContainerCfg,
45 PhaseIIStripRawDataContainerCfg,
46 )
47 acc.merge(PhaseIIPixelRawDataContainerCfg(flags))
48 acc.merge(PhaseIIStripRawDataContainerCfg(flags))
49 from ActsGPUEventCnv.ActsGPUEventCnvConfig import PhaseIIRDOtoTracccCellConverterAlgCfg
50 acc.merge(PhaseIIRDOtoTracccCellConverterAlgCfg(flags,
51 TracccCells = "TracccCellCollection",
52 ))
53 else:
54 from ActsGPUEventCnv.ActsGPUEventCnvConfig import RDOtoTracccCellConverterAlgCfg
55 acc.merge(RDOtoTracccCellConverterAlgCfg(flags,
56 TracccCells = "TracccCellCollection",
57 ))
58
59
60 from ActsGPUDataPreparation.ActsGPUDataPreparationConfig import DeviceClusterizationAlgCfg
61 acc.merge(DeviceClusterizationAlgCfg(flags,
62 InputTracccCells="TracccCellCollection",
63 OutputTracccMeasurements="TracccMeasurementCollection",
64 OutputTracccClusters="TracccClusterCollection",
65 RetrieveClusterCells=flags.Tracking.doTruth,
66 previousExtension=previousExtension))
67 clustersLocation = DataLocation.DEVICE
68
69 else:
70 from InDetConfig.ITkActsDataPreparationConfig import ITkActsDataPreparationCfg
71 acc.merge(ITkActsDataPreparationCfg(flags, previousExtension=previousExtension))
72 clustersLocation = DataLocation.HOST
73
74
75 if flags.Acts.Device.doSeeding:
76
77 raise ValueError("Unsupported: no device seeding yet!")
78
79 else:
80
81
82
83 if clustersLocation is DataLocation.DEVICE:
84 from ActsGPUEventCnv.ActsGPUEventCnvConfig import TracccMeasurementConverterAlgCfg
85 acc.merge(TracccMeasurementConverterAlgCfg(flags,
86 InputMeasurements="TracccMeasurementCollection",
87 InputClusters="TracccClusterCollection",
88 InputCells="TracccCellCollection",
89 ConvertClustersWithCells = flags.Tracking.doTruth,
90 OutputPixelClusters="ITkPixelClusters",
91 OutputStripClusters="ITkStripClusters"
92 ))
93 clustersLocation = DataLocation.HOST
94
95 from ActsConfig.ActsSpacePointFormationConfig import ActsSpacePointFormationCfg
96 acc.merge(ActsSpacePointFormationCfg(flags, previousActsExtension=previousExtension))
97
98 from ActsConfig.ActsSeedingConfig import ActsSeedingCfg
99 acc.merge(ActsSeedingCfg(flags))
100 seedsLocation = DataLocation.HOST
101
102
103
104 if flags.Acts.Device.doTrackReconstruction:
105
106 raise ValueError("Unsupported operation, we do not have this step on device yet")
107
108 else:
109
110
111 if clustersLocation is DataLocation.DEVICE:
112 from ActsGPUEventCnv.ActsGPUEventCnvConfig import TracccMeasurementConverterAlgCfg
113 acc.merge(TracccMeasurementConverterAlgCfg(flags,
114 InputMeasurements="TracccMeasurementCollection",
115 InputClusters="TracccClusterCollection",
116 InputTracccCells="TracccCellCollection",
117 ConvertClustersWithCells = flags.Tracking.doTruth,
118 OutputPixelClusters="ITkPixelClusters",
119 OutputStripClusters="ITkStripClusters"
120 ))
121
122 if seedsLocation is DataLocation.DEVICE:
123 raise ValueError("Unsupported operation, we do not have this conversion yet")
124
125
126 from ActsConfig.ActsTrackFindingConfig import ActsTrackFindingCfg
127 acc.merge(ActsTrackFindingCfg(flags))
128
129
130 if flags.Acts.doAmbiguityResolution:
131 from ActsConfig.ActsTrackFindingConfig import ActsAmbiguityResolutionCfg
132 acc.merge(ActsAmbiguityResolutionCfg(flags))
133
134
135
136 from ActsConfig.ActsPrdAssociationConfig import ActsPrdAssociationAlgCfg
137 acc.merge(ActsPrdAssociationAlgCfg(flags,
138 name = f'{flags.Tracking.ActiveConfig.extension}PrdAssociationAlg',
139 previousActsExtension = previousExtension))
140
141
142 if flags.Tracking.doTruth:
143
144
145 from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
146 acc.merge(ActsTruthAssociationAlgCfg(flags))
147 acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
148 if flags.Acts.doTruthInspection:
149 from ActsConfig.ActsInspectTruthContentConfig import ActsInspectTruthContentAlgCfg
150 acc.merge(ActsInspectTruthContentAlgCfg(flags))
151
152
153
154
155
156 if flags.Tracking.ActiveConfig.storeSiSPSeededTracks or not flags.Acts.doAmbiguityResolution:
157 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
158 acts_tracks = f"{flags.Tracking.ActiveConfig.extension}Tracks"
159 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
160 name = f"{acts_tracks}TrackToTruthAssociationAlg",
161 ACTSTracksLocation = acts_tracks,
162 AssociationMapOut = f"{acts_tracks}ToTruthParticleAssociation"))
163
164 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
165 name = f"{acts_tracks}TrackFindingValidationAlg",
166 TrackToTruthAssociationMap = f"{acts_tracks}ToTruthParticleAssociation"))
167
168
169
170 if flags.Acts.doAmbiguityResolution:
171 acts_tracks = f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
172 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
173 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
174 name = f"{acts_tracks}TrackToTruthAssociationAlg",
175 ACTSTracksLocation = acts_tracks,
176 AssociationMapOut = f"{acts_tracks}ToTruthParticleAssociation"))
177
178 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
179 name = f"{acts_tracks}TrackFindingValidationAlg",
180 TrackToTruthAssociationMap = f"{acts_tracks}ToTruthParticleAssociation"))
181
182 return acc
void print(char *figname, TCanvas *c1)