3from AthenaConfiguration.ComponentFactory
import CompFactory
4from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
8 acc = ComponentAccumulator()
10 kwarg.setdefault(
'bdfID', flags.FPGADataPrep.bdfID)
11 kwarg.setdefault(
'xclbin', flags.FPGADataPrep.xclbin)
13 kwarg.setdefault(
'PixelClusterKernelName',
'pixel_clustering_tool')
14 kwarg.setdefault(
'StripClusterKernelName',
'processHits')
15 kwarg.setdefault(
'StripL2GKernelName',
'l2g_strip_tool')
16 kwarg.setdefault(
'PixelEDMPrepKernelName',
'PixelEDMPrep')
17 kwarg.setdefault(
'StripEDMPrepKernelName',
'StripEDMPrep')
18 kwarg.setdefault(
'SlicingEngineInputName',
'configurableLengthWideLoader')
19 kwarg.setdefault(
'SlicingEngineOutputName',
'dynamicLengthWideUnloader')
20 kwarg.setdefault(
'InsideOutInputName',
'krnl_mm2s')
21 kwarg.setdefault(
'InsideOutOutputName',
'mem_write')
24 acc.addService(CompFactory.ChronoStatSvc(
26 PrintSystemTime =
True,
27 PrintEllapsedTime =
True
30 acc.addEventAlgo(CompFactory.EFTrackingFPGAIntegration.F150IntegrationAlg(name, **kwarg))
35 acc = ComponentAccumulator()
37 kwarg.setdefault(
'FPGAOutputTrackKey',
"FPGATrackOutput")
38 kwarg.setdefault(
'FPGASpacePointsKey',
"FPGAPixelSpacePoints")
39 kwarg.setdefault(
'OutputSeeds',
"ActsValidateF150PixelSeeds")
41 alg = CompFactory.EFTrackingFPGAIntegration.F150EDMConversionAlg(name, **kwarg)
48 kwargs.setdefault(
'FPGAThreads', flags.Concurrency.NumThreads)
49 acc = ComponentAccumulator()
50 from EFTrackingFPGAPipeline.F100IntegrationConfig
import F100DataEncodingCfg, F100EDMConversionCfg, FPGAClusterSortingCfg
51 acc.merge(F100DataEncodingCfg(flags))
55 acc.merge(F100EDMConversionCfg(flags,
56 **{
'xAODClusterMakerTool.PixelClusterContainerKey':
57 'FPGAPixelClusters' if flags.FPGADataPrep.DoClusterSorting
58 else'ITkPixelClusters',
59 'xAODClusterMakerTool.StripClusterContainerKey':
60 'FPGAStripClusters' if flags.FPGADataPrep.DoClusterSorting
61 else 'ITkStripClusters'}))
62 if(flags.FPGADataPrep.DoClusterSorting):
63 acc.merge(FPGAClusterSortingCfg(flags,
64 **{
'sortedxAODPixelClusterContainer':
'SortedFPGAPixelClusters' if runStandalone
65 else 'ITkPixelClusters',
66 'sortedxAODStripClusterContainer':
'SortedFPGAStripClusters' if runStandalone
67 else 'ITkStripClusters'}))
70 **{
'FPGASpacePointsKey' :
'ITkPixelSpacePoints'}))
72 if(
not runStandalone):
73 if(
not flags.FPGADataPrep.ForTiming):
74 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
75 acc.merge(FPGATrackSimReportingCfg(flags,
76 perEventReports =
False,
77 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
78 'xAODStripClusterContainers' : [
'ITkStripClusters'],
79 'FPGAActsTracks' : [f
'{flags.Tracking.ActiveConfig.extension}Tracks',f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
80 'isDataPrep':
True} ))
82 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
83 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
85 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
86 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
88 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
91 pixel_cluster_shortlist = [
'-pixelClusterLink']
92 strip_cluster_shortlist = [
'-sctClusterLink']
94 pixel_cluster_variables =
'.'.join(pixel_cluster_shortlist)
95 strip_cluster_variables =
'.'.join(strip_cluster_shortlist)
97 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
98 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
99 'xAOD::StripClusterContainer#ITkStripClusters',
100 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
101 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
102 acc.merge(addToAOD(flags, toAOD))
109if __name__ ==
"__main__":
110 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
111 flags = initConfigFlags()
113 flags.Detector.EnableCalo =
False
114 flags.FPGADataPrep.DoActs =
True
115 flags.Acts.doRotCorrection =
False
117 flags.Concurrency.NumThreads = 1
118 flags.Input.Files = [
"/eos/project-a/atlas-eftracking/AODfiles_EFTrackPerf/Region34SingleMuon/output.rdo.000012.0.root"]
120 flags.Output.AODFileName =
"FPGA.Benchmark.AOD.pool.root"
121 flags.Debug.DumpEvtStore=
False
124 if(
not flags.FPGADataPrep.ForTiming):
126 flags.FPGADataPrep.PassThrough.ClusterOnly =
True
128 if flags.FPGADataPrep.PassThrough.ClusterOnly:
129 flags.Acts.useCache =
False
130 flags.Tracking.ITkMainPass.doActsSeed =
True
132 flags.Tracking.ITkMainPass.doAthenaToActsCluster =
True
133 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint =
True
134 flags.Tracking.ITkMainPass.doAthenaSpacePoint =
True
136 flags.Tracking.doTruth=
False
137 flags.ITk.doTruth=
False
138 flags.InDet.doTruth=
False
141 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
143 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
144 cfg = MainServicesCfg(flags)
146 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
147 cfg.merge(PoolReadCfg(flags))
149 if(
not flags.FPGADataPrep.ForTiming):
152 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
153 cfg.merge(GEN_AOD2xAODCfg(flags))
156 from InDetConfig.ITkTrackRecoConfig
import ITkTrackRecoCfg
157 cfg.merge(ITkTrackRecoCfg(flags))
159 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
160 cfg.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
163 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
164 cfg.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
170 if flags.FPGADataPrep.DoActs:
173 from EFTrackingFPGAUtility.DataPrepToActsConfig
import UseActsSpacePointFormationCfg
174 cfg.merge(UseActsSpacePointFormationCfg(flags))
178 from FPGATrackSimConfTools.FPGATrackSimDataPrepConfig
import FPGATrackSimDataPrepConnectToFastTracking
179 cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=
"FPGA",
180 **{
'PixelSeedingAlg.InputSpacePoints' : [
'FPGAPixelSpacePoints'],
181 'StripSeedingAlg.InputSpacePoints' : [
''],
182 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"SortedFPGAPixelClusters",
"SortedFPGAStripClusters"],
183 'PixelClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAPixelClusters',
184 'StripClusterToTruthAssociationAlg.Measurements' :
'SortedFPGAStripClusters'}))
185 if(
not flags.FPGADataPrep.ForTiming):
188 cfg.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=
"ActsFast"))
191 "xAOD::TrackParticleContainer#FPGATrackParticles",
192 "xAOD::TrackParticleAuxContainer#FPGATrackParticlesAux."
196 if(
not flags.FPGADataPrep.ForTiming):
198 "xAOD::StripClusterContainer#FPGAStripClusters",
199 "xAOD::StripClusterAuxContainer#FPGAStripClustersAux.",
200 "xAOD::PixelClusterContainer#FPGAPixelClusters",
201 "xAOD::PixelClusterAuxContainer#FPGAPixelClustersAux.",
204 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
205 cfg.merge(FPGAOutputValidationCfg(flags, **{
206 "pixelKeys": [
"FPGAPixelClusters",
"ITkPixelClusters"],
207 "stripKeys": [
"FPGAStripClusters",
"ITkStripClusters"],
208 'doDiffHistograms':
True,
210 'allowedRdoMisses': 1000}))
214 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
215 from AthenaConfiguration.Enums
import MetadataCategory
216 cfg.merge(SetupMetaDataForStreamCfg(flags,
"AOD",
218 MetadataCategory.ByteStreamMetaData,
219 MetadataCategory.LumiBlockMetaData,
220 MetadataCategory.TruthMetaData,
221 MetadataCategory.IOVMetaData,],))
223 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
224 cfg.merge(addToAOD(flags, OutputItemList))
229 cfg.foreach_component(
"AthEventSeq/*").OutputLevel = DEBUG
230 cfg.printConfig(withDetails=
True, summariseProps=
True)
231 cfg.store(open(
"F100IntegrationAlg.pkl",
"wb"))
232 cfg.run(flags.Exec.MaxEvents)
F150EDMConversionCfg(flags, name='F150EDMConversionAlg', **kwarg)
F150IntegrationAlgCfg(flags, name='F150IntegrationAlg', **kwarg)
FPGA150Pipeline(flags, runStandalone=False)