ATLAS Offline Software
DataPrepConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentFactory import CompFactory
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 
6 def FPGATrackSimReportingCfg(flags, name='FPGATrackSimReportingAlg',**kwargs):
7 
8  kwargs.setdefault('perEventReports', False)
9  kwargs.setdefault('xAODPixelClusterContainers',["ITkPixelClusters" ,"FPGAPixelClusters"])
10  kwargs.setdefault('xAODStripClusterContainers',["ITkStripClusters" ,"FPGAStripClusters"])
11  kwargs.setdefault('xAODSpacePointContainersFromFPGA',["FPGAPixelSpacePoints","FPGAStripSpacePoints", "FPGAStripOverlapSpacePoints", "ITkPixelSpacePoints","ITkStripSpacePoints", "ITkStripOverlapSpacePoints"])
12  kwargs.setdefault('FPGATrackSimTracks','FPGATracks_1st')
13  kwargs.setdefault('FPGATrackSimRoads','FPGARoads_1st')
14  kwargs.setdefault('FPGATrackSimProtoTracks',["ActsProtoTracks_1stFromFPGATrack"])
15  kwargs.setdefault('FPGAActsTracks',["FPGAActsTracks"])
16  kwargs.setdefault('FPGAActsSeeds',['FPGAPixelSeeds','FPGAStripSeeds'])
17  kwargs.setdefault('FPGAActsSeedsParam',['FPGAPixelEstimatedTrackParams','FPGAStripEstimatedTrackParams'])
18 
19  acc = ComponentAccumulator()
20  from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
21  acc.merge(FPGATrackSimReportingCfg(flags, name=name,**kwargs))
22 
23  return acc
24 
25 def FPGADataFormatToolCfg(flags, name='FPGADataFormatTool', **kwargs):
26  acc = ComponentAccumulator()
27  kwargs.setdefault('name', name)
28  acc.setPrivateTools(CompFactory.FPGADataFormatTool(**kwargs))
29  return acc
30 
31 def xAODClusterMakerCfg(flags, name = 'xAODClusterMaker', **kwarg):
32  """Configure the xAODClusterMaker tool"""
33 
34  acc = ComponentAccumulator()
35 
36  kwarg.setdefault('PixelClusterContainerKey', 'FPGAPixelClusters')
37  kwarg.setdefault('StripClusterContainerKey', 'FPGAStripClusters')
38  kwarg.setdefault('DoBulkCopy', False)
39 
40  acc.setPrivateTools(CompFactory.xAODClusterMaker(name, **kwarg))
41  return acc
42 
43 def xAODSpacePointMakerCfg(flags, name = 'xAODSpacePointMaker', **kwarg):
44  """Configure the xAODSpacePointMaker tool"""
45 
46  acc = ComponentAccumulator()
47 
48  # Input clusters to read from
49  kwarg.setdefault('PixelClusterContainerKey', 'FPGAPixelClusters')
50  kwarg.setdefault('StripClusterContainerKey', 'FPGAStripClusters')
51  # Output space points to create
52  kwarg.setdefault('PixelSpacePointContainerKey', 'FPGAPixelSpacePoints')
53  kwarg.setdefault('StripSpacePointContainerKey', 'FPGAStripSpacePoints')
54 
55  acc.setPrivateTools(CompFactory.xAODSpacePointMaker(name, **kwarg))
56  return acc
57 
58 def PassThroughToolCfg(flags, name = 'PassThroughTool', **kwarg):
59 
60  acc = ComponentAccumulator()
61 
62  kwarg.setdefault('name', name)
63  kwarg.setdefault('StripClusterContainerKey', 'ITkStripClusters')
64  kwarg.setdefault('PixelClusterContainerKey', 'ITkPixelClusters')
65  kwarg.setdefault('RunSW', flags.FPGADataPrep.PassThrough.RunSoftware)
66  kwarg.setdefault('ClusterOnlyPassThrough', flags.FPGADataPrep.PassThrough.ClusterOnly)
67  kwarg.setdefault('MaxClusterNum', flags.FPGADataPrep.PassThrough.MaxClusterNum)
68  kwarg.setdefault('MaxSpacePointNum', flags.FPGADataPrep.PassThrough.MaxSpacePointNum)
69 
70  acc.setPrivateTools(CompFactory.PassThroughTool(**kwarg))
71  return acc
72 
73 def DataPrepCfg(flags, name = "DataPreparationPipeline", **kwarg):
74 
75  acc = ComponentAccumulator()
76 
77  # Configure both tools
78  clusterMakerTool = acc.popToolsAndMerge(xAODClusterMakerCfg(flags))
79  spacePointMakerTool = acc.popToolsAndMerge(xAODSpacePointMakerCfg(flags))
80  passThroughTool = acc.popToolsAndMerge(PassThroughToolCfg(flags))
81 
82  kwarg.setdefault('name', name)
83  kwarg.setdefault('xAODClusterMaker', clusterMakerTool)
84  kwarg.setdefault('xAODSpacePointMaker', spacePointMakerTool)
85  kwarg.setdefault('PassThroughTool', passThroughTool)
86  # xclbin and kernels
87  kwarg.setdefault('xclbin', '')
88  kwarg.setdefault('PixelClusteringKernelName','')
89  kwarg.setdefault('SpacepointKernelName','')
90  kwarg.setdefault('PassThroughKernelName', '')
91  kwarg.setdefault('RunPassThrough', flags.FPGADataPrep.RunPassThrough)
92  # Test vectors
93  kwarg.setdefault('UseTV', flags.FPGADataPrep.FPGA.UseTV)
94  kwarg.setdefault('PixelClusterTV','')
95  kwarg.setdefault('PixelClusterRefTV','')
96  kwarg.setdefault('SpacepointTV','')
97  kwarg.setdefault('SpacepointRefTV','')
98 
99  acc.addEventAlgo(CompFactory.DataPreparationPipeline(**kwarg))
100  return acc
101 
102 if __name__=="__main__":
103  from AthenaConfiguration.AllConfigFlags import initConfigFlags
104 
105  flags = initConfigFlags()
106 
107  # useful for testing -> /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EFTracking/ATLAS-P2-RUN4-03-00-00/RDO/reg0_singlemu.root
108 
109  # The input file should be specified by the user
110  flags.Input.Files = [""]
111 
112  # Single muon with PU 200
113  flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-00/mc21_14TeV.900492.PG_single_muonpm_Pt1_etaFlatnp0_43.recon.RDO.e8481_s4149_r14697/RDO.33645151._000047.pool.root.1"]
114 
115  # ttbar with PU 200
116  # 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"]
117 
118  flags.Output.AODFileName = "DataPrepAOD.pool.root"
119 
120  # For pass-through kernel
121  flags.FPGADataPrep.RunPassThrough = False
122  flags.FPGADataPrep.PassThrough.RunSoftware = True
123  flags.FPGADataPrep.PassThrough.ClusterOnly = True
124  # ensure that the xAOD SP and cluster containers are available
125  flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
126  flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
127  flags.Acts.useCache = False
128  flags.Tracking.ITkMainPass.doActsSeed=True
129 
130  # Disable calo for this test
131  flags.Detector.EnableCalo = False
132 
133 
134 
136  from InDetTrackPerfMon.InDetTrackPerfMonFlags import initializeIDTPMConfigFlags, initializeIDTPMTrkAnaConfigFlags
137  flags = initializeIDTPMConfigFlags(flags)
138 
139  flags.PhysVal.IDTPM.outputFilePrefix = "myIDTPM_CA"
140  flags.PhysVal.IDTPM.plotsDefFileList = "InDetTrackPerfMon/PlotsDefFileList_default.txt" # default value - not needed
141  flags.PhysVal.IDTPM.plotsCommonValuesFile = "InDetTrackPerfMon/PlotsDefCommonValues.json" # default value - not needed
142  flags.PhysVal.OutputFileName = flags.PhysVal.IDTPM.outputFilePrefix + '.HIST.root' # automatically set in IDTPM config - not needed
143  flags.Output.doWriteAOD_IDTPM = True
144  flags.Output.AOD_IDTPMFileName = flags.PhysVal.IDTPM.outputFilePrefix + '.AOD_IDTPM.pool.root' # automatically set in IDTPM config - not needed
145  flags.PhysVal.IDTPM.trkAnaCfgFile = "InDetTrackPerfMon/EFTrkAnaConfig_example.json"
146 
147  flags = initializeIDTPMTrkAnaConfigFlags(flags)
148 
149  flags.PhysVal.IDTPM.TrkAnaEF.TrigTrkKey = "FPGATrackParticles"
150  flags.PhysVal.IDTPM.TrkAnaDoubleRatio.TrigTrkKey = "FPGATrackParticles"
151 
152 
153  flags.fillFromArgs()
154  flags.lock()
155  flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.MainPass", keepOriginal=True)
156  flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkMainPass", keepOriginal=True)
157 
158 
159  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
160  cfg = MainServicesCfg(flags)
161 
162  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
163  cfg.merge(PoolReadCfg(flags))
164 
165  #Truth
166  if flags.Input.isMC:
167  from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
168  cfg.merge(GEN_AOD2xAODCfg(flags))
169 
170  # Standard reco
171  from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
172  cfg.merge(ITkTrackRecoCfg(flags))
173 
174  kwarg = {}
175  # The Data Preparation (F100) Pipeline on FPGA
176  cfg.merge(DataPrepCfg(flags, **kwarg))
177 
178  # Connection to ACTS
179  if flags.FPGADataPrep.DoActs:
180  from EFTrackingFPGAUtility.DataPrepToActsConfig import DataPrepToActsCfg
181  cfg.merge(DataPrepToActsCfg(flags, **kwarg))
182 
183  cfg.merge(FPGATrackSimReportingCfg(flags))
184 
185  # IDTPM running
186  from InDetTrackPerfMon.InDetTrackPerfMonConfig import InDetTrackPerfMonCfg
187  cfg.merge( InDetTrackPerfMonCfg(flags) )
188 
189 
190  # Prepare output
191  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
192  from AthenaConfiguration.Enums import MetadataCategory
193  cfg.merge(SetupMetaDataForStreamCfg(flags,"AOD",
194  createMetadata=[
195  MetadataCategory.ByteStreamMetaData,
196  MetadataCategory.LumiBlockMetaData,
197  MetadataCategory.TruthMetaData,
198  MetadataCategory.IOVMetaData,],))
199 
200  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
201  OutputItemList = [
202  "xAOD::StripClusterContainer#FPGAStripClusters",
203  "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
204  "xAOD::PixelClusterContainer#FPGAPixelClusters",
205  "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
206  "xAOD::SpacePointContainer#FPGAPixelSpacePoints",
207  "xAOD::SpacePointAuxContainer#FPGAPixelSpacePointsAux.-measurements",
208  "xAOD::SpacePointContainer#FPGAStripSpacePoints",
209  "xAOD::SpacePointAuxContainer#FPGAStripSpacePointsAux.-measurements",
210  "xAOD::TrackParticleContainer#FPGATrackParticles",
211  "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
212  ]
213 
214  cfg.merge(addToAOD(flags, OutputItemList))
215 
216  cfg.printConfig()
217 
218  # When we use test vectors, we only need to run once
219  if not flags.FPGADataPrep.RunPassThrough and flags.FPGADataPrep.FPGA.UseTV:
220  cfg.run(1)
221  else:
222  cfg.run(-1)
python.ITkTrackRecoConfig.ITkTrackRecoCfg
ComponentAccumulator ITkTrackRecoCfg(flags)
Main ITk tracking config #####################.
Definition: ITkTrackRecoConfig.py:511
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
xAODTruthCnvConfig.GEN_AOD2xAODCfg
def GEN_AOD2xAODCfg(flags, name="GEN_AOD2xAOD", **kwargs)
Definition: xAODTruthCnvConfig.py:20
DataPrepConfig.FPGADataFormatToolCfg
def FPGADataFormatToolCfg(flags, name='FPGADataFormatTool', **kwargs)
Definition: DataPrepConfig.py:25
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
DataPrepConfig.PassThroughToolCfg
def PassThroughToolCfg(flags, name='PassThroughTool', **kwarg)
Definition: DataPrepConfig.py:58
DataPrepConfig.xAODClusterMakerCfg
def xAODClusterMakerCfg(flags, name='xAODClusterMaker', **kwarg)
Definition: DataPrepConfig.py:31
DataPrepConfig.xAODSpacePointMakerCfg
def xAODSpacePointMakerCfg(flags, name='xAODSpacePointMaker', **kwarg)
Definition: DataPrepConfig.py:43
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
DataPrepToActsConfig.DataPrepToActsCfg
ComponentAccumulator DataPrepToActsCfg(flags, **kwargs)
Definition: DataPrepToActsConfig.py:49
InDetTrackPerfMonFlags.initializeIDTPMConfigFlags
def initializeIDTPMConfigFlags(flags)
General config flag category for IDTPM tool job configuration.
Definition: InDetTrackPerfMonFlags.py:172
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:150
DataPrepConfig.DataPrepCfg
def DataPrepCfg(flags, name="DataPreparationPipeline", **kwarg)
Definition: DataPrepConfig.py:73
DataPrepConfig.FPGATrackSimReportingCfg
def FPGATrackSimReportingCfg(flags, name='FPGATrackSimReportingAlg', **kwargs)
Definition: DataPrepConfig.py:6
InDetTrackPerfMonFlags.initializeIDTPMTrkAnaConfigFlags
def initializeIDTPMTrkAnaConfigFlags(flags)
Create flags category and corresponding set of flags.
Definition: InDetTrackPerfMonFlags.py:182
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:71
InDetTrackPerfMonConfig.InDetTrackPerfMonCfg
def InDetTrackPerfMonCfg(flags)
Definition: InDetTrackPerfMonConfig.py:316