ATLAS Offline Software
F600IntegrationConfig.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 F600IntegrationCfg(flags, name = 'BenckmarkAlg', **kwarg):
8 
9  kwarg.setdefault('bdfID', flags.FPGADataPrep.bdfID) # On the testbed
10  kwarg.setdefault('xclbin', '/eos/project/a/atlas-eftracking/FPGA_compilation/FPGA_compilation_hw/F611/kernels.hw.xclbin')
11 
12  kwarg.setdefault('PixelClusterInputPath', '/eos/project/a/atlas-eftracking/TestVectors/FPGATrackSim_TVs/Test_Vectors_v0-6-3a/DataPrep_FullDet_SingleMuon/pixel_cluster_input.txt')
13  kwarg.setdefault('PixelStageOneSlicingInputPath', '/eos/project/a/atlas-eftracking/TestVectors/FPGATrackSim_TVs/Test_Vectors_v0-6-3a/DataPrep_FullDet_SingleMuon/pixelL2G_output.txt')
14  kwarg.setdefault('InsideOutInputPath', '/eos/project/a/atlas-eftracking/TestVectors/FPGATrackSim_TVs/Test_Vectors_v0-6-3a/F600_Region34_SingleMuon/slicing_PixelFirst_output.txt')
15 
16 # DataPrep
17  kwarg.setdefault('PixelClusteringKernelName', 'pixel_clustering_tool')
18  kwarg.setdefault('ProcessHitsKernelName', 'processHits')
19  kwarg.setdefault('PixelL2gKernelName', 'l2g_pixel_tool')
20  kwarg.setdefault('StripL2gKernelName', 'l2g_strip_tool')
21  kwarg.setdefault('PixelEdmPrepKernelName', 'PixelEDMPrep')
22  kwarg.setdefault('StripEdmPrepKernelName', 'StripEDMPrep')
23  kwarg.setdefault('PixelFirstStageInputKernelName', 'krnl_input_stage_rtl')
24  kwarg.setdefault('PixelFirstStageOutputKernelName', 'krnl_output_stage_rtl')
25 
26 # Slicing Engine
27  kwarg.setdefault('PixelFirstStageSlicingIPName', 'slicing_engine')
28 
29 # Inside Out
30  kwarg.setdefault('MemReadKernelName', 'mem_read')
31  kwarg.setdefault('MemWriteKernelName', 'mem_write')
32 
33 # Space Points
34  kwarg.setdefault('SpacepointKernelName', 'spacepoint_tool')
35 
36 # NN Pathfinder
37  kwarg.setdefault('LoaderKernelName', 'loader')
38  kwarg.setdefault('UnloaderKernelName', 'unloader')
39 
40 # NN Classifier
41  kwarg.setdefault('NnOverlapDecoratorKernelName', 'NNOverlapDecorator_kernel')
42 
43 # Duplicate Remover
44  kwarg.setdefault('RunnerKernelName', 'runner')
45 
46  # Set up Cluster maker tool
47  from EFTrackingFPGAPipeline.DataPrepConfig import xAODClusterMakerCfg
48  clusterMakerTool = acc.popToolsAndMerge(xAODClusterMakerCfg(flags))
49  kwarg.setdefault('xAODClusterMaker', clusterMakerTool)
50 
51  # Set up TestVectorTool
52  from EFTrackingFPGAUtility.FPGADataFormatter import FPGATestVectorToolCfg
53  testVectorTool = acc.popToolsAndMerge(FPGATestVectorToolCfg(flags))
54  kwarg.setdefault('TestVectorTool', testVectorTool)
55 
56  outputTool = acc.popToolsAndMerge(FPGAOutputConversionToolCfg(flags))
57  kwarg.setdefault('OutputConversionTool', outputTool)
58 
59  # Set up Chrono service
60  acc.addService(CompFactory.ChronoStatSvc(
61  PrintUserTime = True,
62  PrintSystemTime = True,
63  PrintEllapsedTime = True
64  ))
65 
66  alg = CompFactory.EFTrackingFPGAIntegration.F600IntegrationAlg(**kwarg)
67  import ROOT
68  alg.OutputLevel = ROOT.MSG.DEBUG
69  acc.addEventAlgo(alg)
70 
71  return acc
72 
73 def FPGAOutputConversionToolCfg(flags, name = 'FPGAOutputConversionTool', **kwarg):
74 
75  acc = ComponentAccumulator()
76 
77  kwarg.setdefault('name', name)
78  acc.setPrivateTools(CompFactory.OutputConversionTool(**kwarg))
79 
80  return acc
81 
82 
83 
84 if __name__ == "__main__":
85  from AthenaConfiguration.AllConfigFlags import initConfigFlags
86  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
87 
88  flags = initConfigFlags()
89 
90 
92  FinalProtoTrackChainxAODTracksKey="FPGA"
93  flags.Detector.EnableCalo = False
94 
95  # ensure that the xAOD SP and cluster containers are available
96  flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
97  flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
98  from ActsConfig.ActsCIFlags import actsLegacyWorkflowFlags
100  flags.Acts.doRotCorrection = False
101 
102 
103  flags.Concurrency.NumThreads=1
104  #flags.Concurrency.NumProcs=0
105  flags.Scheduler.ShowDataDeps=True
106  flags.Scheduler.CheckDependencies=True
107  flags.Debug.DumpEvtStore=False
108  # single muon
109  #flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root"]
110  # ttbar
111  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"]
112 
113  flags.fillFromArgs()
114 
115  # Additional (necessary) flag re-configuration for mutliregion tracking
116  from FPGATrackSimConfTools.FPGATrackSimAnalysisConfig import ConfigureMultiRegionFlags
118 
119  if (flags.Trigger.FPGATrackSim.pipeline.startswith('F-6')):
120  print("You are trying to run an F-6* pipeline! I am auto-configuring the Inside-Out for you. Whether you wanted to or not")
121  flags.Trigger.FPGATrackSim.Hough.genScan=True
122  flags.Trigger.FPGATrackSim.spacePoints = flags.Trigger.FPGATrackSim.Hough.secondStage
123  print("You are trying to run the NN fake rejection as part of a pipeline! I am going to enable this for you whether you want to or not")
124  flags.Trigger.FPGATrackSim.tracking = True
125  flags.Trigger.FPGATrackSim.Hough.trackNNAnalysis = True
126 
127  elif (flags.Trigger.FPGATrackSim.pipeline != ""):
128  raise AssertionError("ERROR You are trying to run the pipeline " + flags.Trigger.FPGATrackSim.pipeline + " which is not yet supported!")
129 
130  flags.lock()
131  flags.dump()
132  flags = flags.cloneAndReplace("Tracking.ActiveConfig","Tracking.MainPass")
133  cfg=MainServicesCfg(flags)
134 
135  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
136  cfg.merge(PoolReadCfg(flags))
137 
138  if flags.Input.isMC:
139  from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
140  cfg.merge(GEN_AOD2xAODCfg(flags))
141 
142  from JetRecConfig.JetRecoSteering import addTruthPileupJetsToOutputCfg # TO DO: check if this is indeed necessary for pileup samples
143  cfg.merge(addTruthPileupJetsToOutputCfg(flags))
144 
145  if flags.Detector.EnableCalo:
146  from CaloRec.CaloRecoConfig import CaloRecoCfg
147  cfg.merge(CaloRecoCfg(flags))
148 
149  if flags.Tracking.recoChain:
150  from InDetConfig.TrackRecoConfig import InDetTrackRecoCfg
151  cfg.merge(InDetTrackRecoCfg(flags))
152 
153 
154  # Configure both the dataprep and logical hits algorithms.
155  from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg
156  cfg.merge(ITkXAODToInDetClusterConversionCfg(flags)) # needed for the FPGATrackSim DataPrep to work
157  from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig import FPGATrackSimDataPrepAlgCfg
158  cfg.merge(FPGATrackSimDataPrepAlgCfg(flags))
159  from FPGATrackSimConfTools.FPGATrackSimMultiRegionConfig import FPGATrackSimMultiRegionTrackingCfg
160  cfg.merge(FPGATrackSimMultiRegionTrackingCfg(flags))
161 
162  kwarg = {}
163  acc = F600IntegrationCfg(flags, **kwarg)
164  cfg.merge(acc)
165 
166  from AthenaCommon.Constants import DEBUG
167  cfg.foreach_component("AthEventSeq/*").OutputLevel = DEBUG
168 
169  cfg.printConfig(withDetails=True, summariseProps=True)
170 
171  cfg.run(flags.Exec.MaxEvents)
172 
python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepAlgCfg
def FPGATrackSimDataPrepAlgCfg(inputFlags)
Definition: FPGATrackSimDataPrepConfig.py:364
python.CaloRecoConfig.CaloRecoCfg
def CaloRecoCfg(flags, clustersname=None)
Definition: CaloRecoConfig.py:9
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
xAODTruthCnvConfig.GEN_AOD2xAODCfg
def GEN_AOD2xAODCfg(flags, name="GEN_AOD2xAOD", **kwargs)
Definition: xAODTruthCnvConfig.py:20
F600IntegrationConfig.FPGAOutputConversionToolCfg
def FPGAOutputConversionToolCfg(flags, name='FPGAOutputConversionTool', **kwarg)
Definition: F600IntegrationConfig.py:73
python.FPGATrackSimMultiRegionConfig.FPGATrackSimMultiRegionTrackingCfg
def FPGATrackSimMultiRegionTrackingCfg(flags)
Definition: FPGATrackSimMultiRegionConfig.py:6
FPGADataFormatter.FPGATestVectorToolCfg
def FPGATestVectorToolCfg(flags, name='FPGATestVectorTool', **kwarg)
Definition: FPGADataFormatter.py:16
python.FPGATrackSimAnalysisConfig.ConfigureMultiRegionFlags
def ConfigureMultiRegionFlags(flags)
Definition: FPGATrackSimAnalysisConfig.py:704
F600IntegrationConfig.F600IntegrationCfg
def F600IntegrationCfg(flags, name='BenckmarkAlg', **kwarg)
Definition: F600IntegrationConfig.py:6
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
Constants
some useful constants -------------------------------------------------—
python.InDetPrepRawDataFormationConfig.ITkXAODToInDetClusterConversionCfg
def ITkXAODToInDetClusterConversionCfg(flags, name="ITkXAODToInDetClusterConversion", **kwargs)
Definition: InDetPrepRawDataFormationConfig.py:47
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.JetRecoSteering.addTruthPileupJetsToOutputCfg
def addTruthPileupJetsToOutputCfg(flags, toAOD=True, toESD=True)
Definition: JetRecoSteering.py:7
DataPrepConfig.xAODClusterMakerCfg
def xAODClusterMakerCfg(flags, name='xAODClusterMaker', **kwarg)
Definition: DataPrepConfig.py:31
python.TrackRecoConfig.InDetTrackRecoCfg
def InDetTrackRecoCfg(flags)
Main ID tracking config #####################.
Definition: TrackRecoConfig.py:804
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
ActsCIFlags.actsLegacyWorkflowFlags
None actsLegacyWorkflowFlags(flags)
Definition: ActsCIFlags.py:6
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:71