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