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 kwarg.setdefault(
'PixelClusterKernelName',
'pixel_clustering_tool')
51 kwarg.setdefault(
'StripClusterKernelName',
'processHits')
52 kwarg.setdefault(
'StripL2GKernelName',
'l2g_strip_tool')
53 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
54 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
56 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
57 if 'RegSelTool' not in kwarg:
58 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
59 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
62 acc.addService(CompFactory.ChronoStatSvc(
64 PrintSystemTime =
True,
65 PrintEllapsedTime =
True
68 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F110IntegrationAlg(name, **kwarg))
73 acc = ComponentAccumulator()
75 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
76 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
77 kwarg.setdefault(
'PixelStartClusterKernelName',
'pixelLoader')
78 kwarg.setdefault(
'PixelEndClusterKernelName',
'PixelEDMWriter')
80 kwarg.setdefault(
'StripStartClusterKernelName',
'stripLoader')
81 kwarg.setdefault(
'StripEndClusterKernelName',
'StripEDMWriter')
83 kwarg.setdefault(
'PixelLUTKernelName',
'LutPixelLoader')
84 kwarg.setdefault(
'StripLUTKernelName',
'LutStripLoader')
86 kwarg.setdefault(
'PixelLUTFilePath',
'/eos/project/a/atlas-eftracking/FPGA_compilation/FPGA_LUTS/v1/PixelLut.dat')
87 kwarg.setdefault(
'StripLUTFilePath',
'/eos/project/a/atlas-eftracking/FPGA_compilation/FPGA_LUTS/v1/StripLut.dat')
90 if (
"isRoI_Seeded" in kwarg)
and kwarg[
"isRoI_Seeded"]:
91 if 'RegSelTool' not in kwarg:
92 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
93 kwarg.setdefault(
'RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
96 acc.addService(CompFactory.ChronoStatSvc(
98 PrintSystemTime =
True,
99 PrintEllapsedTime =
True
102 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F110StreamIntegrationAlg(name, **kwarg))
108 acc = ComponentAccumulator()
111 if(
"FPGADataFormatTool" not in kwarg):
112 from EFTrackingFPGAPipeline.FPGAToolsConfig
import FPGADataFormatToolCfg
113 dataFormatTool = acc.popToolsAndMerge(FPGADataFormatToolCfg(flags))
114 kwarg.setdefault(
'FPGADataFormatTool', dataFormatTool)
116 kwarg.setdefault(
'isRoI_Seeded',
False)
118 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100DataEncodingAlg(name, **kwarg))
123 acc = ComponentAccumulator()
125 from ActsConfig.ActsUtilities
import extractChildKwargs
128 if(
"xAODClusterMaker" not in kwarg):
129 from EFTrackingFPGAPipeline.FPGAToolsConfig
import xAODClusterMakerCfg
130 clusterMakerTool = acc.popToolsAndMerge(xAODClusterMakerCfg(flags,name=
"xAODClusterMakerTool",
131 **extractChildKwargs(prefix=
"xAODClusterMakerTool.", **kwarg)))
132 kwarg.setdefault(
'F100EDMConversionAlg.xAODClusterMaker', clusterMakerTool)
134 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F100EDMConversionAlg(name,
135 **extractChildKwargs(prefix=
"F100EDMConversionAlg.", **kwarg)))
141 acc = ComponentAccumulator()
142 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
143 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**kwargs)
145 acc.merge(ClusterSorting)
149 flags.Scheduler.ShowDataDeps=
True
150 flags.Scheduler.CheckDependencies=
True
151 flags.Debug.DumpEvtStore=
False
158 kwargs.setdefault(
'FPGAThreads', flags.Concurrency.NumThreads)
159 acc = ComponentAccumulator()
161 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
162 acc.merge(ITkPixelReadoutGeometryCfg(flags))
163 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
164 acc.merge(ITkStripReadoutGeometryCfg(flags))
168 if(flags.FPGADataPrep.doCodeType ==
"F1X0"):
170 elif(flags.FPGADataPrep.doCodeType ==
"F110"):
172 elif(flags.FPGADataPrep.doCodeType ==
"F110Stream"):
175 print(
"Code Type is not recognized")
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):
185 **{
'sortedxAODPixelClusterContainer':
186 'SortedFPGAPixelClusters' if runStandalone
else 'ITkPixelClusters',
187 'sortedxAODStripClusterContainer':
188 'SortedFPGAStripClusters' if runStandalone
else 'ITkStripClusters'}))
190 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
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} ))
202 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
203 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
205 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
206 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
208 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
211 pixel_cluster_shortlist = [
'-pixelClusterLink']
212 strip_cluster_shortlist = [
'-sctClusterLink']
214 pixel_cluster_variables =
'.'.join(pixel_cluster_shortlist)
215 strip_cluster_variables =
'.'.join(strip_cluster_shortlist)
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))
229if __name__ ==
"__main__":
230 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
231 flags = initConfigFlags()
233 flags.Detector.EnableCalo =
False
234 flags.FPGADataPrep.DoActs =
True
235 flags.Acts.doRotCorrection =
False
237 flags.Concurrency.NumThreads = 1
238 flags.Input.Files = [
"/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
240 flags.Output.AODFileName =
"FPGA.Benchmark.AOD.pool.root"
241 flags.Debug.DumpEvtStore=
False
244 if(
not flags.FPGADataPrep.ForTiming):
246 flags.FPGADataPrep.PassThrough.ClusterOnly =
True
248 if flags.FPGADataPrep.PassThrough.ClusterOnly:
249 flags.Acts.useCache =
False
250 flags.Tracking.ITkMainPass.doActsSeed =
True
252 flags.Tracking.ITkMainPass.doAthenaToActsCluster =
True
253 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint =
True
254 flags.Tracking.ITkMainPass.doAthenaSpacePoint =
True
256 flags.Tracking.doTruth=
False
257 flags.ITk.doTruth=
False
258 flags.InDet.doTruth=
False
261 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
263 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
264 cfg = MainServicesCfg(flags)
266 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
267 cfg.merge(PoolReadCfg(flags))
269 if(
not flags.FPGADataPrep.ForTiming):
272 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
273 cfg.merge(GEN_AOD2xAODCfg(flags))
276 from InDetConfig.ITkTrackRecoConfig
import ITkTrackRecoCfg
277 cfg.merge(ITkTrackRecoCfg(flags))
279 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
280 cfg.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
283 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
284 cfg.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
290 if flags.FPGADataPrep.DoActs:
293 from EFTrackingFPGAUtility.DataPrepToActsConfig
import UseActsSpacePointFormationCfg
294 cfg.merge(UseActsSpacePointFormationCfg(flags))
298 from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig
import FPGATrackSimDataPrepConnectToFastTracking
299 cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=
"FPGA",
300 **{
'PixelSeedingAlg.InputSpacePoints' : [
'FPGAPixelSpacePoints'],
301 'StripSeedingAlg.InputSpacePoints' : [
''],
302 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"SortedFPGAPixelClusters",
"SortedFPGAStripClusters"],
303 'PixelClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAPixelClusters',
304 'StripClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAStripClusters'}))
305 if(
not flags.FPGADataPrep.ForTiming):
308 cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=
"ActsFast"))
311 "xAOD::TrackParticleContainer#FPGATrackParticles",
312 "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
316 if(
not flags.FPGADataPrep.ForTiming):
318 "xAOD::StripClusterContainer#FPGAStripClusters",
319 "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
320 "xAOD::PixelClusterContainer#FPGAPixelClusters",
321 "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
324 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
325 cfg.merge(FPGAOutputValidationCfg(flags, **{
326 "pixelKeys": [
"FPGAPixelClusters",
"ITkPixelClusters"],
327 "stripKeys": [
"FPGAStripClusters",
"ITkStripClusters"],
328 'doDiffHistograms':
True,
330 'allowedRdoMisses': 1000}))
334 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
335 from AthenaConfiguration.Enums
import MetadataCategory
336 cfg.merge(SetupMetaDataForStreamCfg(flags,
"AOD",
338 MetadataCategory.ByteStreamMetaData,
339 MetadataCategory.LumiBlockMetaData,
340 MetadataCategory.TruthMetaData,
341 MetadataCategory.IOVMetaData,],))
343 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
344 cfg.merge(addToAOD(flags, OutputItemList))
349 cfg.foreach_component(
"AthEventSeq/*").OutputLevel = DEBUG
350 cfg.printConfig(withDetails=
True, summariseProps=
True)
351 cfg.store(open(
"F100IntegrationAlg.pkl",
"wb"))
352 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)
F110IntegrationCfg(flags, name='F110IntegrationAlg', **kwarg)