Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BenchmarkConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentFactory import CompFactory
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 
6 def BenchmarkCfg(flags, name = 'BenckmarkAlg', **kwarg):
8 
9  kwarg.setdefault('bdfID','0000:83:00.1') # On the testbed
10  kwarg.setdefault('xclbin', '/eos/project/a/atlas-eftracking/FPGA_compilation/FPGA_compilation_hw/F110/kernels.hw.xclbin')
11  kwarg.setdefault('PixelClusterKernelName','pixel_clustering_tool')
12  kwarg.setdefault('StripClusterKernelName','processHits')
13  kwarg.setdefault('PixelL2GKernelName','l2g_pixel_tool')
14  kwarg.setdefault('StripL2GKernelName','l2g_strip_tool')
15  kwarg.setdefault('EDMPrepKernelName', 'EDMPrep')
16  kwarg.setdefault('InputPixelClusterKey', 'ITkPixelClusters')
17  kwarg.setdefault('InputStripClusterKey', 'ITkStripClusters')
18  kwarg.setdefault('runPassThrough', flags.FPGADataPrep.RunPassThrough)
19 
20  # Set up Cluster maker tool
21  from EFTrackingFPGAPipeline.DataPrepConfig import xAODClusterMakerCfg
22  clusterMakerTool = acc.popToolsAndMerge(xAODClusterMakerCfg(flags))
23  kwarg.setdefault('xAODClusterMaker', clusterMakerTool)
24 
25  # Set up TestVectorTool
26  from EFTrackingFPGAUtility.FPGADataFormatter import FPGATestVectorToolCfg
27  testVectorTool = acc.popToolsAndMerge(FPGATestVectorToolCfg(flags))
28  kwarg.setdefault('TestVectorTool', testVectorTool)
29 
30  # Set up Chrono service
31  acc.addService(CompFactory.ChronoStatSvc(
32  PrintUserTime = True,
33  PrintSystemTime = True,
34  PrintEllapsedTime = True
35  ))
36 
37  acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.BenchmarkAlg(**kwarg))
38 
39  return acc
40 
41 
42 if __name__ == "__main__":
43  from AthenaConfiguration.AllConfigFlags import initConfigFlags
44  flags = initConfigFlags()
45 
46  # Add FPGA Integration flags
47  from EFTrackingFPGAPipeline.IntegrationConfigFlag import addFPGADataPrepFlags
49 
50  flags.Detector.EnableCalo = False
51  flags.FPGADataPrep.DoActs = True
52 
53  # DataPreparation Pipeline doesn't do spacepoint fomration, we need ACTS to do it
54  flags.FPGADataPrep.PassThrough.ClusterOnly = True
55  # For Spacepoint formation
56  if flags.FPGADataPrep.PassThrough.ClusterOnly:
57  flags.Acts.useCache = False
58  flags.Tracking.ITkMainPass.doActsSeed = True
59 
60  flags.Tracking.ITkMainPass.doAthenaToActsCluster = True
61  flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint = True
62  flags.Tracking.ITkMainPass.doAthenaSpacePoint = True
63  from TrkConfig.TrkConfigFlags import TrackingComponent
64  flags.Tracking.recoChain = [TrackingComponent.ActsChain] # another viable option is TrackingComponent.AthenaChain
65  flags.Acts.doRotCorrection = False
66 
67  flags.Concurrency.NumThreads = 1
68  flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
69  # flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-00/mc21_14TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.RDO.e8481_s4149_r14700/RDO.33629020._000047.pool.root.1"]
70  flags.Output.AODFileName = "FPGA.Benchmark.AOD.pool.root"
71  flags.Debug.DumpEvtStore=False
72  flags.fillFromArgs()
73  flags.lock()
74  flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkMainPass", keepOriginal=True)
75 
76  kwarg = {}
77 
78  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
79  cfg = MainServicesCfg(flags)
80 
81  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
82  cfg.merge(PoolReadCfg(flags))
83 
84 
85  #Truth
86  if flags.Input.isMC:
87  from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
88  cfg.merge(GEN_AOD2xAODCfg(flags))
89 
90  # Standard reco
91  from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
92  cfg.merge(ITkTrackRecoCfg(flags))
93 
94  from InDetConfig.InDetPrepRawDataToxAODConfig import TruthParticleIndexDecoratorAlgCfg
95  cfg.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
96 
97  acc = BenchmarkCfg(flags, **kwarg)
98  cfg.merge(acc)
99 
100  OutputItemList = [
101  "xAOD::StripClusterContainer#FPGAStripClusters",
102  "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
103  "xAOD::PixelClusterContainer#FPGAPixelClusters",
104  "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
105  ]
106 
107  # Connection to ACTS
108  if flags.FPGADataPrep.DoActs:
109 
110  # convert xAOD Clusters to SPs
111  from EFTrackingFPGAUtility.DataPrepToActsConfig import UseActsSpacePointFormationCfg
112  cfg.merge(UseActsSpacePointFormationCfg(flags))
113 
114  # Run the ACTS Fast Tracking on FPGA clusters
115  from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig import FPGATrackSimDataPrepConnectToFastTracking
116  cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks="FPGA",
117  **{'PixelSeedingAlg.InputSpacePoints' : ['FPGAPixelSpacePoints'],
118  'StripSeedingAlg.InputSpacePoints' : [''],
119  'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : ["FPGAPixelClusters","FPGAStripClusters"],
120  'PixelClusterToTruthAssociationAlg.Measurements' : 'FPGAPixelClusters',
121  'StripClusterToTruthAssociationAlg.Measurements' : 'FPGAStripClusters'}))
122 
123  # Run the ACTS Fast Tracking (C-100) as an additional reference
124  cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks="ActsFast"))
125 
126  OutputItemList += [
127  "xAOD::TrackParticleContainer#FPGATrackParticles",
128  "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
129  ]
130 
131  from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig import FPGAOutputValidationCfg
132  cfg.merge(FPGAOutputValidationCfg(flags, **{
133  "pixelKeys": ["FPGAPixelClusters", "ITkPixelClusters"],
134  "stripKeys": ["FPGAStripClusters", "ITkStripClusters"],
135  'doDiffHistograms':True,
136  'matchByID' : True,
137  'allowedRdoMisses': 1000}))
138 
139 
140  # Prepare output
141  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
142  from AthenaConfiguration.Enums import MetadataCategory
143  cfg.merge(SetupMetaDataForStreamCfg(flags,"AOD",
144  createMetadata=[
145  MetadataCategory.ByteStreamMetaData,
146  MetadataCategory.LumiBlockMetaData,
147  MetadataCategory.TruthMetaData,
148  MetadataCategory.IOVMetaData,],))
149 
150  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
151  cfg.merge(addToAOD(flags, OutputItemList))
152 
153  cfg.run(flags.Exec.MaxEvents)
154 
IntegrationConfigFlag.addFPGADataPrepFlags
def addFPGADataPrepFlags(flags)
Definition: IntegrationConfigFlag.py:6
python.ITkTrackRecoConfig.ITkTrackRecoCfg
ComponentAccumulator ITkTrackRecoCfg(flags)
Main ITk tracking config #####################.
Definition: ITkTrackRecoConfig.py:489
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
xAODTruthCnvConfig.GEN_AOD2xAODCfg
def GEN_AOD2xAODCfg(flags, name="GEN_AOD2xAOD", **kwargs)
Definition: xAODTruthCnvConfig.py:20
python.InDetPrepRawDataToxAODConfig.TruthParticleIndexDecoratorAlgCfg
def TruthParticleIndexDecoratorAlgCfg(flags, name='TruthParticleIndexDecoratorAlg', **kwargs)
Definition: InDetPrepRawDataToxAODConfig.py:6
FPGADataFormatter.FPGATestVectorToolCfg
def FPGATestVectorToolCfg(flags, name='FPGATestVectorTool', **kwarg)
Definition: FPGADataFormatter.py:16
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:260
python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepConnectToFastTracking
def FPGATrackSimDataPrepConnectToFastTracking(flagsIn, FinalTracks="F100-", **kwargs)
Definition: FPGATrackSimDataPrepConfig.py:374
DataPrepConfig.xAODClusterMakerCfg
def xAODClusterMakerCfg(flags, name='xAODClusterMaker', **kwarg)
Definition: DataPrepConfig.py:25
DataPrepToActsConfig.UseActsSpacePointFormationCfg
ComponentAccumulator UseActsSpacePointFormationCfg(flags, **kwargs)
Definition: DataPrepToActsConfig.py:12
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:149
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
FPGAOutputValidationConfig.FPGAOutputValidationCfg
def FPGAOutputValidationCfg(flags, **kwargs)
Definition: FPGAOutputValidationConfig.py:3
BenchmarkConfig.BenchmarkCfg
def BenchmarkCfg(flags, name='BenckmarkAlg', **kwarg)
Definition: BenchmarkConfig.py:6