60 from ActsConfig.ActsTruthConfig
import (
61 ActsTrackToTruthAssociationAlgCfg,
62 ActsTrackFindingValidationAlgCfg,
63 ActsTrackParticleTruthDecorationAlgCfg,
67 acc.merge(ActsTrackToTruthAssociationAlgCfg(
69 name=f
"{prefix}TrackToTruthAssociationAlg",
70 PixelClustersToTruthAssociationMap=f
"{prefix}PixelClustersToTruthParticles",
71 StripClustersToTruthAssociationMap=f
"{prefix}StripClustersToTruthParticles",
72 ACTSTracksLocation=tracks_key,
73 AssociationMapOut=f
"{tracks_key}ToTruthParticleAssociation",
77 acc.merge(ActsTrackFindingValidationAlgCfg(
79 name=f
"{prefix}TrackFindingValidationAlg",
80 TrackToTruthAssociationMap=f
"{tracks_key}ToTruthParticleAssociation",
81 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts",
85 acc.merge(ActsTrackParticleTruthDecorationAlgCfg(
87 name=f
"{prefix}TrackParticleTruthDecorationAlg",
88 TrackToTruthAssociationMaps=[
89 f
"{tracks_key}ToTruthParticleAssociation"],
90 TrackParticleContainerName=f
"{prefix}TrackParticles",
91 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts",
92 ComputeTrackRecoEfficiency=
True,
99 """Set up traccc-as-a-service tracking: the cells of each event are sent
100 to the server, and the traccc collections it returns are converted with
101 the same algorithms as the local device chain"""
102 acc = ComponentAccumulator()
105 track_container_name = f
'{prefix}Tracks'
106 track_particles_name = f
"{prefix}TrackParticles"
109 cells_key =
"TracccCells"
110 measurements_key =
"TracccTritonMeasurements"
111 clusters_key =
"TracccTritonClusters"
112 traccc_tracks_key =
"TracccTritonTracks"
113 pixel_key = f
"{prefix}PixelClusters"
114 strip_key = f
"{prefix}StripClusters"
115 meas_to_pixel_sp_key = f
"{prefix}MeasToPixelSP"
116 meas_to_strip_cl_key = f
"{prefix}MeasToStripCl"
118 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometrySvcCfg
119 acc.merge(ActsTrackingGeometrySvcCfg(flags))
122 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
123 acc.merge(ITkPixelReadoutGeometryCfg(flags))
124 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
125 acc.merge(ITkStripReadoutGeometryCfg(flags))
128 if flags.Tracking.ActiveConfig.extension !=
"Acts":
129 raise RuntimeError(f
"wrong tracking pass: {flags.Tracking.ActiveConfig.extension}")
130 except AttributeError:
131 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
132 "Tracking.ITkActsPass")
135 geo_id_mapping_name =
"TracccGeometryIdMapping"
136 host_detector_name =
"TracccHostDetectorGeometry"
137 from ActsGPUGeometry.ActsGPUGeometryConfig
import DeviceDetectorDescriptionCondAlgCfg
138 acc.merge(DeviceDetectorDescriptionCondAlgCfg(flags,
139 HostConditionsObjectName=
"TracccHostCondConfig",
140 HostDigitizationObjectName=
"TracccHostDigitizationConfig",
141 DeviceConditionsObjectName=
"TracccDeviceCondConfig",
142 DeviceDigitizationObjectName=
"TracccDeviceDigitizationConfig",
143 GeoIdMappingObjectName=geo_id_mapping_name,
144 HostDetectorName=host_detector_name,
148 from AthDeviceComps.AthDeviceCompsConfig
import HostCopyToolCfg, HostMemoryResourceToolCfg
151 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import RDOtoTracccCellConverterAlgCfg
152 copies_tool = CompFactory.AthDevice.CopiesAdaptorTool(
153 "TracccCellsHostCopiesTool",
154 HostCopyTool=acc.popToolsAndMerge(HostCopyToolCfg(flags)),
155 DeviceCopyTool=acc.popToolsAndMerge(HostCopyToolCfg(flags)))
156 acc.merge(RDOtoTracccCellConverterAlgCfg(flags,
157 HostMR=acc.popToolsAndMerge(HostMemoryResourceToolCfg(flags)),
158 DeviceMR=acc.popToolsAndMerge(HostMemoryResourceToolCfg(flags)),
159 CopiesTool=copies_tool,
160 TracccCells=cells_key))
164 kwargs.setdefault(
"HostMR", acc.popToolsAndMerge(HostMemoryResourceToolCfg(flags)))
165 kwargs.setdefault(
"TracccCells", cells_key)
166 kwargs.setdefault(
"OutputTracccMeasurements", measurements_key)
167 kwargs.setdefault(
"OutputTracccClusters", clusters_key)
168 kwargs.setdefault(
"OutputTracccTracks", traccc_tracks_key)
169 acc.addEventAlgo(CompFactory.TritonTracccTrackMaker(name, **kwargs))
172 from ActsGPUEventCnv.ActsGPUEventCnvConfig
import (
173 TracccMeasurementConverterAlgCfg,
174 TracccTrackConverterAlgCfg,
176 acc.merge(TracccMeasurementConverterAlgCfg(flags,
177 name=f
"{prefix}TritonMeasurementConverterAlg",
178 HostMR=acc.popToolsAndMerge(HostMemoryResourceToolCfg(flags)),
179 CopyProviderTool=acc.popToolsAndMerge(HostCopyToolCfg(flags)),
180 InputMeasurements=measurements_key,
181 InputClusters=clusters_key,
182 InputCells=cells_key,
183 ConvertClustersWithCells=doTruth,
184 GeoIdMapping=geo_id_mapping_name,
185 OutputPixelClusters=pixel_key,
186 OutputPixelSpacePoints=f
"{prefix}PixelSpacePoints",
187 OutputMeasToPixelSP=meas_to_pixel_sp_key,
188 OutputMeasToStripCl=meas_to_strip_cl_key,
189 OutputStripClusters=strip_key,
192 acc.merge(TracccTrackConverterAlgCfg(flags,
193 name=f
"{prefix}TritonTrackConverterAlg",
194 HostMR=acc.popToolsAndMerge(HostMemoryResourceToolCfg(flags)),
195 CopyProviderTool=acc.popToolsAndMerge(HostCopyToolCfg(flags)),
196 HostDetectorName=host_detector_name,
197 InputPixelClusters=pixel_key,
198 InputStripClusters=strip_key,
199 InputMeasToPixelSP=meas_to_pixel_sp_key,
200 InputMeasToStripCl=meas_to_strip_cl_key,
201 InputTracks=traccc_tracks_key,
202 OutputTracks=track_container_name,
208 from ActsConfig.ActsEventCnvConfig
import ActsTrackToTrackParticleCnvAlgCfg
209 acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags,
210 name=f
"{prefix}TrackToTrackParticleCnvAlg",
211 ACTSTracksLocation=[track_container_name],
212 TrackParticlesOutKey=track_particles_name))
217 acc, flags, prefix=prefix, pixelKey=pixel_key, stripKey=strip_key)
226 inputList.append(
"xAOD::TruthParticleContainer#*")
227 inputList.append(
"xAOD::TruthParticleAuxContainer#*")
228 inputList.append(
"xAOD::TrackJacobianContainer#*")
229 inputList.append(
"xAOD::TrackJacobianAuxContainer#*")
230 inputList.append(
"xAOD::TrackMeasurementContainer#*")
231 inputList.append(
"xAOD::TrackMeasurementAuxContainer#*")
232 inputList.append(
"xAOD::TrackSurfaceContainer#*")
233 inputList.append(
"xAOD::TrackSurfaceAuxContainer#*")
234 inputList.append(
"xAOD::TrackParticleContainer#*")
235 inputList.append(
"xAOD::TrackParticleAuxContainer#*")
238 inputList.append(f
"xAOD::PixelClusterContainer#{pixel_key}")
239 inputList.append(f
"xAOD::StripClusterContainer#{strip_key}")
240 inputList.append(f
"xAOD::PixelClusterAuxContainer#{pixel_key}Aux.")
241 inputList.append(f
"xAOD::StripClusterAuxContainer#{strip_key}Aux.")
243 inputList.append(
"xAOD::PixelClusterContainer#*")
244 inputList.append(
"xAOD::StripClusterContainer#*")
245 inputList.append(
"xAOD::PixelClusterAuxContainer#*")
246 inputList.append(
"xAOD::StripClusterAuxContainer#*")
248 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
249 acc.merge(OutputStreamCfg(flags,
'AOD', ItemList=inputList))