16 if (nPiOver16Min >= 32
or nPiOver16Min < 0):
17 print(
"You are asking for nPiOver16 = ",nPiOver16Min,
" but we only have 32 phi bins! Returning -1")
19 if (minAbsEta > 3.8
or minAbsEta < 0):
20 print(
"You are asking for minAbsEta = ",minAbsEta,
" but we only have 20 abs eta bins! Returning -1")
22 if not (isPositiveEta == 0
or isPositiveEta == 1):
23 print(
"You are asking for isPositiveEta = ",isPositiveEta,
" but this should only be 0 or 1! Returning -1")
26 etanum = round(minAbsEta / binSizeEta)
27 mineta = binSizeEta*etanum
28 maxeta = binSizeEta*(etanum+1)
29 if (
not isPositiveEta):
30 mineta = -binSizeEta*(etanum+1)
31 maxeta = -binSizeEta*etanum
33 region = region | ((isPositiveEta & 0x1) << 5)
34 region = region | (etanum << 6)
36 print(
"I am returning the region number for minphi =",nPiOver16Min,
"*pi/16, which is equal to",binSizePhi*nPiOver16Min)
37 print(
" and maxphi =",nPiOver16Min+1,
"*pi/16, which is equal to",binSizePhi*(nPiOver16Min+1))
38 print(
" and mineta =",mineta,
"and max eta =", maxeta)
44 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
45 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
46 return flags.Trigger.FPGATrackSim.baseName
47 elif (flags.Trigger.FPGATrackSim.region == 0):
48 return 'eta0103phi0305'
49 elif (flags.Trigger.FPGATrackSim.region == 1):
50 return 'eta0709phi0305'
51 elif (flags.Trigger.FPGATrackSim.region == 2):
52 return 'eta1214phi0305'
53 elif (flags.Trigger.FPGATrackSim.region == 3):
54 return 'eta2022phi0305'
55 elif (flags.Trigger.FPGATrackSim.region == 4):
56 return 'eta3234phi0305'
57 elif (flags.Trigger.FPGATrackSim.region == 5):
58 return 'eta0103phi1113'
59 elif (flags.Trigger.FPGATrackSim.region == 6):
60 return 'eta0103phi1921'
61 elif (flags.Trigger.FPGATrackSim.region == 7):
62 return 'eta0103phi3436'
66 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return 'default'
68 return "region"+str(flags.Trigger.FPGATrackSim.region)
71 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
72 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
74 elif (flags.Trigger.FPGATrackSim.region == 0):
76 elif (flags.Trigger.FPGATrackSim.region == 1):
78 elif (flags.Trigger.FPGATrackSim.region == 2):
80 elif (flags.Trigger.FPGATrackSim.region == 3):
82 elif (flags.Trigger.FPGATrackSim.region == 4):
84 elif (flags.Trigger.FPGATrackSim.region == 5):
86 elif (flags.Trigger.FPGATrackSim.region == 6):
88 elif (flags.Trigger.FPGATrackSim.region == 7):
94 phiBin=flags.Trigger.FPGATrackSim.region & 0x1f
95 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return [binSize*2,binSize*3]
97 return [binSize*phiBin,binSize*(phiBin+1)]
100 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
101 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
103 elif (flags.Trigger.FPGATrackSim.region == 0):
105 elif (flags.Trigger.FPGATrackSim.region == 1):
107 elif (flags.Trigger.FPGATrackSim.region == 2):
109 elif (flags.Trigger.FPGATrackSim.region == 3):
111 elif (flags.Trigger.FPGATrackSim.region == 4):
113 elif (flags.Trigger.FPGATrackSim.region == 5):
115 elif (flags.Trigger.FPGATrackSim.region == 6):
117 elif (flags.Trigger.FPGATrackSim.region == 7):
122 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return [0.2,0.4]
125 side = (flags.Trigger.FPGATrackSim.region >> 5) & 0x1
126 etaBin = (flags.Trigger.FPGATrackSim.region >> 6) & 0x1f
127 if (side):
return [binSize*etaBin,binSize*(etaBin+1)]
128 else:
return [-binSize*(etaBin+1),-binSize*etaBin]
136 result=ComponentAccumulator()
137 FPGATrackSimRawLogic = CompFactory.FPGATrackSimRawToLogicalHitsTool(
nameWithRegionSuffix(flags,name))
138 FPGATrackSimRawLogic.SaveOptional = 2
139 if (flags.Trigger.FPGATrackSim.ActiveConfig.sampleType ==
'skipTruth'):
140 FPGATrackSimRawLogic.SaveOptional = 1
141 FPGATrackSimRawLogic.TowersToMap = [0]
144 result.addPublicTool(FPGATrackSimRawLogic,primary=
True)
164 result=ComponentAccumulator()
166 FPGATrackSimWriteOutput = CompFactory.FPGATrackSimOutputHeaderTool(
"FPGATrackSimWriteOutputDataPrep")
167 FPGATrackSimWriteOutput.InFileName = [
"test.root"]
168 FPGATrackSimWriteOutput.OutputTreeName =
"FPGATrackSimDataPrepTree"
169 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
170 writeThis=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and ((flags.Trigger.FPGATrackSim.regionToWriteDPTree
in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList))
or (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0))
173 FPGATrackSimWriteOutput.EventLimit = 0
175 FPGATrackSimWriteOutput.EventLimit = flags.Trigger.FPGATrackSim.writeOutputEventLimit
176 if flags.Trigger.FPGATrackSim.writeRegion>=0:
177 FPGATrackSimWriteOutput.RequireActivation=
True
180 FPGATrackSimWriteOutput.RWstatus =
"HEADER"
181 FPGATrackSimWriteOutput.THistSvc = CompFactory.THistSvc()
182 result.addPublicTool(FPGATrackSimWriteOutput, primary=
True)
189 result=ComponentAccumulator()
190 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
191 result.merge(ITkStripReadoutGeometryCfg(flags))
193 kwargs.setdefault(
"FPGATrackSimClusterKey",
"FPGAClusters_1st")
194 kwargs.setdefault(
"FPGATrackSimHitKey",
"FPGAHits%s" %(stage))
195 kwargs.setdefault(
"FPGATrackSimRoadKey",
"FPGARoads")
196 kwargs.setdefault(
"FPGATrackSimTrackKey",
"FPGATracks")
197 kwargs.setdefault(
"xAODPixelClusterFromFPGAClusterKey",
"xAODPixelClustersFromFPGACluster")
198 kwargs.setdefault(
"xAODStripClusterFromFPGAClusterKey",
"xAODStripClustersFromFPGACluster")
199 kwargs.setdefault(
"xAODStripSpacePointFromFPGAKey",
"xAODStripSpacePoints%sFromFPGA" %(stage))
200 kwargs.setdefault(
"xAODPixelSpacePointFromFPGAKey",
"xAODPixelSpacePoints%sFromFPGA" %(stage))
201 kwargs.setdefault(
"xAODPixelClusterFromFPGAHitKey",
"xAODPixelClusters%sFromFPGAHit" %(stage))
202 kwargs.setdefault(
"xAODStripClusterFromFPGAHitKey",
"xAODStripClusters%sFromFPGAHit" %(stage))
203 kwargs.setdefault(
"ActsProtoTrackFromFPGARoadKey",
"ActsProtoTracks%sFromFPGARoad" %(stage))
204 kwargs.setdefault(
"ActsProtoTrackFromFPGATrackKey",
"ActsProtoTracks%sFromFPGATrack" %(stage))
205 kwargs.setdefault(
"doHits",
False)
206 kwargs.setdefault(
"doClusters",
True)
207 kwargs.setdefault(
"doActsTrk",
False)
208 kwargs.setdefault(
"useRoads",
False)
212 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
213 ConvertionAlgorithm.ClusterConverter.doLorentzShift=
False
215 result.addEventAlgo(ConvertionAlgorithm)
219 result=ComponentAccumulator()
220 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
221 FPGAClusterConverter.doLorentzShift=
True
223 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
224 FPGAClusterConverter.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
226 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
227 FPGAClusterConverter.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
229 result.setPrivateTools(FPGAClusterConverter)
243 result = ComponentAccumulator()
244 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
245 from OutputStreamAthenaPool.OutputStreamConfig
import outputStreamName
246 from AthenaConfiguration.Enums
import MetadataCategory
248 result.merge( SetupMetaDataForStreamCfg( flags,
"AOD",
250 MetadataCategory.ByteStreamMetaData,
251 MetadataCategory.LumiBlockMetaData,
252 MetadataCategory.TruthMetaData,
253 MetadataCategory.IOVMetaData,],)
255 log.info(
"AOD ItemList: %s", result.getEventAlgo(outputStreamName(
"AOD")).ItemList)
256 log.info(
"AOD MetadataItemList: %s", result.getEventAlgo(outputStreamName(
"AOD")).MetadataItemList)
257 log.info(
"---------- Configured AOD writing")
259 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
260 toAOD = [f
"xAOD::TrackParticleContainer#{finalTrackParticles}",f
"xAOD::TrackParticleAuxContainer#{finalTrackParticles}Aux."]
261 if flags.Trigger.FPGATrackSim.writeClustersToAOD:
262 toAOD += [
"xAOD::PixelClusterContainer#xAODPixelClustersFromFPGACluster",
"xAOD::PixelClusterAuxContainer#xAODPixelClustersFromFPGAClusterAux.",
263 "xAOD::StripClusterContainer#xAODStripClustersFromFPGACluster",
"xAOD::StripClusterAuxContainer#xAODStripClustersFromFPGAClusterAux."]
264 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
265 toAOD += [
'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
266 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.']
267 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
268 toAOD += [f
"xAOD::SpacePointContainer#xAODPixelSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODPixelSpacePoints{stage}FromFPGAAux.-measurements",
269 f
"xAOD::SpacePointContainer#xAODStripSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODStripSpacePoints{stage}FromFPGAAux.-measurements.-sctSpacePointLink"]
271 result.merge(addToAOD(flags, toAOD))
278 result=ComponentAccumulator()
280 eventSelector.regions = flags.Trigger.FPGATrackSim.slicesFile
281 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
282 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
283 eventSelector.skipRegionCheck = flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
284 eventSelector.withPU =
False
285 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
288 eventSelector.mind0 = flags.Trigger.FPGATrackSim.d0min
289 eventSelector.maxd0 = flags.Trigger.FPGATrackSim.d0max
290 eventSelector.minz0 = flags.Trigger.FPGATrackSim.z0min
291 eventSelector.maxz0 = flags.Trigger.FPGATrackSim.z0max
292 eventSelector.minqOverPt = flags.Trigger.FPGATrackSim.qOverPtmin
293 eventSelector.maxqOverPt = flags.Trigger.FPGATrackSim.qOverPtmax
295 result.addService(eventSelector, create=
True, primary=
True)
307 result=ComponentAccumulator()
309 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
310 mappingSvc.mappingType =
"FILE"
311 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
312 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
313 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".pmap"
314 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+
"/moduleidmap"
315 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii.txt"
316 mappingSvc.radiiFile2nd = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii_2nd.txt"
317 mappingSvc.loadRadii = (
not flags.Trigger.FPGATrackSim.ActiveConfig.GNN)
and flags.Trigger.FPGATrackSim.loadRadii
318 mappingSvc.loadRegionMap = flags.Trigger.FPGATrackSim.loadRegionMap
319 mappingSvc.DoGNNTrack = flags.Trigger.FPGATrackSim.GNN.doGNNTracking
321 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
322 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
323 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
324 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
325 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
326 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
327 mappingSvc.GNNModuleMap = flags.Trigger.FPGATrackSim.GNN.moduleMapPath
328 mappingSvc.layerOverride = []
329 result.addService(mappingSvc, create=
True, primary=
True)
347 result=ComponentAccumulator()
348 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
349 HitFilteringTool.barrelStubDphiCut = 3.0
350 HitFilteringTool.doRandomRemoval =
False
351 HitFilteringTool.doStubs =
False
352 HitFilteringTool.endcapStubDphiCut = 1.5
353 HitFilteringTool.pixelClusRmFrac = 0
354 HitFilteringTool.pixelHitRmFrac = 0
355 HitFilteringTool.stripClusRmFrac = 0
356 HitFilteringTool.stripHitRmFrac = 0
357 HitFilteringTool.useNstrips =
False
358 result.addPublicTool(HitFilteringTool, primary=
True)
362 result=ComponentAccumulator()
363 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
364 LorentzAngleTool.UseAthenaLorentzAngleTools=
False
365 LorentzAngleTool.shiftGlobalPosition=
True
367 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
368 LorentzAngleTool.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
370 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
371 LorentzAngleTool.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
373 result.addPublicTool(LorentzAngleTool, primary=
True)
380 result=ComponentAccumulator()
383 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
384 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
385 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
386 writePreClusterBranch=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0)
387 theFPGATrackSimDataPrepAlg.writePreClusterBranch=writePreClusterBranch
389 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
390 theFPGATrackSimDataPrepAlg.doEvtSel=
False if flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
or flags.Trigger.FPGATrackSim.sampleType ==
'skipTruth' else True
391 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
392 theFPGATrackSimDataPrepAlg.recordHits =
not flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
393 theFPGATrackSimDataPrepAlg.writeRegion = flags.Trigger.FPGATrackSim.writeRegion
394 theFPGATrackSimDataPrepAlg.isDataPrepPipeline =
True if flags.Tracking.ActiveConfig.extension ==
"ActsValidateF100" else False
396 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
397 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
398 for region
in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
399 flagsForEachRegion = inputFlags.clone()
400 flagsForEachRegion = flagsForEachRegion.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=
True)
401 flagsForEachRegion.Trigger.FPGATrackSim.region = region
402 flagsForEachRegion.lock()
404 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flagsForEachRegion)))
407 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
409 if flags.Trigger.FPGATrackSim.wrapperFileName2
and flags.Trigger.FPGATrackSim.wrapperFileName2
is not None:
411 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
412 theFPGATrackSimDataPrepAlg.SGInputTool =
""
414 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
415 result.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags))
416 theFPGATrackSimDataPrepAlg.InputTool =
""
417 theFPGATrackSimDataPrepAlg.InputTool2 =
""
418 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
419 theFPGATrackSimDataPrepAlg.SGInputTool = result.getPrimaryAndMerge(FPGATrackSimSGInputToolCfg(flags))
420 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=
False
421 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=
False
425 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
426 if not flags.Trigger.FPGATrackSim.wrapperFileName:
428 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
430 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1
436 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimDataPrepMonitoringCfg
437 theFPGATrackSimDataPrepAlg.MonTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepMonitoringCfg(flags))
439 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
455 acc=ComponentAccumulator()
456 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
459 'FPGATrackSimSPKey':
'FPGAClusters_1st',
460 'xAODPixelClusterFromFPGAClusterKey':
'FPGAPixelClusters',
461 'xAODStripClusterFromFPGAClusterKey':
'FPGAStripClusters',
462 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
465 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
468 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig
import FPGATrackSimMergeOutputsAlgCfg
469 acc.merge(FPGATrackSimMergeOutputsAlgCfg(flags))
471 'FPGATrackSimHitKey':
'FPGAHits',
472 'xAODPixelClusterFromFPGAHitKey':
'FPGAPixelClusters',
473 'xAODStripClusterFromFPGAHitKey':
'FPGAStripClusters',
474 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
479 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
482 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
483 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**{
'xAODPixelClusterContainer':
'FPGAPixelClusters',
484 'xAODStripClusterContainer':
'FPGAStripClusters',
485 'sortedxAODPixelClusterContainer':
'ITkPixelClusters',
486 'sortedxAODStripClusterContainer':
'ITkStripClusters'})
488 acc.merge(ClusterSorting)
490 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
491 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
493 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
494 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
496 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
499 pixel_cluster_shortlist = [
'-pixelClusterLink']
500 strip_cluster_shortlist = [
'-sctClusterLink']
502 pixel_cluster_variables =
'.'.join(pixel_cluster_shortlist)
503 strip_cluster_variables =
'.'.join(strip_cluster_shortlist)
505 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
506 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
507 'xAOD::StripClusterContainer#ITkStripClusters',
508 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
509 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
510 acc.merge(addToAOD(flags, toAOD))
513 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
514 acc.merge(FPGATrackSimReportingCfg(flags,
515 perEventReports =
False,
516 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
517 'xAODStripClusterContainers' : [
'ITkStripClusters'],
518 'FPGAActsTracks' : [f
'{flags.Tracking.ActiveConfig.extension}Tracks',f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
519 'isDataPrep':
True} ))
521 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and flags.Tracking.ActiveConfig.extension
in [
"ActsValidateF100"]:
522 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
523 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
537 acc = ComponentAccumulator()
538 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
541 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
542 acc.merge(PoolReadCfg(flags))
545 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
546 acc.merge(EventInfoCnvAlgCfg(flags))
549 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
550 acc.merge(GEN_AOD2xAODCfg(flags))
552 from JetRecConfig.JetRecoSteering
import addTruthPileupJetsToOutputCfg
553 acc.merge(addTruthPileupJetsToOutputCfg(flags))
555 if flags.Detector.EnableCalo:
556 from CaloRec.CaloRecoConfig
import CaloRecoCfg
557 acc.merge(CaloRecoCfg(flags))
559 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
560 acc.merge(BeamSpotCondAlgCfg(flags))
562 from InDetConfig.SiliconPreProcessing
import ITkRecPreProcessingSiliconCfg
563 acc.merge(ITkRecPreProcessingSiliconCfg(flags))
569 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
570 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
572 FinalDataPrepTrackChainxAODTracksKeyPrefix=
"FPGA"
574 flags = initConfigFlags()
575 from InDetConfig.ConfigurationHelpers
import OnlyTrackingPreInclude
576 OnlyTrackingPreInclude(flags)
581 from ActsConfig.ActsCIFlags
import actsWorkflowFlags
582 actsWorkflowFlags(flags)
585 flags.Concurrency.NumThreads=1
586 flags.Concurrency.NumConcurrentEvents=1
587 flags.Concurrency.NumProcs=0
588 flags.Scheduler.ShowDataDeps=
False
589 flags.Scheduler.CheckDependencies=
True
590 flags.Debug.DumpEvtStore=
False
593 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
594 log.info(
"wrapperFile is string, converting to list")
595 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
596 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
598 flags.Tracking.writeExtendedSi_PRDInfo =
not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
604 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkActsPass", keepOriginal=
True)
606 acc=MainServicesCfg(flags)
607 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
608 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
609 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
617 if flags.Trigger.FPGATrackSim.doEDMConversion:
618 acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg', stage =
'_1st', doActsTrk=
False, doSP =
False))
621 from ActsConfig.ActsSpacePointFormationConfig
import ActsPixelSpacePointFormationAlgCfg
622 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,name=
"FPGAActsPixelSpacePointFormationAlg",
623 **{
'PixelClusters':
"xAODPixelClustersFromFPGACluster",
624 'PixelSpacePoints':
"xAODPixelSpacePointsFromFPGA"}))
626 if flags.Trigger.FPGATrackSim.writeToAOD:
629 finalTrackParticles=f
"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
632 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
633 acc.merge(FPGATrackSimReportingCfg(flags,stage=
"_1st",
634 perEventReports = (flags.Trigger.FPGATrackSim.sampleType !=
'skipTruth'),
638 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
639 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
640 acc.merge(FPGAOutputValidationCfg(flags, **{
'pixelKeys' : [
"xAODPixelClustersFromFPGACluster",
"ITkPixelClusters"],
641 'stripKeys':[
"xAODStripClustersFromFPGACluster",
"ITkStripClusters"],
642 'doDiffHistograms':
True,
643 'matchByID' :
True}))
645 acc.store(open(
'AnalysisConfig.pkl',
'wb'))
647 statusCode = acc.run(flags.Exec.MaxEvents)
648 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"