ATLAS Offline Software
Loading...
Searching...
No Matches
F150KernelTesterConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5
6def KernelTesterCfg(flags, name = 'F150BenchmarkAlg', **kwarg):
7 acc = ComponentAccumulator()
8
9 kwarg.setdefault('bdfID', flags.FPGADataPrep.bdfID) # On the testbed
10 kwarg.setdefault('xclbin', flags.FPGADataPrep.xclbin)
11
12 kwarg.setdefault('RunSlicing', False)
13 kwarg.setdefault('RunInsideOut', False)
14 kwarg.setdefault('RunInsideOutOnSlicingEngine', False)
15 kwarg.setdefault('RunFullF150', True)
16 kwarg.setdefault('outputTextFile', False)
17 kwarg.setdefault('doEmulation', False)
18
19 kwarg.setdefault('SlicingEngineInputName', 'configurableLengthWideLoader')
20 kwarg.setdefault('SlicingEngineOutputName', 'dynamicLengthWideUnloader')
21
22 kwarg.setdefault('InsideOutInputName', 'krnl_mm2s')
23 kwarg.setdefault('InsideOutOutputName', 'mem_write')
24
25 kwarg.setdefault('PixelClusterKernelName','pixel_clustering_tool')
26 kwarg.setdefault('StripClusterKernelName','processHits')
27 kwarg.setdefault('StripL2GKernelName','l2g_strip_tool')
28 kwarg.setdefault('PixelEDMPrepKernelName', 'PixelEDMPrep')
29 kwarg.setdefault('StripEDMPrepKernelName', 'StripEDMPrep')
30 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
31 kwarg.setdefault('FPGATrackSimHitKey_1st', 'FPGAHits_1st_reg' + str(convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList)[0]))
32 kwarg.setdefault('FPGATrackSimTrack1stKey', 'FPGATracks_1st_reg' + str(convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList)[0]))
33
34 # Set up Cluster maker tool
35 from EFTrackingFPGAPipeline.DataPrepConfig import xAODClusterMakerCfg
36 clusterMakerTool = acc.popToolsAndMerge(xAODClusterMakerCfg(flags))
37 kwarg.setdefault('xAODClusterMaker', clusterMakerTool)
38
39 # Set up TestVectorTool
40 from EFTrackingFPGAUtility.FPGADataFormatter import FPGATestVectorToolCfg
41 testVectorTool = acc.popToolsAndMerge(FPGATestVectorToolCfg(flags))
42 kwarg.setdefault('TestVectorTool', testVectorTool)
43
44 outputTool = acc.popToolsAndMerge(FPGAOutputConversionToolCfg(flags))
45 kwarg.setdefault('OutputConversionTool', outputTool)
46
47 # Set up Chrono service
48 acc.addService(CompFactory.ChronoStatSvc(
49 PrintUserTime = True,
50 PrintSystemTime = True,
51 PrintEllapsedTime = True
52 ))
53
54 alg = CompFactory.EFTrackingFPGAIntegration.F150KernelTesterAlg(**kwarg)
55 acc.addEventAlgo(alg)
56
57 return acc
58
59def F150EDMConversionAlgCfg(flags, **kwarg):
60 acc = ComponentAccumulator()
61
62 kwarg.setdefault('FPGAOutputTrackKey', "FPGATrackOutput")
63 kwarg.setdefault('FPGASpacePointsKey', "ITkPixelSpacePoints")
64 kwarg.setdefault('OutputSeeds', "ActsValidateF150PixelSeeds")
65
66 alg = CompFactory.EFTrackingFPGAIntegration.F150EDMConversionAlg(**kwarg)
67 acc.addEventAlgo(alg)
68
69 return acc
70
71
72def FPGAOutputConversionToolCfg(flags, name = 'FPGAOutputConversionTool', **kwarg):
73
74 acc = ComponentAccumulator()
75
76 kwarg.setdefault('name', name)
77 acc.setPrivateTools(CompFactory.OutputConversionTool(**kwarg))
78
79 return acc
80
81
82
83if __name__ == "__main__":
84 from AthenaConfiguration.AllConfigFlags import initConfigFlags
85 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
86
87 flags = initConfigFlags()
88
89
91 FinalProtoTrackChainxAODTracksKey="FPGA"
92 flags.Detector.EnableCalo = False
93
94 # ensure that the xAOD SP and cluster containers are available
95 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
96 flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
97 from ActsConfig.ActsCIFlags import actsLegacyWorkflowFlags
98 actsLegacyWorkflowFlags(flags)
99 flags.Acts.doRotCorrection = False
100
101
102 flags.Concurrency.NumThreads=1
103 #flags.Concurrency.NumProcs=0
104 flags.Scheduler.ShowDataDeps=True
105 flags.Scheduler.CheckDependencies=True
106 flags.Debug.DumpEvtStore=False
107 # single muon
108 #flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
109 # ttbar
110 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"]
111
112 flags.fillFromArgs()
113
114 flags.Trigger.FPGATrackSim.tracking = False
115 flags.Trigger.FPGATrackSim.Hough.genScan = True
116 flags.Trigger.FPGATrackSim.Hough.secondStage = False
117
118 flags.lock()
119 flags.dump()
120 flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass")
121 cfg=MainServicesCfg(flags)
122
123 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
124 cfg.merge(PoolReadCfg(flags))
125
126 if flags.Input.isMC:
127 from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
128 cfg.merge(GEN_AOD2xAODCfg(flags))
129
130 from JetRecConfig.JetRecoSteering import addTruthPileupJetsToOutputCfg # TO DO: check if this is indeed necessary for pileup samples
131 cfg.merge(addTruthPileupJetsToOutputCfg(flags))
132
133 if flags.Detector.EnableCalo:
134 from CaloRec.CaloRecoConfig import CaloRecoCfg
135 cfg.merge(CaloRecoCfg(flags))
136
137 if flags.Tracking.recoChain:
138 from InDetConfig.TrackRecoConfig import InDetTrackRecoCfg
139 cfg.merge(InDetTrackRecoCfg(flags))
140
141
142 # Configure both the dataprep and logical hits algorithms.
143 from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg
144 cfg.merge(ITkXAODToInDetClusterConversionCfg(flags)) # needed for the FPGATrackSim DataPrep to work
145 from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig import FPGATrackSimDataPrepAlgCfg
146 cfg.merge(FPGATrackSimDataPrepAlgCfg(flags))
147 from FPGATrackSimConfTools.FPGATrackSimMultiRegionConfig import FPGATrackSimMultiRegionTrackingCfg
148 cfg.merge(FPGATrackSimMultiRegionTrackingCfg(flags))
149
150 kwarg = {}
151 acc = KernelTesterCfg(flags, **kwarg)
152 cfg.merge(acc)
153
154 from AthenaCommon.Constants import DEBUG
155 cfg.foreach_component("AthEventSeq/*").OutputLevel = DEBUG
156
157 cfg.printConfig(withDetails=True, summariseProps=True)
158
159 cfg.run(flags.Exec.MaxEvents)
160
F150EDMConversionAlgCfg(flags, **kwarg)
KernelTesterCfg(flags, name='F150BenchmarkAlg', **kwarg)
FPGAOutputConversionToolCfg(flags, name='FPGAOutputConversionTool', **kwarg)