18 if (nPiOver16Min >= 32
or nPiOver16Min < 0):
19 print(
"You are asking for nPiOver16 = ",nPiOver16Min,
" but we only have 32 phi bins! Returning -1")
21 if (minAbsEta > 3.8
or minAbsEta < 0):
22 print(
"You are asking for minAbsEta = ",minAbsEta,
" but we only have 20 abs eta bins! Returning -1")
24 if not (isPositiveEta == 0
or isPositiveEta == 1):
25 print(
"You are asking for isPositiveEta = ",isPositiveEta,
" but this should only be 0 or 1! Returning -1")
28 etanum = round(minAbsEta / binSizeEta)
29 mineta = binSizeEta*etanum
30 maxeta = binSizeEta*(etanum+1)
31 if (
not isPositiveEta):
32 mineta = -binSizeEta*(etanum+1)
33 maxeta = -binSizeEta*etanum
35 region = region | ((isPositiveEta & 0x1) << 5)
36 region = region | (etanum << 6)
38 print(
"I am returning the region number for minphi =",nPiOver16Min,
"*pi/16, which is equal to",binSizePhi*nPiOver16Min)
39 print(
" and maxphi =",nPiOver16Min+1,
"*pi/16, which is equal to",binSizePhi*(nPiOver16Min+1))
40 print(
" and mineta =",mineta,
"and max eta =", maxeta)
46 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
47 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
48 return flags.Trigger.FPGATrackSim.baseName
49 elif (flags.Trigger.FPGATrackSim.region == 0):
50 return 'eta0103phi0305'
51 elif (flags.Trigger.FPGATrackSim.region == 1):
52 return 'eta0709phi0305'
53 elif (flags.Trigger.FPGATrackSim.region == 2):
54 return 'eta1214phi0305'
55 elif (flags.Trigger.FPGATrackSim.region == 3):
56 return 'eta2022phi0305'
57 elif (flags.Trigger.FPGATrackSim.region == 4):
58 return 'eta3234phi0305'
59 elif (flags.Trigger.FPGATrackSim.region == 5):
60 return 'eta0103phi1113'
61 elif (flags.Trigger.FPGATrackSim.region == 6):
62 return 'eta0103phi1921'
63 elif (flags.Trigger.FPGATrackSim.region == 7):
64 return 'eta0103phi3436'
68 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return 'default'
70 return "region"+
str(flags.Trigger.FPGATrackSim.region)
73 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
74 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
76 elif (flags.Trigger.FPGATrackSim.region == 0):
78 elif (flags.Trigger.FPGATrackSim.region == 1):
80 elif (flags.Trigger.FPGATrackSim.region == 2):
82 elif (flags.Trigger.FPGATrackSim.region == 3):
84 elif (flags.Trigger.FPGATrackSim.region == 4):
86 elif (flags.Trigger.FPGATrackSim.region == 5):
88 elif (flags.Trigger.FPGATrackSim.region == 6):
90 elif (flags.Trigger.FPGATrackSim.region == 7):
96 phiBin=flags.Trigger.FPGATrackSim.region & 0x1f
97 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return [binSize*2,binSize*3]
99 return [binSize*phiBin,binSize*(phiBin+1)]
102 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
103 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
105 elif (flags.Trigger.FPGATrackSim.region == 0):
107 elif (flags.Trigger.FPGATrackSim.region == 1):
109 elif (flags.Trigger.FPGATrackSim.region == 2):
111 elif (flags.Trigger.FPGATrackSim.region == 3):
113 elif (flags.Trigger.FPGATrackSim.region == 4):
115 elif (flags.Trigger.FPGATrackSim.region == 5):
117 elif (flags.Trigger.FPGATrackSim.region == 6):
119 elif (flags.Trigger.FPGATrackSim.region == 7):
124 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return [0.2,0.4]
127 side = (flags.Trigger.FPGATrackSim.region >> 5) & 0x1
128 etaBin = (flags.Trigger.FPGATrackSim.region >> 6) & 0x1f
129 if (side):
return [binSize*etaBin,binSize*(etaBin+1)]
130 else:
return [-binSize*(etaBin+1),-binSize*etaBin]
138 result=ComponentAccumulator()
139 FPGATrackSimRawLogic = CompFactory.FPGATrackSimRawToLogicalHitsTool(
nameWithRegionSuffix(flags,name))
140 FPGATrackSimRawLogic.SaveOptional = 2
141 if (flags.Trigger.FPGATrackSim.ActiveConfig.sampleType ==
'skipTruth'):
142 FPGATrackSimRawLogic.SaveOptional = 1
143 FPGATrackSimRawLogic.TowersToMap = [0]
146 result.addPublicTool(FPGATrackSimRawLogic,primary=
True)
166 result=ComponentAccumulator()
168 FPGATrackSimWriteOutput = CompFactory.FPGATrackSimOutputHeaderTool(
"FPGATrackSimWriteOutputDataPrep")
169 FPGATrackSimWriteOutput.InFileName = [
"test.root"]
170 FPGATrackSimWriteOutput.OutputTreeName =
"FPGATrackSimDataPrepTree"
171 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
172 writeThis=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and ((flags.Trigger.FPGATrackSim.regionToWriteDPTree
in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList))
or (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0))
175 FPGATrackSimWriteOutput.EventLimit = 0
177 FPGATrackSimWriteOutput.EventLimit = flags.Trigger.FPGATrackSim.writeOutputEventLimit
178 if flags.Trigger.FPGATrackSim.writeRegion>=0:
179 FPGATrackSimWriteOutput.RequireActivation=
True
182 FPGATrackSimWriteOutput.RWstatus =
"HEADER"
183 FPGATrackSimWriteOutput.THistSvc = CompFactory.THistSvc()
184 result.addPublicTool(FPGATrackSimWriteOutput, primary=
True)
191 result=ComponentAccumulator()
192 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
193 result.merge(ITkStripReadoutGeometryCfg(flags))
195 kwargs.setdefault(
"FPGATrackSimClusterKey",
"FPGAClusters_1st")
196 kwargs.setdefault(
"FPGATrackSimHitKey",
"FPGAHits%s" %(stage))
197 kwargs.setdefault(
"FPGATrackSimRoadKey",
"FPGARoads")
198 kwargs.setdefault(
"FPGATrackSimTrackKey",
"FPGATracks")
199 kwargs.setdefault(
"xAODPixelClusterFromFPGAClusterKey",
"xAODPixelClustersFromFPGACluster")
200 kwargs.setdefault(
"xAODStripClusterFromFPGAClusterKey",
"xAODStripClustersFromFPGACluster")
201 kwargs.setdefault(
"xAODStripSpacePointFromFPGAKey",
"xAODStripSpacePoints%sFromFPGA" %(stage))
202 kwargs.setdefault(
"xAODPixelSpacePointFromFPGAKey",
"xAODPixelSpacePoints%sFromFPGA" %(stage))
203 kwargs.setdefault(
"xAODPixelClusterFromFPGAHitKey",
"xAODPixelClusters%sFromFPGAHit" %(stage))
204 kwargs.setdefault(
"xAODStripClusterFromFPGAHitKey",
"xAODStripClusters%sFromFPGAHit" %(stage))
205 kwargs.setdefault(
"ActsProtoTrackFromFPGARoadKey",
"ActsProtoTracks%sFromFPGARoad" %(stage))
206 kwargs.setdefault(
"ActsProtoTrackFromFPGATrackKey",
"ActsProtoTracks%sFromFPGATrack" %(stage))
207 kwargs.setdefault(
"doHits",
False)
208 kwargs.setdefault(
"doClusters",
True)
209 kwargs.setdefault(
"doActsTrk",
False)
210 kwargs.setdefault(
"useRoads",
False)
214 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
215 ConvertionAlgorithm.ClusterConverter.doLorentzShift=
False
217 result.addEventAlgo(ConvertionAlgorithm)
221 result=ComponentAccumulator()
222 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
223 FPGAClusterConverter.doLorentzShift=
True
225 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
226 FPGAClusterConverter.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
228 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
229 FPGAClusterConverter.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
231 result.setPrivateTools(FPGAClusterConverter)
245 result = ComponentAccumulator()
246 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
247 from OutputStreamAthenaPool.OutputStreamConfig
import outputStreamName
248 from AthenaConfiguration.Enums
import MetadataCategory
250 result.merge( SetupMetaDataForStreamCfg( flags,
"AOD",
252 MetadataCategory.ByteStreamMetaData,
253 MetadataCategory.LumiBlockMetaData,
254 MetadataCategory.TruthMetaData,
255 MetadataCategory.IOVMetaData,],)
257 log.info(
"AOD ItemList: %s", result.getEventAlgo(outputStreamName(
"AOD")).ItemList)
258 log.info(
"AOD MetadataItemList: %s", result.getEventAlgo(outputStreamName(
"AOD")).MetadataItemList)
259 log.info(
"---------- Configured AOD writing")
261 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
262 toAOD = [f
"xAOD::TrackParticleContainer#{finalTrackParticles}",f
"xAOD::TrackParticleAuxContainer#{finalTrackParticles}Aux."]
263 if flags.Trigger.FPGATrackSim.writeClustersToAOD:
264 toAOD += [
"xAOD::PixelClusterContainer#xAODPixelClustersFromFPGACluster",
"xAOD::PixelClusterAuxContainer#xAODPixelClustersFromFPGAClusterAux.",
265 "xAOD::StripClusterContainer#xAODStripClustersFromFPGACluster",
"xAOD::StripClusterAuxContainer#xAODStripClustersFromFPGAClusterAux."]
266 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
267 toAOD += [
'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
268 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.']
269 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
270 toAOD += [f
"xAOD::SpacePointContainer#xAODPixelSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODPixelSpacePoints{stage}FromFPGAAux.-measurements",
271 f
"xAOD::SpacePointContainer#xAODStripSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODStripSpacePoints{stage}FromFPGAAux.-measurements.-sctSpacePointLink"]
273 result.merge(addToAOD(flags, toAOD))
280 result=ComponentAccumulator()
282 eventSelector.regions = flags.Trigger.FPGATrackSim.slicesFile
283 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
284 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
285 eventSelector.skipRegionCheck = flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
286 eventSelector.withPU =
False
287 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
290 eventSelector.mind0 = flags.Trigger.FPGATrackSim.d0min
291 eventSelector.maxd0 = flags.Trigger.FPGATrackSim.d0max
292 eventSelector.minz0 = flags.Trigger.FPGATrackSim.z0min
293 eventSelector.maxz0 = flags.Trigger.FPGATrackSim.z0max
294 eventSelector.minqOverPt = flags.Trigger.FPGATrackSim.qOverPtmin
295 eventSelector.maxqOverPt = flags.Trigger.FPGATrackSim.qOverPtmax
297 result.addService(eventSelector, create=
True, primary=
True)
309 result=ComponentAccumulator()
311 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
312 mappingSvc.mappingType =
"FILE"
313 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
314 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
315 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".pmap"
316 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+
"/moduleidmap"
317 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii.txt"
318 mappingSvc.radiiFile2nd = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii_2nd.txt"
319 mappingSvc.loadRadii = (
not flags.Trigger.FPGATrackSim.ActiveConfig.GNN)
and flags.Trigger.FPGATrackSim.loadRadii
320 mappingSvc.loadRegionMap = flags.Trigger.FPGATrackSim.loadRegionMap
321 mappingSvc.DoGNNTrack = flags.Trigger.FPGATrackSim.GNN.doGNNTracking
323 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
324 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
325 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
326 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
327 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
328 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
329 mappingSvc.GNNModuleMap = flags.Trigger.FPGATrackSim.GNN.moduleMapPath
330 mappingSvc.layerOverride = []
331 result.addService(mappingSvc, create=
True, primary=
True)
349 result=ComponentAccumulator()
350 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
351 HitFilteringTool.barrelStubDphiCut = 3.0
352 HitFilteringTool.doRandomRemoval =
False
353 HitFilteringTool.doStubs =
False
354 HitFilteringTool.endcapStubDphiCut = 1.5
355 HitFilteringTool.pixelClusRmFrac = 0
356 HitFilteringTool.pixelHitRmFrac = 0
357 HitFilteringTool.stripClusRmFrac = 0
358 HitFilteringTool.stripHitRmFrac = 0
359 HitFilteringTool.useNstrips =
False
360 result.addPublicTool(HitFilteringTool, primary=
True)
364 result=ComponentAccumulator()
365 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
366 LorentzAngleTool.UseAthenaLorentzAngleTools=
False
367 LorentzAngleTool.shiftGlobalPosition=
True
369 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
370 LorentzAngleTool.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
372 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
373 LorentzAngleTool.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
375 result.addPublicTool(LorentzAngleTool, primary=
True)
382 result=ComponentAccumulator()
385 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
386 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
387 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
388 writePreClusterBranch=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0)
389 theFPGATrackSimDataPrepAlg.writePreClusterBranch=writePreClusterBranch
391 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
392 theFPGATrackSimDataPrepAlg.doEvtSel=
False if flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
or flags.Trigger.FPGATrackSim.sampleType ==
'skipTruth' else True
393 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
394 theFPGATrackSimDataPrepAlg.recordHits =
not flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
395 theFPGATrackSimDataPrepAlg.writeRegion = flags.Trigger.FPGATrackSim.writeRegion
396 theFPGATrackSimDataPrepAlg.isDataPrepPipeline =
True if flags.Tracking.ActiveConfig.extension ==
"ActsValidateF100" else False
398 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
399 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
400 for region
in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
401 flagsForEachRegion = inputFlags.clone()
402 flagsForEachRegion = flagsForEachRegion.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=
True)
403 flagsForEachRegion.Trigger.FPGATrackSim.region = region
404 flagsForEachRegion.lock()
406 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flagsForEachRegion)))
409 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
411 if flags.Trigger.FPGATrackSim.wrapperFileName2
and flags.Trigger.FPGATrackSim.wrapperFileName2
is not None:
413 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
414 theFPGATrackSimDataPrepAlg.SGInputTool =
""
416 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
417 result.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags))
418 theFPGATrackSimDataPrepAlg.InputTool =
""
419 theFPGATrackSimDataPrepAlg.InputTool2 =
""
420 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
421 theFPGATrackSimDataPrepAlg.SGInputTool = result.getPrimaryAndMerge(FPGATrackSimSGInputToolCfg(flags))
422 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=
False
423 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=
False
427 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
428 if not flags.Trigger.FPGATrackSim.wrapperFileName:
430 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
432 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1
438 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimDataPrepMonitoringCfg
439 theFPGATrackSimDataPrepAlg.MonTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepMonitoringCfg(flags))
441 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
456 acc=ComponentAccumulator()
457 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
460 'FPGATrackSimSPKey':
'FPGAClusters_1st',
461 'xAODPixelClusterFromFPGAClusterKey':
'FPGAPixelClusters',
462 'xAODStripClusterFromFPGAClusterKey':
'FPGAStripClusters',
463 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
466 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
469 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig
import FPGATrackSimMergeOutputsAlgCfg
470 acc.merge(FPGATrackSimMergeOutputsAlgCfg(flags))
472 'FPGATrackSimHitKey':
'FPGAHits',
473 'xAODPixelClusterFromFPGAHitKey':
'FPGAPixelClusters',
474 'xAODStripClusterFromFPGAHitKey':
'FPGAStripClusters',
475 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
480 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
483 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
484 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**{
'xAODPixelClusterContainer':
'FPGAPixelClusters',
485 'xAODStripClusterContainer':
'FPGAStripClusters',
486 'sortedxAODPixelClusterContainer':
'ITkPixelClusters',
487 'sortedxAODStripClusterContainer':
'ITkStripClusters'})
489 acc.merge(ClusterSorting)
491 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
492 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
494 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
495 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
497 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
500 pixel_cluster_shortlist = [
'-pixelClusterLink']
501 strip_cluster_shortlist = [
'-sctClusterLink']
503 pixel_cluster_variables =
'.'.join(pixel_cluster_shortlist)
504 strip_cluster_variables =
'.'.join(strip_cluster_shortlist)
506 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
507 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
508 'xAOD::StripClusterContainer#ITkStripClusters',
509 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
510 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
511 acc.merge(addToAOD(flags, toAOD))
514 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
515 acc.merge(FPGATrackSimReportingCfg(flags,
516 perEventReports =
False,
517 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
518 'xAODStripClusterContainers' : [
'ITkStripClusters'],
519 'FPGAActsTracks' : [f
'{flags.Tracking.ActiveConfig.extension}Tracks',f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
520 'isDataPrep':
True} ))
522 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and flags.Tracking.ActiveConfig.extension
in [
"ActsValidateF100"]:
523 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
524 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
538 acc = ComponentAccumulator()
539 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
542 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
543 acc.merge(PoolReadCfg(flags))
546 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
547 acc.merge(EventInfoCnvAlgCfg(flags))
550 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
551 acc.merge(GEN_AOD2xAODCfg(flags))
553 from JetRecConfig.JetRecoSteering
import addTruthPileupJetsToOutputCfg
554 acc.merge(addTruthPileupJetsToOutputCfg(flags))
556 if flags.Detector.EnableCalo:
557 from CaloRec.CaloRecoConfig
import CaloRecoCfg
558 acc.merge(CaloRecoCfg(flags))
560 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
561 acc.merge(BeamSpotCondAlgCfg(flags))
563 from InDetConfig.SiliconPreProcessing
import ITkRecPreProcessingSiliconCfg
564 acc.merge(ITkRecPreProcessingSiliconCfg(flags))
570 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
571 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
573 FinalDataPrepTrackChainxAODTracksKeyPrefix=
"FPGA"
575 flags = initConfigFlags()
576 from InDetConfig.ConfigurationHelpers
import OnlyTrackingPreInclude
577 OnlyTrackingPreInclude(flags)
582 from ActsConfig.ActsCIFlags
import actsWorkflowFlags
583 actsWorkflowFlags(flags)
586 flags.Concurrency.NumThreads=1
587 flags.Concurrency.NumConcurrentEvents=1
588 flags.Concurrency.NumProcs=0
589 flags.Scheduler.ShowDataDeps=
False
590 flags.Scheduler.CheckDependencies=
True
591 flags.Debug.DumpEvtStore=
False
594 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
595 log.info(
"wrapperFile is string, converting to list")
596 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
597 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
599 flags.Tracking.writeExtendedSi_PRDInfo =
not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
605 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkActsPass", keepOriginal=
True)
607 acc=MainServicesCfg(flags)
608 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
609 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
610 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
618 if flags.Trigger.FPGATrackSim.doEDMConversion:
619 acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg', stage =
'_1st', doActsTrk=
False, doSP =
False))
622 from ActsConfig.ActsSpacePointFormationConfig
import ActsPixelSpacePointFormationAlgCfg
623 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,name=
"FPGAActsPixelSpacePointFormationAlg",
624 **{
'PixelClusters':
"xAODPixelClustersFromFPGACluster",
625 'PixelSpacePoints':
"xAODPixelSpacePointsFromFPGA"}))
627 if flags.Trigger.FPGATrackSim.writeToAOD:
630 finalTrackParticles=f
"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
633 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
634 acc.merge(FPGATrackSimReportingCfg(flags,stage=
"_1st",
635 perEventReports = (flags.Trigger.FPGATrackSim.sampleType !=
'skipTruth'),
639 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
640 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
641 acc.merge(FPGAOutputValidationCfg(flags, **{
'pixelKeys' : [
"xAODPixelClustersFromFPGACluster",
"ITkPixelClusters"],
642 'stripKeys':[
"xAODStripClustersFromFPGACluster",
"ITkStripClusters"],
643 'doDiffHistograms':
True,
644 'matchByID' :
True}))
646 acc.store(open(
'AnalysisConfig.pkl',
'wb'))
648 statusCode = acc.run(flags.Exec.MaxEvents)
649 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"