213def FPGADataPreparation(flags,runStandalone=False):
214 kwargs = {}
215 kwargs.setdefault('FPGAThreads', flags.Concurrency.NumThreads)
216 acc = ComponentAccumulator()
217 acc.merge(F100DataEncodingCfg(flags))
218
219 if(flags.FPGADataPrep.doCodeType ==
"F1X0"):
220 acc.merge(F1X0IntegrationCfg(flags, "F1X0IntegrationAlg", **kwargs))
221 elif(flags.FPGADataPrep.doCodeType == "F1X0XRT"):
222 acc.merge(F1X0XRTIntegrationCfg(flags, "F1X0XRTIntegrationAlg", **kwargs))
223 elif(flags.FPGADataPrep.doCodeType == "F100Stream"):
224 acc.merge(F100StreamIntegrationCfg(flags, "F100StreamIntegrationAlg", **kwargs))
225 elif(flags.FPGADataPrep.doCodeType == "F110"):
226 acc.merge(F110IntegrationCfg(flags, "F110IntegrationAlg", **kwargs))
227 elif(flags.FPGADataPrep.doCodeType == "F110Stream"):
228 acc.merge(F110StreamIntegrationCfg(flags, "F110StreamIntegrationAlg", **kwargs))
229 else:
230 print(
"Code Type is not recognized")
231 exit(1)
232
233 acc.merge(F100EDMConversionCfg(flags,
234 **{'xAODClusterMakerTool.PixelClusterContainerKey':
235 'FPGAPixelClusters' if flags.FPGADataPrep.DoClusterSorting else'ITkPixelClusters',
236 'xAODClusterMakerTool.StripClusterContainerKey':
237 'FPGAStripClusters' if flags.FPGADataPrep.DoClusterSorting else 'ITkStripClusters'}))
238 if(flags.FPGADataPrep.DoClusterSorting):
239 acc.merge(FPGAClusterSortingCfg(flags,
240 **{'sortedxAODPixelClusterContainer':
241 'SortedFPGAPixelClusters' if runStandalone else 'ITkPixelClusters',
242 'sortedxAODStripClusterContainer':
243 'SortedFPGAStripClusters' if runStandalone else 'ITkStripClusters'}))
244
245 if(
not runStandalone):
246 if(
not flags.FPGADataPrep.ForTiming):
247 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
248 acc.merge(FPGATrackSimReportingCfg(flags,
249 perEventReports = False,
250 **{'xAODPixelClusterContainers' : ['ITkPixelClusters'],
251 'xAODStripClusterContainers' : ['ITkStripClusters'],
252 'FPGAActsTracks' : [],
253 'isDataPrep': True} ))
254
255 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
256 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
257
258 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
259 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
260
261 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
262 toAOD = []
263
264 pixel_cluster_shortlist = ['-pixelClusterLink']
265 strip_cluster_shortlist = ['-sctClusterLink']
266
267 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
268 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
269
270 toAOD += ['xAOD::PixelClusterContainer#ITkPixelClusters',
271 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
272 'xAOD::StripClusterContainer#ITkStripClusters',
273 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
274 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
275 acc.merge(addToAOD(flags, toAOD))
276 return acc
277
278
279
280
281
void print(char *figname, TCanvas *c1)