ATLAS Offline Software
Loading...
Searching...
No Matches
python.FPGATrackSimDataPrepConfig Namespace Reference

Functions

 nameWithRegionSuffix (flags, basename)
 getRegionNumber (nPiOver16Min, minAbsEta, isPositiveEta, verbosePrint=True)
 getBaseName (flags)
 getPhiRange (flags)
 getEtaRange (flags)
 getEtaSideBits (flags)
 FPGATrackSimRawLogicCfg (flags, name="FPGATrackSimRawLogicTool")
 FPGATrackSimSpacePointsToolCfg (flags)
 prepareFlagsForFPGATrackSimDataPrepAlg (flags)
 FPGATrackSimDataPrepOutputCfg (flags)
 FPGAConversionAlgCfg (inputFlags, name='FPGAConversionAlg', stage='', **kwargs)
 FPGAClusterConverterCfg (flags)
 FPGAActsTrkConverterCfg (flags)
 WriteToAOD (flags, stage='', finalTrackParticles='')
 FPGATrackSimEventSelectionSvcCfg (flags, name="FPGATrackSimEventSelectionSvc")
 FPGATrackSimEventSelectionToolCfg (flags, name="FPGATrackSimEventSelectionTool")
 FPGATrackSimMappingCfg (flags, name="FPGATrackSimMappingSvc")
 FPGATrackSimReadInputCfg (flags)
 FPGATrackSimReadInput2Cfg (flags)
 FPGATrackSimHitFilteringToolCfg (flags)
 FPGATrackSimLorentzAngleToolCfg (flags)
 FPGATrackSimDataPrepAlgCfg (inputFlags)
 FPGATrackSimRegionFlagCfg (flags)
 FPGATrackSimClusteringCfg (flags)
 FPGATrackSimDataPrepFlagCfg (flags)
 FPGATrackSimDataPrepSetup (flags, runReco=True)
 runDataPrepChain ()

Variables

 log = AthenaLogger(__name__)

Function Documentation

◆ FPGAActsTrkConverterCfg()

python.FPGATrackSimDataPrepConfig.FPGAActsTrkConverterCfg ( flags)

Definition at line 236 of file FPGATrackSimDataPrepConfig.py.

236def FPGAActsTrkConverterCfg(flags):
237 result=ComponentAccumulator()
238 FPGAActsTrkConverter = CompFactory.FPGAActsTrkConverter()
239 result.setPrivateTools(FPGAActsTrkConverter)
240
241 return result
242
243

◆ FPGAClusterConverterCfg()

python.FPGATrackSimDataPrepConfig.FPGAClusterConverterCfg ( flags)

Definition at line 220 of file FPGATrackSimDataPrepConfig.py.

220def FPGAClusterConverterCfg(flags):
221 result=ComponentAccumulator()
222 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
223 FPGAClusterConverter.doLorentzShift=True
224
225 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig import ITkPixelLorentzAngleToolCfg
226 FPGAClusterConverter.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
227
228 from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
229 FPGAClusterConverter.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
230
231 result.setPrivateTools(FPGAClusterConverter)
232
233 return result
234
235

◆ FPGAConversionAlgCfg()

python.FPGATrackSimDataPrepConfig.FPGAConversionAlgCfg ( inputFlags,
name = 'FPGAConversionAlg',
stage = '',
** kwargs )

Definition at line 187 of file FPGATrackSimDataPrepConfig.py.

187def FPGAConversionAlgCfg(inputFlags, name = 'FPGAConversionAlg', stage = '', **kwargs):
188
189 flags = prepareFlagsForFPGATrackSimDataPrepAlg(inputFlags)
190
191 result=ComponentAccumulator()
192 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
193 result.merge(ITkStripReadoutGeometryCfg(flags))
194
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)
211 kwargs.setdefault("ClusterConverter", result.popToolsAndMerge(FPGAClusterConverterCfg(flags)))
212 kwargs.setdefault("ActsTrkConverter", result.popToolsAndMerge(FPGAActsTrkConverterCfg(flags)))
213
214 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
215 ConvertionAlgorithm.ClusterConverter.doLorentzShift=False # this should not be turned on unless needed for validation purposes
216
217 result.addEventAlgo(ConvertionAlgorithm)
218 return result
219

◆ FPGATrackSimClusteringCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimClusteringCfg ( flags)

Definition at line 455 of file FPGATrackSimDataPrepConfig.py.

455def FPGATrackSimClusteringCfg(flags): # to be used in the Reco_tf configuration
456 acc=ComponentAccumulator()
457 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
458 acc.merge(FPGATrackSimDataPrepAlgCfg(flags))
459 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st',**{
460 'FPGATrackSimSPKey': 'FPGAClusters_1st',
461 'xAODPixelClusterFromFPGAClusterKey': 'FPGAPixelClusters',
462 'xAODStripClusterFromFPGAClusterKey': 'FPGAStripClusters',
463 'xAODPixelSpacePointFromFPGAKey': 'ITkPixelSpacePoints',
464 'doActsTrk': False,
465 'useRoads': False,
466 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
467 }))
468 else:
469 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig import FPGATrackSimMergeOutputsAlgCfg
470 acc.merge(FPGATrackSimMergeOutputsAlgCfg(flags))
471 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st',**{
472 'FPGATrackSimHitKey': 'FPGAHits',
473 'xAODPixelClusterFromFPGAHitKey': 'FPGAPixelClusters',
474 'xAODStripClusterFromFPGAHitKey': 'FPGAStripClusters',
475 'xAODPixelSpacePointFromFPGAKey': 'ITkPixelSpacePoints',
476 'doActsTrk': False,
477 'useRoads': False,
478 'doClusters': False,
479 'doHits': True,
480 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
481 }))
482
483 from FPGAClusterSorting.FPGAClusterSortingConfig import FPGAClusterSortingAlgCfg
484 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**{'xAODPixelClusterContainer': 'FPGAPixelClusters',
485 'xAODStripClusterContainer': 'FPGAStripClusters',
486 'sortedxAODPixelClusterContainer': 'ITkPixelClusters',
487 'sortedxAODStripClusterContainer': 'ITkStripClusters'})
488
489 acc.merge(ClusterSorting)
490
491 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
492 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
493
494 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
495 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
496
497 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
498 toAOD = []
499
500 pixel_cluster_shortlist = ['-pixelClusterLink']
501 strip_cluster_shortlist = ['-sctClusterLink']
502
503 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
504 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
505
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))
512
513
514 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
515 acc.merge(FPGATrackSimReportingCfg(flags,
516 perEventReports = False, # set to True if per-event information is needed for debugging (e.g. cluster, tracks). Otherwise it produces a lot of output
517 **{'xAODPixelClusterContainers' : ['ITkPixelClusters'],
518 'xAODStripClusterContainers' : ['ITkStripClusters'],
519 'FPGAActsTracks' : [f'{flags.Tracking.ActiveConfig.extension}Tracks',f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
520 'isDataPrep': True} ))
521
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'"]))
525 return acc
526

◆ FPGATrackSimDataPrepAlgCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepAlgCfg ( inputFlags)

Definition at line 378 of file FPGATrackSimDataPrepConfig.py.

378def FPGATrackSimDataPrepAlgCfg(inputFlags):
379
380 flags = prepareFlagsForFPGATrackSimDataPrepAlg(inputFlags)
381
382 result=ComponentAccumulator()
383
384
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
390
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
397
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()
405
406 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(FPGATrackSimRawLogicCfg(flagsForEachRegion)))
407 theFPGATrackSimDataPrepAlg.eventSelectors.append(result.getPrimaryAndMerge(FPGATrackSimEventSelectionToolCfg(flagsForEachRegion)))
408
409 if flags.Trigger.FPGATrackSim.wrapperFileName and flags.Trigger.FPGATrackSim.wrapperFileName is not None:
410 theFPGATrackSimDataPrepAlg.InputTool = result.getPrimaryAndMerge(FPGATrackSimReadInputCfg(flags))
411 if flags.Trigger.FPGATrackSim.wrapperFileName2 and flags.Trigger.FPGATrackSim.wrapperFileName2 is not None:
412 theFPGATrackSimDataPrepAlg.InputTool2 = result.getPrimaryAndMerge(FPGATrackSimReadInput2Cfg(flags))
413 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
414 theFPGATrackSimDataPrepAlg.SGInputTool = ""
415 else:
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
424
425 theFPGATrackSimDataPrepAlg.HitFilteringTool = result.getPrimaryAndMerge(FPGATrackSimHitFilteringToolCfg(flags))
426
427 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
428 if not flags.Trigger.FPGATrackSim.wrapperFileName:
429 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleTool = result.getPrimaryAndMerge(FPGATrackSimLorentzAngleToolCfg(flags))
430 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
431 else:
432 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1 # should be set to False by default in the tool class but just in case...
433
434
435
436 theFPGATrackSimDataPrepAlg.OutputTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepOutputCfg(flags))
437
438 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig import FPGATrackSimDataPrepMonitoringCfg
439 theFPGATrackSimDataPrepAlg.MonTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepMonitoringCfg(flags))
440
441 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
442
443 return result
444
445

◆ FPGATrackSimDataPrepFlagCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepFlagCfg ( flags)

Definition at line 527 of file FPGATrackSimDataPrepConfig.py.

527def FPGATrackSimDataPrepFlagCfg(flags): # to be used in the Reco_tf configuration
528
529 flags.Trigger.FPGATrackSim.readOfflineObjects=False
530 flags.Trigger.FPGATrackSim.doMultiTruth=False
531
532 flags = FPGATrackSimRegionFlagCfg(flags)
533
534 return flags
535
536

◆ FPGATrackSimDataPrepOutputCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepOutputCfg ( flags)

Definition at line 165 of file FPGATrackSimDataPrepConfig.py.

165def FPGATrackSimDataPrepOutputCfg(flags):
166 result=ComponentAccumulator()
167
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))
173
174 if not writeThis:
175 FPGATrackSimWriteOutput.EventLimit = 0
176 else:
177 FPGATrackSimWriteOutput.EventLimit = flags.Trigger.FPGATrackSim.writeOutputEventLimit
178 if flags.Trigger.FPGATrackSim.writeRegion>=0: # negative is off
179 FPGATrackSimWriteOutput.RequireActivation=True
180 # RECREATE means that that this tool opens the file.
181 # HEADER would mean that something else (e.g. THistSvc) opens it and we just add the object.
182 FPGATrackSimWriteOutput.RWstatus = "HEADER"
183 FPGATrackSimWriteOutput.THistSvc = CompFactory.THistSvc()
184 result.addPublicTool(FPGATrackSimWriteOutput, primary=True)
185 return result
186

◆ FPGATrackSimDataPrepSetup()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepSetup ( flags,
runReco = True )

Definition at line 537 of file FPGATrackSimDataPrepConfig.py.

537def FPGATrackSimDataPrepSetup(flags,runReco=True):
538 acc = ComponentAccumulator()
539 if flags.Trigger.FPGATrackSim.wrapperFileName and flags.Trigger.FPGATrackSim.wrapperFileName is not None:
540 return acc
541
542 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
543 acc.merge(PoolReadCfg(flags))
544
545 if not runReco:
546 from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
547 acc.merge(EventInfoCnvAlgCfg(flags))
548 else:
549 if flags.Input.isMC:
550 from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
551 acc.merge(GEN_AOD2xAODCfg(flags))
552
553 from JetRecConfig.JetRecoSteering import addTruthPileupJetsToOutputCfg # TO DO: check if this is indeed necessary for pileup samples
554 acc.merge(addTruthPileupJetsToOutputCfg(flags))
555
556 if flags.Detector.EnableCalo:
557 from CaloRec.CaloRecoConfig import CaloRecoCfg
558 acc.merge(CaloRecoCfg(flags))
559
560 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
561 acc.merge(BeamSpotCondAlgCfg(flags))
562
563 from InDetConfig.SiliconPreProcessing import ITkRecPreProcessingSiliconCfg
564 acc.merge(ITkRecPreProcessingSiliconCfg(flags))
565
566 return acc
567
568

◆ FPGATrackSimEventSelectionSvcCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimEventSelectionSvcCfg ( flags,
name = "FPGATrackSimEventSelectionSvc" )

Definition at line 278 of file FPGATrackSimDataPrepConfig.py.

278def FPGATrackSimEventSelectionSvcCfg(flags,name="FPGATrackSimEventSelectionSvc"):
279
280 result=ComponentAccumulator()
281 eventSelector = CompFactory.FPGATrackSimEventSelectionSvc(nameWithRegionSuffix(flags,name))
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') # if set to True, it will essentially run for the whole detector
286 eventSelector.withPU = False
287 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
288
289
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
296
297 result.addService(eventSelector, create=True, primary=True)
298 return result
299

◆ FPGATrackSimEventSelectionToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimEventSelectionToolCfg ( flags,
name = "FPGATrackSimEventSelectionTool" )

Definition at line 300 of file FPGATrackSimDataPrepConfig.py.

300def FPGATrackSimEventSelectionToolCfg(flags,name="FPGATrackSimEventSelectionTool"):
301 result=ComponentAccumulator()
302 eventSelectionTool=CompFactory.FPGATrackSim.FPGATrackSimEventSelectionTool(nameWithRegionSuffix(flags,name))
303 eventSelectionTool.evtSelectionService = result.getPrimaryAndMerge(FPGATrackSimEventSelectionSvcCfg(flags))
304
305 result.addPublicTool(eventSelectionTool, primary=True)
306 return result
307

◆ FPGATrackSimHitFilteringToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimHitFilteringToolCfg ( flags)

Definition at line 348 of file FPGATrackSimDataPrepConfig.py.

348def FPGATrackSimHitFilteringToolCfg(flags):
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)
361 return result
362

◆ FPGATrackSimLorentzAngleToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimLorentzAngleToolCfg ( flags)

Definition at line 363 of file FPGATrackSimDataPrepConfig.py.

363def FPGATrackSimLorentzAngleToolCfg(flags):
364 result=ComponentAccumulator()
365 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
366 LorentzAngleTool.UseAthenaLorentzAngleTools=False
367 LorentzAngleTool.shiftGlobalPosition=True
368
369 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig import ITkPixelLorentzAngleToolCfg
370 LorentzAngleTool.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
371
372 from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
373 LorentzAngleTool.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
374
375 result.addPublicTool(LorentzAngleTool, primary=True)
376 return result
377

◆ FPGATrackSimMappingCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimMappingCfg ( flags,
name = "FPGATrackSimMappingSvc" )

Definition at line 308 of file FPGATrackSimDataPrepConfig.py.

308def FPGATrackSimMappingCfg(flags,name="FPGATrackSimMappingSvc"):
309 result=ComponentAccumulator()
310 mappingSvc = CompFactory.FPGATrackSimMappingSvc(nameWithRegionSuffix(flags,name))
311 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
312 mappingSvc.mappingType = "FILE"
313 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+"/"+getBaseName(flags)+".rmap" # we need more configurability here i.e. file choice should depend on some flag
314 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+"/"+getBaseName(flags)+".rmap" # At this point this is the same as the region map, so let's not have two files
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
322
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)
332 return result
333
334

◆ FPGATrackSimRawLogicCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimRawLogicCfg ( flags,
name = "FPGATrackSimRawLogicTool" )

Definition at line 137 of file FPGATrackSimDataPrepConfig.py.

137def FPGATrackSimRawLogicCfg(flags,name="FPGATrackSimRawLogicTool"):
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] # TODO TODO why is this hardcoded?
144 FPGATrackSimRawLogic.FPGATrackSimEventSelectionSvc = result.getPrimaryAndMerge(FPGATrackSimEventSelectionSvcCfg(flags))
145 FPGATrackSimRawLogic.FPGATrackSimMappingSvc = result.getPrimaryAndMerge(FPGATrackSimMappingCfg(flags))
146 result.addPublicTool(FPGATrackSimRawLogic,primary=True)
147 return result
148

◆ FPGATrackSimReadInput2Cfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimReadInput2Cfg ( flags)

Definition at line 342 of file FPGATrackSimDataPrepConfig.py.

342def FPGATrackSimReadInput2Cfg(flags):
343 result=ComponentAccumulator()
344 InputTool2 = CompFactory.FPGATrackSimReadRawRandomHitsTool(name="FPGATrackSimReadInput2", InFileName = flags.Trigger.FPGATrackSim.wrapperFileName2)
345 result.addPublicTool(InputTool2, primary=True)
346 return result
347

◆ FPGATrackSimReadInputCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimReadInputCfg ( flags)

Definition at line 335 of file FPGATrackSimDataPrepConfig.py.

335def FPGATrackSimReadInputCfg(flags):
336 result=ComponentAccumulator()
337 InputTool = CompFactory.FPGATrackSimInputHeaderTool(name="FPGATrackSimReadInput",
338 InFileName = flags.Trigger.FPGATrackSim.wrapperFileName)
339 result.addPublicTool(InputTool, primary=True)
340 return result
341

◆ FPGATrackSimRegionFlagCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimRegionFlagCfg ( flags)

Definition at line 448 of file FPGATrackSimDataPrepConfig.py.

448def FPGATrackSimRegionFlagCfg(flags):
449 if flags.Trigger.FPGATrackSim.regionList == "": # in case of empty list just use the region set to flags.Trigger.FPGATrackSim.region
450 flags.Trigger.FPGATrackSim.regionList = [flags.Trigger.FPGATrackSim.region]
451 else: # otherwise use the regionList (this overrides the region flag)
452 flags.Trigger.FPGATrackSim.regionList = convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList)
453 return flags
454

◆ FPGATrackSimSpacePointsToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimSpacePointsToolCfg ( flags)

Definition at line 149 of file FPGATrackSimDataPrepConfig.py.

149def FPGATrackSimSpacePointsToolCfg(flags):
150 result=ComponentAccumulator()
151 SpacePointTool = CompFactory.FPGATrackSimSpacePointsTool()
152 SpacePointTool.Filtering = flags.Trigger.FPGATrackSim.ActiveConfig.spacePointFiltering
153 SpacePointTool.FilteringClosePoints = False
154 SpacePointTool.PhiWindow = 0.004
155 SpacePointTool.Duplication = True
156 result.addPublicTool(SpacePointTool, primary=True)
157 return result
158
159

◆ getBaseName()

python.FPGATrackSimDataPrepConfig.getBaseName ( flags)

Definition at line 45 of file FPGATrackSimDataPrepConfig.py.

45def getBaseName(flags):
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'
65 else:
66 return 'default'
67 else:
68 if (flags.Trigger.FPGATrackSim.region >= 1280 or flags.Trigger.FPGATrackSim.region < 0): return 'default'
69 else:
70 return "region"+str(flags.Trigger.FPGATrackSim.region)
71

◆ getEtaRange()

python.FPGATrackSimDataPrepConfig.getEtaRange ( flags)

Definition at line 101 of file FPGATrackSimDataPrepConfig.py.

101def getEtaRange(flags):
102 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
103 if (not (flags.Trigger.FPGATrackSim.baseName == '')):
104 return [0.1,0.3]
105 elif (flags.Trigger.FPGATrackSim.region == 0):
106 return [0.1,0.3]
107 elif (flags.Trigger.FPGATrackSim.region == 1):
108 return [0.7,0.9]
109 elif (flags.Trigger.FPGATrackSim.region == 2):
110 return [1.2,1.4]
111 elif (flags.Trigger.FPGATrackSim.region == 3):
112 return [2.0,2.2]
113 elif (flags.Trigger.FPGATrackSim.region == 4):
114 return [3.2,3.4]
115 elif (flags.Trigger.FPGATrackSim.region == 5):
116 return [0.1,0.3]
117 elif (flags.Trigger.FPGATrackSim.region == 6):
118 return [0.1,0.3]
119 elif (flags.Trigger.FPGATrackSim.region == 7):
120 return [0.1,0.3]
121 else:
122 return [0.3,0.5]
123 else:
124 if (flags.Trigger.FPGATrackSim.region >= 1280 or flags.Trigger.FPGATrackSim.region < 0): return [0.2,0.4]
125 else:
126 binSize = 0.2
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]
131
132

◆ getEtaSideBits()

python.FPGATrackSimDataPrepConfig.getEtaSideBits ( flags)

Definition at line 133 of file FPGATrackSimDataPrepConfig.py.

133def getEtaSideBits(flags):
134 # this includes both the eta and side bits
135 return flags.Trigger.FPGATrackSim.region >> 5
136

◆ getPhiRange()

python.FPGATrackSimDataPrepConfig.getPhiRange ( flags)

Definition at line 72 of file FPGATrackSimDataPrepConfig.py.

72def getPhiRange(flags):
73 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
74 if (not (flags.Trigger.FPGATrackSim.baseName == '')):
75 return [0.3,0.5]
76 elif (flags.Trigger.FPGATrackSim.region == 0):
77 return [0.3,0.5]
78 elif (flags.Trigger.FPGATrackSim.region == 1):
79 return [0.3,0.5]
80 elif (flags.Trigger.FPGATrackSim.region == 2):
81 return [0.3,0.5]
82 elif (flags.Trigger.FPGATrackSim.region == 3):
83 return [0.3,0.5]
84 elif (flags.Trigger.FPGATrackSim.region == 4):
85 return [0.3,0.5]
86 elif (flags.Trigger.FPGATrackSim.region == 5):
87 return [1.1,1.3]
88 elif (flags.Trigger.FPGATrackSim.region == 6):
89 return [1.9,2.1]
90 elif (flags.Trigger.FPGATrackSim.region == 7):
91 return [3.4,3.6]
92 else:
93 return [0.3,0.5]
94 else:
95 binSize = pi/16
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]
98 else:
99 return [binSize*phiBin,binSize*(phiBin+1)]
100

◆ getRegionNumber()

python.FPGATrackSimDataPrepConfig.getRegionNumber ( nPiOver16Min,
minAbsEta,
isPositiveEta,
verbosePrint = True )

Definition at line 14 of file FPGATrackSimDataPrepConfig.py.

14def getRegionNumber(nPiOver16Min, minAbsEta, isPositiveEta, verbosePrint=True):
15 binSizePhi = pi/16
16 binSizeEta = 0.2
17 region = nPiOver16Min
18 if (nPiOver16Min >= 32 or nPiOver16Min < 0):
19 print("You are asking for nPiOver16 = ",nPiOver16Min," but we only have 32 phi bins! Returning -1")
20 return -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")
23 return -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")
26 return -1
27
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
34
35 region = region | ((isPositiveEta & 0x1) << 5)
36 region = region | (etanum << 6)
37 if (verbosePrint):
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)
41
42 return region
43
44
void print(char *figname, TCanvas *c1)

◆ nameWithRegionSuffix()

python.FPGATrackSimDataPrepConfig.nameWithRegionSuffix ( flags,
basename )

Definition at line 10 of file FPGATrackSimDataPrepConfig.py.

10def nameWithRegionSuffix(flags, basename):
11 return f"{basename}_reg{flags.Trigger.FPGATrackSim.region}"
12
13

◆ prepareFlagsForFPGATrackSimDataPrepAlg()

python.FPGATrackSimDataPrepConfig.prepareFlagsForFPGATrackSimDataPrepAlg ( flags)

Definition at line 160 of file FPGATrackSimDataPrepConfig.py.

160def prepareFlagsForFPGATrackSimDataPrepAlg(flags):
161 newFlags = flags.cloneAndReplace("Trigger.FPGATrackSim.ActiveConfig", "Trigger.FPGATrackSim." + flags.Trigger.FPGATrackSim.algoTag)
162 return newFlags
163
164

◆ runDataPrepChain()

python.FPGATrackSimDataPrepConfig.runDataPrepChain ( )

Definition at line 569 of file FPGATrackSimDataPrepConfig.py.

569def runDataPrepChain():
570 from AthenaConfiguration.AllConfigFlags import initConfigFlags
571 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
572
573 FinalDataPrepTrackChainxAODTracksKeyPrefix="FPGA"
574
575 flags = initConfigFlags()
576 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
577 OnlyTrackingPreInclude(flags)
578
579
580
581
582 from ActsConfig.ActsCIFlags import actsWorkflowFlags
583 actsWorkflowFlags(flags)
584
585
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 # Set to Truth to enable Event Store printouts
592 # flags.Exec.DebugStage="exec" # useful option to debug the execution of the job - we want it commented out for production
593 flags.fillFromArgs()
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]
598
599 flags.Tracking.writeExtendedSi_PRDInfo = not flags.Trigger.FPGATrackSim.writeOfflPRDInfo # Don't write ITkPixel/StripMeasurements if writeOfflPRDInfo = True
600 # In this case, ITkPixel/StripMeasurements_offl written based on F100 clustering
601
602 flags = FPGATrackSimRegionFlagCfg(flags)
603
604 flags.lock()
605 flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkActsPass", keepOriginal=True)
606
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'"]))
611
612
613 acc.merge(FPGATrackSimDataPrepSetup(flags))
614
615 # Use the imported configuration function for the data prep algorithm.
616 acc.merge(FPGATrackSimDataPrepAlgCfg(flags))
617
618 if flags.Trigger.FPGATrackSim.doEDMConversion:
619 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st', doActsTrk=False, doSP = False))
620
621 # convert Pixel Clusters to SPs
622 from ActsConfig.ActsSpacePointFormationConfig import ActsPixelSpacePointFormationAlgCfg
623 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,name="FPGAActsPixelSpacePointFormationAlg",
624 **{'PixelClusters':"xAODPixelClustersFromFPGACluster",
625 'PixelSpacePoints':"xAODPixelSpacePointsFromFPGA"}))
626
627 if flags.Trigger.FPGATrackSim.writeToAOD:
628 acc.merge(WriteToAOD(flags,
629 stage = '_1st',
630 finalTrackParticles=f"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
631
632 # Printout for various FPGA-related objects
633 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
634 acc.merge(FPGATrackSimReportingCfg(flags,stage="_1st",
635 perEventReports = (flags.Trigger.FPGATrackSim.sampleType != 'skipTruth'),
636 isDataPrep=True))
637
638 # cluster monitoring
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}))
645
646 acc.store(open('AnalysisConfig.pkl','wb'))
647
648 statusCode = acc.run(flags.Exec.MaxEvents)
649 assert statusCode.isSuccess() is True, "Application execution did not succeed"
650
651

◆ WriteToAOD()

python.FPGATrackSimDataPrepConfig.WriteToAOD ( flags,
stage = '',
finalTrackParticles = '' )

Definition at line 244 of file FPGATrackSimDataPrepConfig.py.

244def WriteToAOD(flags, stage = '',finalTrackParticles = ''): # store xAOD containers in AOD file
245 result = ComponentAccumulator()
246 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
247 from OutputStreamAthenaPool.OutputStreamConfig import outputStreamName
248 from AthenaConfiguration.Enums import MetadataCategory
249
250 result.merge( SetupMetaDataForStreamCfg( flags,"AOD",
251 createMetadata=[
252 MetadataCategory.ByteStreamMetaData,
253 MetadataCategory.LumiBlockMetaData,
254 MetadataCategory.TruthMetaData,
255 MetadataCategory.IOVMetaData,],)
256 )
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")
260
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"]
272
273 result.merge(addToAOD(flags, toAOD))
274
275 return result
276
277

Variable Documentation

◆ log

python.FPGATrackSimDataPrepConfig.log = AthenaLogger(__name__)

Definition at line 446 of file FPGATrackSimDataPrepConfig.py.