3 from AthenaConfiguration.ComponentFactory
import CompFactory
4 from AthenaConfiguration.ComponentAccumulator
import 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
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))
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
67 acc.addService(CompFactory.ChronoStatSvc(
69 PrintSystemTime =
True,
70 PrintEllapsedTime =
True
73 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F1X0XRTIntegrationAlg(name, **kwarg))
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
99 acc.addService(CompFactory.ChronoStatSvc(
100 PrintUserTime =
True,
101 PrintSystemTime =
True,
102 PrintEllapsedTime =
True
105 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100StreamIntegrationAlg(name, **kwarg))
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
126 acc.addService(CompFactory.ChronoStatSvc(
127 PrintUserTime =
True,
128 PrintSystemTime =
True,
129 PrintEllapsedTime =
True
132 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F110IntegrationAlg(name, **kwarg))
139 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
140 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
141 kwarg.setdefault(
'PixelStartClusterKernelName',
'pixelLoader')
142 kwarg.setdefault(
'PixelEndClusterKernelName',
'pixelUnloader')
144 kwarg.setdefault(
'StripStartClusterKernelName',
'stripLoader')
145 kwarg.setdefault(
'StripEndClusterKernelName',
'stripUnloader')
146 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
147 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
149 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
150 if 'RegSelTool' not in kwarg:
151 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
155 acc.addService(CompFactory.ChronoStatSvc(
156 PrintUserTime =
True,
157 PrintSystemTime =
True,
158 PrintEllapsedTime =
True
161 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F110StreamIntegrationAlg(name, **kwarg))
170 if(
"FPGADataFormatTool" not in kwarg):
171 from EFTrackingFPGAPipeline.DataPrepConfig
import FPGADataFormatToolCfg
173 kwarg.setdefault(
'FPGADataFormatTool', dataFormatTool)
175 kwarg.setdefault(
'isRoI_Seeded',
False)
177 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100DataEncodingAlg(name, **kwarg))
185 if(
"xAODClusterMaker" not in kwarg):
186 from EFTrackingFPGAPipeline.DataPrepConfig
import xAODClusterMakerCfg
188 kwarg.setdefault(
'xAODClusterMaker', clusterMakerTool)
190 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100EDMConversionAlg(name, **kwarg))
197 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
200 acc.merge(ClusterSorting)
204 flags.Scheduler.ShowDataDeps=
True
205 flags.Scheduler.CheckDependencies=
True
206 flags.Debug.DumpEvtStore=
False
213 kwargs.setdefault(
'FPGAThreads', flags.Concurrency.NumThreads)
217 if(flags.FPGADataPrep.doCodeType ==
"F1X0"):
219 elif(flags.FPGADataPrep.doCodeType ==
"F1X0XRT"):
221 elif(flags.FPGADataPrep.doCodeType ==
"F100Stream"):
223 elif(flags.FPGADataPrep.doCodeType ==
"F110"):
225 elif(flags.FPGADataPrep.doCodeType ==
"F110Stream"):
228 print(
"Code Type is not recognized")
232 acc.merge(
FPGAClusterSortingCfg(flags,**{
'sortedxAODPixelClusterContainer':
'SortedFPGAPixelClusters' if runStandalone
else 'ITkPixelClusters',
233 'sortedxAODStripClusterContainer':
'SortedFPGAStripClusters' if runStandalone
else 'ITkStripClusters'}))
235 if(
not runStandalone):
236 if(
not flags.FPGADataPrep.ForTiming):
237 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
239 perEventReports =
False,
240 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
241 'xAODStripClusterContainers' : [
'ITkStripClusters'],
242 'FPGAActsTracks' : [],
243 'isDataPrep':
True} ))
245 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
248 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
251 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
254 pixel_cluster_shortlist = [
'-pixelClusterLink']
255 strip_cluster_shortlist = [
'-sctClusterLink']
257 pixel_cluster_variables =
'.'.
join(pixel_cluster_shortlist)
258 strip_cluster_variables =
'.'.
join(strip_cluster_shortlist)
260 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
261 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
262 'xAOD::StripClusterContainer#ITkStripClusters',
263 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
264 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
272 if __name__ ==
"__main__":
273 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
276 flags.Detector.EnableCalo =
False
277 flags.FPGADataPrep.DoActs =
True
278 flags.Acts.doRotCorrection =
False
280 flags.Concurrency.NumThreads = 1
281 flags.Input.Files = [
"/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
283 flags.Output.AODFileName =
"FPGA.Benchmark.AOD.pool.root"
284 flags.Debug.DumpEvtStore=
False
287 if(
not flags.FPGADataPrep.ForTiming):
289 flags.FPGADataPrep.PassThrough.ClusterOnly =
True
291 if flags.FPGADataPrep.PassThrough.ClusterOnly:
292 flags.Acts.useCache =
False
293 flags.Tracking.ITkMainPass.doActsSeed =
True
295 flags.Tracking.ITkMainPass.doAthenaToActsCluster =
True
296 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint =
True
297 flags.Tracking.ITkMainPass.doAthenaSpacePoint =
True
299 flags.Tracking.doTruth=
False
300 flags.ITk.doTruth=
False
301 flags.InDet.doTruth=
False
304 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
306 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
309 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
312 if(
not flags.FPGADataPrep.ForTiming):
315 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
319 from InDetConfig.ITkTrackRecoConfig
import ITkTrackRecoCfg
322 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
326 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
333 if flags.FPGADataPrep.DoActs:
336 from EFTrackingFPGAUtility.DataPrepToActsConfig
import UseActsSpacePointFormationCfg
341 from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig
import FPGATrackSimDataPrepConnectToFastTracking
343 **{
'PixelSeedingAlg.InputSpacePoints' : [
'FPGAPixelSpacePoints'],
344 'StripSeedingAlg.InputSpacePoints' : [
''],
345 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"SortedFPGAPixelClusters",
"SortedFPGAStripClusters"],
346 'PixelClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAPixelClusters',
347 'StripClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAStripClusters'}))
348 if(
not flags.FPGADataPrep.ForTiming):
354 "xAOD::TrackParticleContainer#FPGATrackParticles",
355 "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
359 if(
not flags.FPGADataPrep.ForTiming):
361 "xAOD::StripClusterContainer#FPGAStripClusters",
362 "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
363 "xAOD::PixelClusterContainer#FPGAPixelClusters",
364 "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
367 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
369 "pixelKeys": [
"FPGAPixelClusters",
"ITkPixelClusters"],
370 "stripKeys": [
"FPGAStripClusters",
"ITkStripClusters"],
371 'doDiffHistograms':
True,
373 'allowedRdoMisses': 1000}))
377 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
378 from AthenaConfiguration.Enums
import MetadataCategory
381 MetadataCategory.ByteStreamMetaData,
382 MetadataCategory.LumiBlockMetaData,
383 MetadataCategory.TruthMetaData,
384 MetadataCategory.IOVMetaData,],))
386 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
387 cfg.merge(
addToAOD(flags, OutputItemList))
392 cfg.foreach_component(
"AthEventSeq/*").OutputLevel = DEBUG
393 cfg.printConfig(withDetails=
True, summariseProps=
True)
394 cfg.store(
open(
"F100IntegrationAlg.pkl",
"wb"))
395 cfg.run(flags.Exec.MaxEvents)