3from AthenaConfiguration.ComponentFactory
import CompFactory
4from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
8 acc = ComponentAccumulator()
10 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
11 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
12 if(flags.FPGADataPrep.doF110):
13 kwarg.setdefault(
'PixelClusterKernelName',
'pixel_clustering_tool')
15 kwarg.setdefault(
'PixelClusterKernelName',
'pixclustering_top_v1_0')
16 kwarg.setdefault(
'StripClusterKernelName',
'processHits')
17 kwarg.setdefault(
'PixelL2GKernelName',
'l2g_pixel_tool')
18 kwarg.setdefault(
'StripL2GKernelName',
'l2g_strip_tool')
19 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
20 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
21 kwarg.setdefault(
'doF110', flags.FPGADataPrep.doF110)
23 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
24 if 'RegSelTool' not in kwarg:
25 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
26 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
29 acc.addService(CompFactory.ChronoStatSvc(
31 PrintSystemTime =
True,
32 PrintEllapsedTime =
True
35 from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
37 montool.defineHistogram(
'TIME_Total',path=
'EXPERT',type=
'TH1F',title=
"Total time (ms)", xbins = 400, xmin=0.0, xmax=2000.0)
39 kwarg.setdefault(
'MonTool', montool)
41 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F1X0IntegrationAlg(name, **kwarg))
46 acc = ComponentAccumulator()
48 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
49 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
50 if(flags.FPGADataPrep.doF110):
51 kwarg.setdefault(
'PixelClusterKernelName',
'pixel_clustering_tool')
53 kwarg.setdefault(
'PixelClusterKernelName',
'pixclustering_top_v1_0')
54 kwarg.setdefault(
'StripClusterKernelName',
'processHits')
55 kwarg.setdefault(
'PixelL2GKernelName',
'l2g_pixel_tool')
56 kwarg.setdefault(
'StripL2GKernelName',
'l2g_strip_tool')
57 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
58 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
59 kwarg.setdefault(
'doF110', flags.FPGADataPrep.doF110)
61 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
62 if 'RegSelTool' not in kwarg:
63 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
64 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
67 acc.addService(CompFactory.ChronoStatSvc(
69 PrintSystemTime =
True,
70 PrintEllapsedTime =
True
73 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F1X0XRTIntegrationAlg(name, **kwarg))
78 acc = ComponentAccumulator()
80 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
81 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
82 kwarg.setdefault(
'PixelStartClusterKernelName',
'loaderPixel')
83 kwarg.setdefault(
'PixelEndClusterKernelName',
'unloaderPixelCluster')
84 kwarg.setdefault(
'PixelEndClusterEdmKernelName',
'unloaderPixelEdm')
86 kwarg.setdefault(
'StripStartClusterKernelName',
'loaderStrip')
87 kwarg.setdefault(
'StripEndClusterKernelName',
'unloaderStrip')
88 kwarg.setdefault(
'PixelL2GKernelName',
'l2g_pixel_tool')
89 kwarg.setdefault(
'StripL2GKernelName',
'l2g_strip_tool')
90 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
91 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
93 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
94 if 'RegSelTool' not in kwarg:
95 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
96 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
99 acc.addService(CompFactory.ChronoStatSvc(
100 PrintUserTime =
True,
101 PrintSystemTime =
True,
102 PrintEllapsedTime =
True
105 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100StreamIntegrationAlg(name, **kwarg))
110 acc = ComponentAccumulator()
112 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
113 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
114 kwarg.setdefault(
'PixelClusterKernelName',
'pixel_clustering_tool')
115 kwarg.setdefault(
'StripClusterKernelName',
'processHits')
116 kwarg.setdefault(
'StripL2GKernelName',
'l2g_strip_tool')
117 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
118 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
120 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
121 if 'RegSelTool' not in kwarg:
122 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
123 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
126 acc.addService(CompFactory.ChronoStatSvc(
127 PrintUserTime =
True,
128 PrintSystemTime =
True,
129 PrintEllapsedTime =
True
132 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F110IntegrationAlg(name, **kwarg))
137 acc = ComponentAccumulator()
139 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
140 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
141 kwarg.setdefault(
'PixelStartClusterKernelName',
'pixelLoader')
142 kwarg.setdefault(
'PixelEndClusterKernelName',
'PixelEDMWriter')
144 kwarg.setdefault(
'StripStartClusterKernelName',
'stripLoader')
145 kwarg.setdefault(
'StripEndClusterKernelName',
'StripEDMWriter')
147 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
148 if 'RegSelTool' not in kwarg:
149 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
150 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
153 acc.addService(CompFactory.ChronoStatSvc(
154 PrintUserTime =
True,
155 PrintSystemTime =
True,
156 PrintEllapsedTime =
True
159 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F110StreamIntegrationAlg(name, **kwarg))
165 acc = ComponentAccumulator()
168 if(
"FPGADataFormatTool" not in kwarg):
169 from EFTrackingFPGAPipeline.DataPrepConfig
import FPGADataFormatToolCfg
170 dataFormatTool = acc.popToolsAndMerge(FPGADataFormatToolCfg(flags))
171 kwarg.setdefault(
'FPGADataFormatTool', dataFormatTool)
173 kwarg.setdefault(
'isRoI_Seeded',
False)
175 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100DataEncodingAlg(name, **kwarg))
180 acc = ComponentAccumulator()
182 from ActsConfig.ActsUtilities
import extractChildKwargs
185 if(
"xAODClusterMaker" not in kwarg):
186 from EFTrackingFPGAPipeline.DataPrepConfig
import xAODClusterMakerCfg
187 clusterMakerTool = acc.popToolsAndMerge(xAODClusterMakerCfg(flags,name=
"xAODClusterMakerTool",
188 **extractChildKwargs(prefix=
"xAODClusterMakerTool.", **kwarg)))
189 kwarg.setdefault(
'F100EDMConversionAlg.xAODClusterMaker', clusterMakerTool)
191 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100EDMConversionAlg(name,
192 **extractChildKwargs(prefix=
"F100EDMConversionAlg.", **kwarg)))
198 acc = ComponentAccumulator()
199 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
200 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**kwargs)
202 acc.merge(ClusterSorting)
206 flags.Scheduler.ShowDataDeps=
True
207 flags.Scheduler.CheckDependencies=
True
208 flags.Debug.DumpEvtStore=
False
215 kwargs.setdefault(
'FPGAThreads', flags.Concurrency.NumThreads)
216 acc = ComponentAccumulator()
219 if(flags.FPGADataPrep.doCodeType ==
"F1X0"):
221 elif(flags.FPGADataPrep.doCodeType ==
"F1X0XRT"):
223 elif(flags.FPGADataPrep.doCodeType ==
"F100Stream"):
225 elif(flags.FPGADataPrep.doCodeType ==
"F110"):
227 elif(flags.FPGADataPrep.doCodeType ==
"F110Stream"):
230 print(
"Code Type is not recognized")
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):
240 **{
'sortedxAODPixelClusterContainer':
241 'SortedFPGAPixelClusters' if runStandalone
else 'ITkPixelClusters',
242 'sortedxAODStripClusterContainer':
243 'SortedFPGAStripClusters' if runStandalone
else 'ITkStripClusters'}))
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} ))
255 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
256 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
258 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
259 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
261 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
264 pixel_cluster_shortlist = [
'-pixelClusterLink']
265 strip_cluster_shortlist = [
'-sctClusterLink']
267 pixel_cluster_variables =
'.'.join(pixel_cluster_shortlist)
268 strip_cluster_variables =
'.'.join(strip_cluster_shortlist)
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))
282if __name__ ==
"__main__":
283 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
284 flags = initConfigFlags()
286 flags.Detector.EnableCalo =
False
287 flags.FPGADataPrep.DoActs =
True
288 flags.Acts.doRotCorrection =
False
290 flags.Concurrency.NumThreads = 1
291 flags.Input.Files = [
"/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
293 flags.Output.AODFileName =
"FPGA.Benchmark.AOD.pool.root"
294 flags.Debug.DumpEvtStore=
False
297 if(
not flags.FPGADataPrep.ForTiming):
299 flags.FPGADataPrep.PassThrough.ClusterOnly =
True
301 if flags.FPGADataPrep.PassThrough.ClusterOnly:
302 flags.Acts.useCache =
False
303 flags.Tracking.ITkMainPass.doActsSeed =
True
305 flags.Tracking.ITkMainPass.doAthenaToActsCluster =
True
306 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint =
True
307 flags.Tracking.ITkMainPass.doAthenaSpacePoint =
True
309 flags.Tracking.doTruth=
False
310 flags.ITk.doTruth=
False
311 flags.InDet.doTruth=
False
314 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
316 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
317 cfg = MainServicesCfg(flags)
319 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
320 cfg.merge(PoolReadCfg(flags))
322 if(
not flags.FPGADataPrep.ForTiming):
325 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
326 cfg.merge(GEN_AOD2xAODCfg(flags))
329 from InDetConfig.ITkTrackRecoConfig
import ITkTrackRecoCfg
330 cfg.merge(ITkTrackRecoCfg(flags))
332 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
333 cfg.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
336 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
337 cfg.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
343 if flags.FPGADataPrep.DoActs:
346 from EFTrackingFPGAUtility.DataPrepToActsConfig
import UseActsSpacePointFormationCfg
347 cfg.merge(UseActsSpacePointFormationCfg(flags))
351 from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig
import FPGATrackSimDataPrepConnectToFastTracking
352 cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=
"FPGA",
353 **{
'PixelSeedingAlg.InputSpacePoints' : [
'FPGAPixelSpacePoints'],
354 'StripSeedingAlg.InputSpacePoints' : [
''],
355 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"SortedFPGAPixelClusters",
"SortedFPGAStripClusters"],
356 'PixelClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAPixelClusters',
357 'StripClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAStripClusters'}))
358 if(
not flags.FPGADataPrep.ForTiming):
361 cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=
"ActsFast"))
364 "xAOD::TrackParticleContainer#FPGATrackParticles",
365 "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
369 if(
not flags.FPGADataPrep.ForTiming):
371 "xAOD::StripClusterContainer#FPGAStripClusters",
372 "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
373 "xAOD::PixelClusterContainer#FPGAPixelClusters",
374 "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
377 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
378 cfg.merge(FPGAOutputValidationCfg(flags, **{
379 "pixelKeys": [
"FPGAPixelClusters",
"ITkPixelClusters"],
380 "stripKeys": [
"FPGAStripClusters",
"ITkStripClusters"],
381 'doDiffHistograms':
True,
383 'allowedRdoMisses': 1000}))
387 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
388 from AthenaConfiguration.Enums
import MetadataCategory
389 cfg.merge(SetupMetaDataForStreamCfg(flags,
"AOD",
391 MetadataCategory.ByteStreamMetaData,
392 MetadataCategory.LumiBlockMetaData,
393 MetadataCategory.TruthMetaData,
394 MetadataCategory.IOVMetaData,],))
396 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
397 cfg.merge(addToAOD(flags, OutputItemList))
402 cfg.foreach_component(
"AthEventSeq/*").OutputLevel = DEBUG
403 cfg.printConfig(withDetails=
True, summariseProps=
True)
404 cfg.store(open(
"F100IntegrationAlg.pkl",
"wb"))
405 cfg.run(flags.Exec.MaxEvents)
void print(char *figname, TCanvas *c1)
FPGAClusterSortingCfg(flags, **kwargs)
FPGADataPreparation(flags, runStandalone=False)
F1X0IntegrationCfg(flags, name='F1X0IntegrationAlg', **kwarg)
F100DataEncodingCfg(flags, name='F100DataEncodingAlg', **kwarg)
F110StreamIntegrationCfg(flags, name='F110StreamIntegrationAlg', **kwarg)
F100EDMConversionCfg(flags, name='F100EDMConversionAlg', **kwarg)
F1X0XRTIntegrationCfg(flags, name='F1X0IntegrationAlg', **kwarg)
F110IntegrationCfg(flags, name='F110IntegrationAlg', **kwarg)
F100StreamIntegrationCfg(flags, name='F100StreamIntegrationAlg', **kwarg)