156def FPGADataPreparation(flags,runStandalone=False):
157 kwargs = {}
158 kwargs.setdefault('FPGAThreads', flags.Concurrency.NumThreads)
159 acc = ComponentAccumulator()
160
161 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
162 acc.merge(ITkPixelReadoutGeometryCfg(flags))
163 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
164 acc.merge(ITkStripReadoutGeometryCfg(flags))
165
166 acc.merge(F100DataEncodingCfg(flags))
167
168 if(flags.FPGADataPrep.doCodeType == "F1X0"):
169 acc.merge(F1X0IntegrationCfg(flags, "F1X0IntegrationAlg", **kwargs))
170 elif(flags.FPGADataPrep.doCodeType == "F110"):
171 acc.merge(F110IntegrationCfg(flags, "F110IntegrationAlg", **kwargs))
172 elif(flags.FPGADataPrep.doCodeType == "F110Stream"):
173 acc.merge(F110StreamIntegrationCfg(flags, "F110StreamIntegrationAlg", **kwargs))
174 else:
175 print(
"Code Type is not recognized")
176 exit(1)
177
178 acc.merge(F100EDMConversionCfg(flags,
179 **{'xAODClusterMakerTool.PixelClusterContainerKey':
180 'FPGAPixelClusters' if flags.FPGADataPrep.DoClusterSorting else'ITkPixelClusters',
181 'xAODClusterMakerTool.StripClusterContainerKey':
182 'FPGAStripClusters' if flags.FPGADataPrep.DoClusterSorting else 'ITkStripClusters'}))
183 if(flags.FPGADataPrep.DoClusterSorting):
184 acc.merge(FPGAClusterSortingCfg(flags,
185 **{'sortedxAODPixelClusterContainer':
186 'SortedFPGAPixelClusters' if runStandalone else 'ITkPixelClusters',
187 'sortedxAODStripClusterContainer':
188 'SortedFPGAStripClusters' if runStandalone else 'ITkStripClusters'}))
189
190 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
191
192 if(not runStandalone):
193 if(not flags.FPGADataPrep.ForTiming):
194 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
195 acc.merge(FPGATrackSimReportingCfg(flags,
196 perEventReports = False,
197 **{'xAODPixelClusterContainers' : ['ITkPixelClusters'],
198 'xAODStripClusterContainers' : ['ITkStripClusters'],
199 'FPGAActsTracks' : [],
200 'isDataPrep': True} ))
201
202 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
203 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
204
205 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
206 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
207
208 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
209 toAOD = []
210
211 pixel_cluster_shortlist = ['-pixelClusterLink']
212 strip_cluster_shortlist = ['-sctClusterLink']
213
214 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
215 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
216
217 toAOD += ['xAOD::PixelClusterContainer#ITkPixelClusters',
218 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
219 'xAOD::StripClusterContainer#ITkStripClusters',
220 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
221 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
222 acc.merge(addToAOD(flags, toAOD))
223 return acc
224
225
226
227
228
void print(char *figname, TCanvas *c1)