ATLAS Offline Software
Loading...
Searching...
No Matches
F150KernelTesterConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 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.FPGAToolsConfig 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 flags.Acts.doRotCorrection = False
95
96
97 flags.Concurrency.NumThreads=1
98 #flags.Concurrency.NumProcs=0
99 flags.Scheduler.ShowDataDeps=True
100 flags.Scheduler.CheckDependencies=True
101 flags.Debug.DumpEvtStore=False
102 # single muon
103 #flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
104 # ttbar
105 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"]
106
107 flags.fillFromArgs()
108
109 flags.Trigger.FPGATrackSim.tracking = False
110 flags.Trigger.FPGATrackSim.Hough.genScan = True
111 flags.Trigger.FPGATrackSim.Hough.secondStage = False
112
113 flags.lock()
114 flags.dump()
115 flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass")
116 cfg=MainServicesCfg(flags)
117
118 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
119 cfg.merge(PoolReadCfg(flags))
120
121 if flags.Input.isMC:
122 from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
123 cfg.merge(GEN_AOD2xAODCfg(flags))
124
125 from JetRecConfig.JetRecoSteering import addTruthPileupJetsToOutputCfg # TO DO: check if this is indeed necessary for pileup samples
126 cfg.merge(addTruthPileupJetsToOutputCfg(flags))
127
128 if flags.Detector.EnableCalo:
129 from CaloRec.CaloRecoConfig import CaloRecoCfg
130 cfg.merge(CaloRecoCfg(flags))
131
132 if flags.Tracking.recoChain:
133 from InDetConfig.TrackRecoConfig import InDetTrackRecoCfg
134 cfg.merge(InDetTrackRecoCfg(flags))
135
136
137 # Configure both the dataprep and logical hits algorithms.
138 from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg
139 cfg.merge(ITkXAODToInDetClusterConversionCfg(flags)) # needed for the FPGATrackSim DataPrep to work
140 from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig import FPGATrackSimDataPrepAlgCfg
141 cfg.merge(FPGATrackSimDataPrepAlgCfg(flags))
142 from FPGATrackSimConfTools.FPGATrackSimMultiRegionConfig import FPGATrackSimMultiRegionTrackingCfg
143 cfg.merge(FPGATrackSimMultiRegionTrackingCfg(flags))
144
145 kwarg = {}
146 acc = KernelTesterCfg(flags, **kwarg)
147 cfg.merge(acc)
148
149 from AthenaCommon.Constants import DEBUG
150 cfg.foreach_component("AthEventSeq/*").OutputLevel = DEBUG
151
152 cfg.printConfig(withDetails=True, summariseProps=True)
153
154 cfg.run(flags.Exec.MaxEvents)
155
F150EDMConversionAlgCfg(flags, **kwarg)
FPGAOutputConversionToolCfg(flags, name='FPGAOutputConversionTool', **kwarg)
KernelTesterCfg(flags, name='F150BenchmarkAlg', **kwarg)