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)
 FPGATrackSimDataPrepConnectToFastTracking (flagsIn, FinalTracks="F100-", **kwargs)
 FPGATrackSimRegionFlagCfg (flags)
 FPGATrackSimClusteringCfg (flags)
 FPGATrackSimDataPrepFlagCfg (flags)
 FixITkMainPassFlags (flags)
 FPGATrackSimDataPrepSetup (flags, runReco=True)
 runDataPrepChain ()

Variables

 log = AthenaLogger(__name__)

Function Documentation

◆ FixITkMainPassFlags()

python.FPGATrackSimDataPrepConfig.FixITkMainPassFlags ( flags)

Definition at line 642 of file FPGATrackSimDataPrepConfig.py.

642def FixITkMainPassFlags(flags):
643 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
644 flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
645 from ActsConfig.ActsCIFlags import actsLegacyWorkflowFlags
646 actsLegacyWorkflowFlags(flags)
647 flags.Acts.doRotCorrection = False
648 return flags
649
650

◆ FPGAActsTrkConverterCfg()

python.FPGATrackSimDataPrepConfig.FPGAActsTrkConverterCfg ( flags)

Definition at line 235 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGAClusterConverterCfg()

python.FPGATrackSimDataPrepConfig.FPGAClusterConverterCfg ( flags)

Definition at line 219 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGAConversionAlgCfg()

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

Definition at line 185 of file FPGATrackSimDataPrepConfig.py.

185def FPGAConversionAlgCfg(inputFlags, name = 'FPGAConversionAlg', stage = '', **kwargs):
186
187 flags = prepareFlagsForFPGATrackSimDataPrepAlg(inputFlags)
188
189 result=ComponentAccumulator()
190 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
191 result.merge(ITkStripReadoutGeometryCfg(flags))
192
193 kwargs.setdefault("FPGATrackSimClusterKey", "FPGAClusters_1st")
194 kwargs.setdefault("FPGATrackSimHitKey", "FPGAHits%s" %(stage))
195 kwargs.setdefault("FPGATrackSimHitInRoadsKey", "FPGAHitsInRoads")
196 kwargs.setdefault("FPGATrackSimRoadKey", "FPGARoads")
197 kwargs.setdefault("FPGATrackSimTrackKey", "FPGATracks")
198 kwargs.setdefault("xAODPixelClusterFromFPGAClusterKey", "xAODPixelClustersFromFPGACluster")
199 kwargs.setdefault("xAODStripClusterFromFPGAClusterKey", "xAODStripClustersFromFPGACluster")
200 kwargs.setdefault("xAODStripSpacePointFromFPGAKey", "xAODStripSpacePoints%sFromFPGA" %(stage))
201 kwargs.setdefault("xAODPixelSpacePointFromFPGAKey", "xAODPixelSpacePoints%sFromFPGA" %(stage))
202 kwargs.setdefault("xAODPixelClusterFromFPGAHitKey", "xAODPixelClusters%sFromFPGAHit" %(stage))
203 kwargs.setdefault("xAODStripClusterFromFPGAHitKey", "xAODStripClusters%sFromFPGAHit" %(stage))
204 kwargs.setdefault("ActsProtoTrackFromFPGARoadKey", "ActsProtoTracks%sFromFPGARoad" %(stage))
205 kwargs.setdefault("ActsProtoTrackFromFPGATrackKey", "ActsProtoTracks%sFromFPGATrack" %(stage))
206 kwargs.setdefault("doHits", False)
207 kwargs.setdefault("doClusters", True)
208 kwargs.setdefault("doActsTrk", False)
209 kwargs.setdefault("useRoads", False)
210 kwargs.setdefault("ClusterConverter", result.popToolsAndMerge(FPGAClusterConverterCfg(flags)))
211 kwargs.setdefault("ActsTrkConverter", result.popToolsAndMerge(FPGAActsTrkConverterCfg(flags)))
212
213 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
214 ConvertionAlgorithm.ClusterConverter.doLorentzShift=False # this should not be turned on unless needed for validation purposes
215
216 result.addEventAlgo(ConvertionAlgorithm)
217 return result
218

◆ FPGATrackSimClusteringCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimClusteringCfg ( flags)

Definition at line 562 of file FPGATrackSimDataPrepConfig.py.

562def FPGATrackSimClusteringCfg(flags): # to be used in the Reco_tf configuration
563 acc=ComponentAccumulator()
564 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
565 acc.merge(FPGATrackSimDataPrepAlgCfg(flags))
566 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st',**{
567 'FPGATrackSimSPKey': 'FPGAClusters_1st',
568 'xAODPixelClusterFromFPGAClusterKey': 'FPGAPixelClusters',
569 'xAODStripClusterFromFPGAClusterKey': 'FPGAStripClusters',
570 'xAODPixelSpacePointFromFPGAKey': 'ITkPixelSpacePoints',
571 'doActsTrk': False,
572 'useRoads': False,
573 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
574 }))
575 else:
576 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig import FPGATrackSimMergeOutputsAlgCfg
577 acc.merge(FPGATrackSimMergeOutputsAlgCfg(flags))
578 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st',**{
579 'FPGATrackSimHitKey': 'FPGAHits',
580 'xAODPixelClusterFromFPGAHitKey': 'FPGAPixelClusters',
581 'xAODStripClusterFromFPGAHitKey': 'FPGAStripClusters',
582 'xAODPixelSpacePointFromFPGAKey': 'ITkPixelSpacePoints',
583 'doActsTrk': True,
584 'useRoads': False,
585 'doClusters': False,
586 'doHits': True,
587 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
588 }))
589
590 from FPGAClusterSorting.FPGAClusterSortingConfig import FPGAClusterSortingAlgCfg
591 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**{'xAODPixelClusterContainer': 'FPGAPixelClusters',
592 'xAODStripClusterContainer': 'FPGAStripClusters',
593 'sortedxAODPixelClusterContainer': 'ITkPixelClusters',
594 'sortedxAODStripClusterContainer': 'ITkStripClusters'})
595
596 acc.merge(ClusterSorting)
597
598 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
599 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
600
601 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
602 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
603
604 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
605 toAOD = []
606
607 pixel_cluster_shortlist = ['-pixelClusterLink']
608 strip_cluster_shortlist = ['-sctClusterLink']
609
610 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
611 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
612
613 toAOD += ['xAOD::PixelClusterContainer#ITkPixelClusters',
614 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
615 'xAOD::StripClusterContainer#ITkStripClusters',
616 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
617 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
618 acc.merge(addToAOD(flags, toAOD))
619
620
621 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
622 acc.merge(FPGATrackSimReportingCfg(flags,
623 perEventReports = False, # set to True if per-event information is needed for debugging (e.g. cluster, tracks). Otherwise it produces a lot of output
624 **{'xAODPixelClusterContainers' : ['ITkPixelClusters'],
625 'xAODStripClusterContainers' : ['ITkStripClusters'],
626 'FPGAActsTracks' : [f'{flags.Tracking.ActiveConfig.extension}Tracks',f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
627 'isDataPrep': True} ))
628
629 return acc
630

◆ FPGATrackSimDataPrepAlgCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepAlgCfg ( inputFlags)

Definition at line 377 of file FPGATrackSimDataPrepConfig.py.

377def FPGATrackSimDataPrepAlgCfg(inputFlags):
378
379 flags = prepareFlagsForFPGATrackSimDataPrepAlg(inputFlags)
380
381 result=ComponentAccumulator()
382
383
384 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
385 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
386 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
387 writePreClusterBranch=flags.Trigger.FPGATrackSim.writeAdditionalOutputData and (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0)
388 theFPGATrackSimDataPrepAlg.writePreClusterBranch=writePreClusterBranch
389
390 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
391 theFPGATrackSimDataPrepAlg.doEvtSel= False if flags.Trigger.FPGATrackSim.pipeline.startswith('F-1') or flags.Trigger.FPGATrackSim.sampleType == 'skipTruth' else True
392 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
393 theFPGATrackSimDataPrepAlg.recordHits = not flags.Trigger.FPGATrackSim.pipeline.startswith('F-1')
394 theFPGATrackSimDataPrepAlg.writeRegion = flags.Trigger.FPGATrackSim.writeRegion
395
396
397 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
398 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
399 for region in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
400 flagsForEachRegion = inputFlags.clone()
401 flagsForEachRegion = flagsForEachRegion.cloneAndReplace("Trigger.FPGATrackSim.ActiveConfig", "Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=True)
402 flagsForEachRegion.Trigger.FPGATrackSim.region = region
403 flagsForEachRegion.lock()
404
405 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(FPGATrackSimRawLogicCfg(flagsForEachRegion)))
406 theFPGATrackSimDataPrepAlg.eventSelectors.append(result.getPrimaryAndMerge(FPGATrackSimEventSelectionToolCfg(flagsForEachRegion)))
407
408 if flags.Trigger.FPGATrackSim.wrapperFileName and flags.Trigger.FPGATrackSim.wrapperFileName is not None:
409 theFPGATrackSimDataPrepAlg.InputTool = result.getPrimaryAndMerge(FPGATrackSimReadInputCfg(flags))
410 if flags.Trigger.FPGATrackSim.wrapperFileName2 and flags.Trigger.FPGATrackSim.wrapperFileName2 is not None:
411 theFPGATrackSimDataPrepAlg.InputTool2 = result.getPrimaryAndMerge(FPGATrackSimReadInput2Cfg(flags))
412 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
413 theFPGATrackSimDataPrepAlg.SGInputTool = ""
414 else:
415 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
416 result.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags))
417 theFPGATrackSimDataPrepAlg.InputTool = ""
418 theFPGATrackSimDataPrepAlg.InputTool2 = ""
419 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig import FPGATrackSimSGInputToolCfg
420 theFPGATrackSimDataPrepAlg.SGInputTool = result.getPrimaryAndMerge(FPGATrackSimSGInputToolCfg(flags))
421 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=False
422 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=False
423
424 theFPGATrackSimDataPrepAlg.HitFilteringTool = result.getPrimaryAndMerge(FPGATrackSimHitFilteringToolCfg(flags))
425
426 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
427 if not flags.Trigger.FPGATrackSim.wrapperFileName:
428 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleTool = result.getPrimaryAndMerge(FPGATrackSimLorentzAngleToolCfg(flags))
429 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
430 else:
431 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1 # should be set to False by default in the tool class but just in case...
432
433
434
435 theFPGATrackSimDataPrepAlg.OutputTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepOutputCfg(flags))
436
437 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig import FPGATrackSimDataPrepMonitoringCfg
438 theFPGATrackSimDataPrepAlg.MonTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepMonitoringCfg(flags))
439
440 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
441
442 return result
443
444

◆ FPGATrackSimDataPrepConnectToFastTracking()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepConnectToFastTracking ( flagsIn,
FinalTracks = "F100-",
** kwargs )

Definition at line 447 of file FPGATrackSimDataPrepConfig.py.

447def FPGATrackSimDataPrepConnectToFastTracking(flagsIn,FinalTracks="F100-", **kwargs):
448
449 flags = flagsIn.clone()
450
451 # configure FastTracking based on C-100 flags
452 from ActsConfig.ActsCIFlags import actsWorkflowFlags
453 actsWorkflowFlags(flags)
454
455 flags.Tracking.ActiveConfig.extension=FinalTracks
456 flags.lock()
457
458 flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkMainPass") # TODO: Check if it's really necessary
459 prefix=flags.Tracking.ActiveConfig.extension # prefix for the name of final tracks (this is what IDTPM reads)
460
461 result = ComponentAccumulator()
462
463
464
465 from ActsConfig.ActsUtilities import extractChildKwargs
466
467
470 kwargs.setdefault('PixelSeedingAlg.InputSpacePoints',['ITkPixelSpacePoints'])
471 kwargs.setdefault('StripSeedingAlg.InputSpacePoints',['ITkStripSpacePoints']) # possibly will never be used but in case it's needed, the strip SP conversion should be enabled for this container to be available in F100 (off by default)
472
473 # -- Track Finding args --
474 kwargs.setdefault('TrackFindingAlg.UncalibratedMeasurementContainerKeys',['ITkPixelClusters','ITkStripClusters'])
475
476 # -- Truth Matching args --
477 kwargs.setdefault('PixelClusterToTruthAssociationAlg.Measurements','ITkPixelClusters')
478 kwargs.setdefault('StripClusterToTruthAssociationAlg.Measurements','ITkStripClusters')
479
480
482 from ActsConfig.ActsSeedingConfig import ActsSeedingCfg
483 result.merge(ActsSeedingCfg(flags, **kwargs))
484
485 # ACTS Track Finding
486 from ActsConfig.ActsTrackFindingConfig import ActsTrackFindingCfg,ActsAmbiguityResolutionCfg
487 result.merge(ActsTrackFindingCfg(flags,**extractChildKwargs(prefix='TrackFindingAlg.', **kwargs)))
488
489 # if ambiguity is enabled for FastTracking run here as well
490 if flags.Acts.doAmbiguityResolution:
491 result.merge(ActsAmbiguityResolutionCfg(flags,**extractChildKwargs(prefix='AmbiguityResolutionAlg.',**kwargs)))
492
493 # modify the tracks' name (not the final one) accordingly in case ambiguity resolution runs
494 acts_tracks=f"{prefix}Tracks" if not flags.Acts.doAmbiguityResolution else f"{prefix}ResolvedTracks"
495
496
498 if(flags.ITk.doTruth):
499 from ActsConfig.ActsTruthConfig import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
500 result.merge(ActsPixelClusterToTruthAssociationAlgCfg(flags,
501 name=f"{prefix}PixelClusterToTruthAssociationAlg",
502 InputTruthParticleLinks="xAODTruthLinks",
503 AssociationMapOut=f"{prefix}ITkPixelClustersToTruthParticles",
504 Measurements=kwargs.get('PixelClusterToTruthAssociationAlg.Measurements')))
505
506 result.merge(ActsStripClusterToTruthAssociationAlgCfg(flags,
507 name=f"{prefix}StripClusterToTruthAssociationAlg",
508 InputTruthParticleLinks="xAODTruthLinks",
509 AssociationMapOut=f"{prefix}ITkStripClustersToTruthParticles",
510 Measurements=kwargs.get('StripClusterToTruthAssociationAlg.Measurements')))
511
512 result.merge(ActsTruthParticleHitCountAlgCfg(flags,
513 name=f"{prefix}TruthParticleHitCountAlg",
514 PixelClustersToTruthAssociationMap=f"{prefix}ITkPixelClustersToTruthParticles",
515 StripClustersToTruthAssociationMap=f"{prefix}ITkStripClustersToTruthParticles",
516 TruthParticleHitCountsOut=f"{prefix}TruthParticleHitCounts"))
517
518 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
519 result.merge(ActsTrackToTruthAssociationAlgCfg(flags,
520 name=f"{prefix}TrackToTruthAssociationAlg",
521 PixelClustersToTruthAssociationMap=f"{prefix}ITkPixelClustersToTruthParticles",
522 StripClustersToTruthAssociationMap=f"{prefix}ITkStripClustersToTruthParticles",
523 ACTSTracksLocation=acts_tracks,
524 AssociationMapOut=f"{acts_tracks}ToTruthParticleAssociation"))
525
526 result.merge(ActsTrackFindingValidationAlgCfg(flags,
527 name=f"{prefix}TrackFindingValidationAlg",
528 TrackToTruthAssociationMap=f"{acts_tracks}ToTruthParticleAssociation",
529 TruthParticleHitCounts=f"{prefix}TruthParticleHitCounts"
530 ))
531
533 from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg
534 result.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, name=f"{prefix}TrackToTrackParticleCnvAlg",
535 ACTSTracksLocation=[acts_tracks],
536 TrackParticlesOutKey=f"{prefix}TrackParticles"))
537 if(flags.ITk.doTruth):
538 from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
539 result.merge(ActsTrackParticleTruthDecorationAlgCfg(flags, name=f"{prefix}TrackParticleTruthDecorationAlg",
540 TrackToTruthAssociationMaps=[f"{acts_tracks}ToTruthParticleAssociation"],
541 TrackParticleContainerName=f"{FinalTracks}TrackParticles",
542 TruthParticleHitCounts=f"{prefix}TruthParticleHitCounts",
543 ComputeTrackRecoEfficiency=True))
544
545
546 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
547 from InDetConfig.InDetPrepRawDataToxAODConfig import ITkActsPrepDataToxAODCfg
548 result.merge( ITkActsPrepDataToxAODCfg( flags,
549 PixelMeasurementContainer = "ITkPixelMeasurements_offl",
550 StripMeasurementContainer = "ITkStripMeasurements_offl" ) )
551
552 return result
553
if(febId1==febId2)

◆ FPGATrackSimDataPrepFlagCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepFlagCfg ( flags)

Definition at line 631 of file FPGATrackSimDataPrepConfig.py.

631def FPGATrackSimDataPrepFlagCfg(flags): # to be used in the Reco_tf configuration
632 flags.Scheduler.ShowDataDeps=True
633 flags.Scheduler.CheckDependencies=True
634
635 flags.Trigger.FPGATrackSim.readOfflineObjects=False
636 flags.Trigger.FPGATrackSim.doMultiTruth=False
637
638 flags = FPGATrackSimRegionFlagCfg(flags)
639
640 return flags
641

◆ FPGATrackSimDataPrepOutputCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimDataPrepOutputCfg ( flags)

Definition at line 163 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGATrackSimDataPrepSetup()

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

Definition at line 651 of file FPGATrackSimDataPrepConfig.py.

651def FPGATrackSimDataPrepSetup(flags,runReco=True):
652 acc = ComponentAccumulator()
653 if flags.Trigger.FPGATrackSim.wrapperFileName and flags.Trigger.FPGATrackSim.wrapperFileName is not None:
654 return acc
655
656 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
657 acc.merge(PoolReadCfg(flags))
658
659 if not runReco:
660 from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
661 acc.merge(EventInfoCnvAlgCfg(flags))
662 else:
663 if flags.Input.isMC:
664 from xAODTruthCnv.xAODTruthCnvConfig import GEN_AOD2xAODCfg
665 acc.merge(GEN_AOD2xAODCfg(flags))
666
667 from JetRecConfig.JetRecoSteering import addTruthPileupJetsToOutputCfg # TO DO: check if this is indeed necessary for pileup samples
668 acc.merge(addTruthPileupJetsToOutputCfg(flags))
669
670 if flags.Detector.EnableCalo:
671 from CaloRec.CaloRecoConfig import CaloRecoCfg
672 acc.merge(CaloRecoCfg(flags))
673
674 if not flags.Reco.EnableTrackOverlay:
675
676 from InDetConfig.TrackRecoConfig import InDetTrackRecoCfg
677 acc.merge(InDetTrackRecoCfg(flags))
678 from InDetConfig.InDetPrepRawDataFormationConfig import ITkXAODToInDetClusterConversionCfg
679 acc.merge(ITkXAODToInDetClusterConversionCfg(flags))
680 from InDetConfig.InDetPrepRawDataToxAODConfig import TruthParticleIndexDecoratorAlgCfg
681 acc.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
682
683 return acc
684
685

◆ FPGATrackSimEventSelectionSvcCfg()

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

Definition at line 277 of file FPGATrackSimDataPrepConfig.py.

277def FPGATrackSimEventSelectionSvcCfg(flags,name="FPGATrackSimEventSelectionSvc"):
278
279 result=ComponentAccumulator()
280 eventSelector = CompFactory.FPGATrackSimEventSelectionSvc(nameWithRegionSuffix(flags,name))
281 eventSelector.regions = flags.Trigger.FPGATrackSim.slicesFile
282 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
283 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
284 eventSelector.skipRegionCheck = flags.Trigger.FPGATrackSim.pipeline.startswith('F-1') # if set to True, it will essentially run for the whole detector
285 eventSelector.withPU = False
286 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
287
288
289 eventSelector.mind0 = flags.Trigger.FPGATrackSim.d0min
290 eventSelector.maxd0 = flags.Trigger.FPGATrackSim.d0max
291 eventSelector.minz0 = flags.Trigger.FPGATrackSim.z0min
292 eventSelector.maxz0 = flags.Trigger.FPGATrackSim.z0max
293 eventSelector.minqOverPt = flags.Trigger.FPGATrackSim.qOverPtmin
294 eventSelector.maxqOverPt = flags.Trigger.FPGATrackSim.qOverPtmax
295
296 result.addService(eventSelector, create=True, primary=True)
297 return result
298

◆ FPGATrackSimEventSelectionToolCfg()

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

Definition at line 299 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGATrackSimHitFilteringToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimHitFilteringToolCfg ( flags)

Definition at line 347 of file FPGATrackSimDataPrepConfig.py.

347def FPGATrackSimHitFilteringToolCfg(flags):
348 result=ComponentAccumulator()
349 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
350 HitFilteringTool.barrelStubDphiCut = 3.0
351 HitFilteringTool.doRandomRemoval = False
352 HitFilteringTool.doStubs = False
353 HitFilteringTool.endcapStubDphiCut = 1.5
354 HitFilteringTool.pixelClusRmFrac = 0
355 HitFilteringTool.pixelHitRmFrac = 0
356 HitFilteringTool.stripClusRmFrac = 0
357 HitFilteringTool.stripHitRmFrac = 0
358 HitFilteringTool.useNstrips = False
359 result.addPublicTool(HitFilteringTool, primary=True)
360 return result
361

◆ FPGATrackSimLorentzAngleToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimLorentzAngleToolCfg ( flags)

Definition at line 362 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGATrackSimMappingCfg()

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

Definition at line 307 of file FPGATrackSimDataPrepConfig.py.

307def FPGATrackSimMappingCfg(flags,name="FPGATrackSimMappingSvc"):
308 result=ComponentAccumulator()
309 mappingSvc = CompFactory.FPGATrackSimMappingSvc(nameWithRegionSuffix(flags,name))
310 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
311 mappingSvc.mappingType = "FILE"
312 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+"/"+getBaseName(flags)+".rmap" # we need more configurability here i.e. file choice should depend on some flag
313 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
314 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+"/"+getBaseName(flags)+".pmap"
315 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+"/moduleidmap"
316 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir + "/"+getBaseName(flags)+"_radii.txt"
317 mappingSvc.radiiFile2nd = flags.Trigger.FPGATrackSim.mapsDir + "/"+getBaseName(flags)+"_radii_2nd.txt"
318 mappingSvc.loadRadii = (not flags.Trigger.FPGATrackSim.ActiveConfig.GNN) and flags.Trigger.FPGATrackSim.loadRadii
319 mappingSvc.loadRegionMap = flags.Trigger.FPGATrackSim.loadRegionMap
320 mappingSvc.DoGNNTrack = flags.Trigger.FPGATrackSim.GNN.doGNNTracking
321
322 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
323 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
324 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
325 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
326 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
327 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
328 mappingSvc.GNNModuleMap = flags.Trigger.FPGATrackSim.GNN.moduleMapPath
329 mappingSvc.layerOverride = []
330 result.addService(mappingSvc, create=True, primary=True)
331 return result
332
333

◆ FPGATrackSimRawLogicCfg()

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

Definition at line 135 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGATrackSimReadInput2Cfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimReadInput2Cfg ( flags)

Definition at line 341 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGATrackSimReadInputCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimReadInputCfg ( flags)

Definition at line 334 of file FPGATrackSimDataPrepConfig.py.

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

◆ FPGATrackSimRegionFlagCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimRegionFlagCfg ( flags)

Definition at line 554 of file FPGATrackSimDataPrepConfig.py.

554def FPGATrackSimRegionFlagCfg(flags):
555 if flags.Trigger.FPGATrackSim.regionList == "": # in case of empty list just use the region set to flags.Trigger.FPGATrackSim.region
556 flags.Trigger.FPGATrackSim.regionList = [flags.Trigger.FPGATrackSim.region]
557 else: # otherwise use the regionList (this overrides the region flag)
558 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions import convertRegionsExpressionToArray
559 flags.Trigger.FPGATrackSim.regionList = convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList)
560 return flags
561

◆ FPGATrackSimSpacePointsToolCfg()

python.FPGATrackSimDataPrepConfig.FPGATrackSimSpacePointsToolCfg ( flags)

Definition at line 147 of file FPGATrackSimDataPrepConfig.py.

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

◆ getBaseName()

python.FPGATrackSimDataPrepConfig.getBaseName ( flags)

Definition at line 43 of file FPGATrackSimDataPrepConfig.py.

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

◆ getEtaRange()

python.FPGATrackSimDataPrepConfig.getEtaRange ( flags)

Definition at line 99 of file FPGATrackSimDataPrepConfig.py.

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

◆ getEtaSideBits()

python.FPGATrackSimDataPrepConfig.getEtaSideBits ( flags)

Definition at line 131 of file FPGATrackSimDataPrepConfig.py.

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

◆ getPhiRange()

python.FPGATrackSimDataPrepConfig.getPhiRange ( flags)

Definition at line 70 of file FPGATrackSimDataPrepConfig.py.

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

◆ getRegionNumber()

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

Definition at line 12 of file FPGATrackSimDataPrepConfig.py.

12def getRegionNumber(nPiOver16Min, minAbsEta, isPositiveEta, verbosePrint=True):
13 binSizePhi = pi/16
14 binSizeEta = 0.2
15 region = nPiOver16Min
16 if (nPiOver16Min >= 32 or nPiOver16Min < 0):
17 print("You are asking for nPiOver16 = ",nPiOver16Min," but we only have 32 phi bins! Returning -1")
18 return -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")
21 return -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")
24 return -1
25
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
32
33 region = region | ((isPositiveEta & 0x1) << 5)
34 region = region | (etanum << 6)
35 if (verbosePrint):
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)
39
40 return region
41
42
void print(char *figname, TCanvas *c1)

◆ nameWithRegionSuffix()

python.FPGATrackSimDataPrepConfig.nameWithRegionSuffix ( flags,
basename )

Definition at line 8 of file FPGATrackSimDataPrepConfig.py.

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

◆ prepareFlagsForFPGATrackSimDataPrepAlg()

python.FPGATrackSimDataPrepConfig.prepareFlagsForFPGATrackSimDataPrepAlg ( flags)

Definition at line 158 of file FPGATrackSimDataPrepConfig.py.

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

◆ runDataPrepChain()

python.FPGATrackSimDataPrepConfig.runDataPrepChain ( )

Definition at line 686 of file FPGATrackSimDataPrepConfig.py.

686def runDataPrepChain():
687 from AthenaConfiguration.AllConfigFlags import initConfigFlags
688 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
689
690 FinalDataPrepTrackChainxAODTracksKeyPrefix="FPGA"
691
692 flags = initConfigFlags()
693 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
694 OnlyTrackingPreInclude(flags)
695
696
698 flags = FixITkMainPassFlags(flags)
699
700
701 flags.Concurrency.NumThreads=1
702 flags.Concurrency.NumConcurrentEvents=1
703 flags.Concurrency.NumProcs=0
704 flags.Scheduler.ShowDataDeps=False
705 flags.Scheduler.CheckDependencies=True
706 flags.Debug.DumpEvtStore=False # Set to Truth to enable Event Store printouts
707 # flags.Exec.DebugStage="exec" # useful option to debug the execution of the job - we want it commented out for production
708 flags.fillFromArgs()
709 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
710 log.info("wrapperFile is string, converting to list")
711 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
712 flags.Input.Files = lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
713
714 flags.Tracking.writeExtendedSi_PRDInfo = not flags.Trigger.FPGATrackSim.writeOfflPRDInfo # Don't write ITkPixel/StripMeasurements if writeOfflPRDInfo = True
715 # In this case, ITkPixel/StripMeasurements_offl written based on F100 clustering
716
717 flags = FPGATrackSimRegionFlagCfg(flags)
718
719 flags.lock()
720 flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkMainPass", keepOriginal=True)
721
722 acc=MainServicesCfg(flags)
723 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
724 acc.addService(CompFactory.THistSvc(Output = [f"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
725 acc.addService(CompFactory.THistSvc(Output = ["FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
726
727
728 acc.merge(FPGATrackSimDataPrepSetup(flags))
729
730 # Use the imported configuration function for the data prep algorithm.
731 acc.merge(FPGATrackSimDataPrepAlgCfg(flags))
732
733 if flags.Trigger.FPGATrackSim.doEDMConversion:
734 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st', doActsTrk=False, doSP = False))
735
736 # convert Pixel Clusters to SPs
737 from ActsConfig.ActsSpacePointFormationConfig import ActsPixelSpacePointFormationAlgCfg
738 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,name="FPGAActsPixelSpacePointFormationAlg",
739 **{'PixelClusters':"xAODPixelClustersFromFPGACluster",
740 'PixelSpacePoints':"xAODPixelSpacePointsFromFPGA"}))
741
742 if flags.Trigger.FPGATrackSim.connectToToITkTracking:
743 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
744 # Run ACTS Fast Tracking on offline objects (starting from seeding)
745 acc.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks="ActsFast"))
746
747 # Run ACTS Fast Tracking for FPGA clusters (starting from seeding)
748 acc.merge(FPGATrackSimDataPrepConnectToFastTracking(flags, FinalTracks=FinalDataPrepTrackChainxAODTracksKeyPrefix,
749 **{'PixelSeedingAlg.InputSpacePoints' : ['xAODPixelSpacePointsFromFPGA'],
750 'StripSeedingAlg.InputSpacePoints' : [''],
751 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : ["xAODPixelClustersFromFPGACluster","xAODStripClustersFromFPGACluster"],
752 'PixelClusterToTruthAssociationAlg.Measurements' : 'xAODPixelClustersFromFPGACluster',
753 'StripClusterToTruthAssociationAlg.Measurements' : 'xAODStripClustersFromFPGACluster'}))
754
755
756 if flags.Trigger.FPGATrackSim.writeToAOD:
757 acc.merge(WriteToAOD(flags,
758 stage = '_1st',
759 finalTrackParticles=f"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
760
761 # Printout for various FPGA-related objects
762 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
763 acc.merge(FPGATrackSimReportingCfg(flags,stage="_1st",
764 perEventReports = (flags.Trigger.FPGATrackSim.sampleType != 'skipTruth'),
765 isDataPrep=True))
766
767 # cluster monitoring
768 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
769 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig import FPGAOutputValidationCfg
770 acc.merge(FPGAOutputValidationCfg(flags, **{'pixelKeys' : ["xAODPixelClustersFromFPGACluster","ITkPixelClusters"],
771 'stripKeys':["xAODStripClustersFromFPGACluster","ITkStripClusters"],
772 'doDiffHistograms':True,
773 'matchByID' : True}))
774
775 acc.store(open('AnalysisConfig.pkl','wb'))
776
777 statusCode = acc.run(flags.Exec.MaxEvents)
778 assert statusCode.isSuccess() is True, "Application execution did not succeed"
779
780

◆ WriteToAOD()

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

Definition at line 243 of file FPGATrackSimDataPrepConfig.py.

243def WriteToAOD(flags, stage = '',finalTrackParticles = ''): # store xAOD containers in AOD file
244 result = ComponentAccumulator()
245 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
246 from OutputStreamAthenaPool.OutputStreamConfig import outputStreamName
247 from AthenaConfiguration.Enums import MetadataCategory
248
249 result.merge( SetupMetaDataForStreamCfg( flags,"AOD",
250 createMetadata=[
251 MetadataCategory.ByteStreamMetaData,
252 MetadataCategory.LumiBlockMetaData,
253 MetadataCategory.TruthMetaData,
254 MetadataCategory.IOVMetaData,],)
255 )
256 log.info("AOD ItemList: %s", result.getEventAlgo(outputStreamName("AOD")).ItemList)
257 log.info("AOD MetadataItemList: %s", result.getEventAlgo(outputStreamName("AOD")).MetadataItemList)
258 log.info("---------- Configured AOD writing")
259
260 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
261 toAOD = [f"xAOD::TrackParticleContainer#{finalTrackParticles}",f"xAOD::TrackParticleAuxContainer#{finalTrackParticles}Aux."]
262 if flags.Trigger.FPGATrackSim.writeClustersToAOD:
263 toAOD += ["xAOD::PixelClusterContainer#xAODPixelClustersFromFPGACluster","xAOD::PixelClusterAuxContainer#xAODPixelClustersFromFPGAClusterAux.",
264 "xAOD::StripClusterContainer#xAODStripClustersFromFPGACluster","xAOD::StripClusterAuxContainer#xAODStripClustersFromFPGAClusterAux."]
265 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
266 toAOD += ['xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl','xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
267 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl','xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.']
268 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
269 toAOD += [f"xAOD::SpacePointContainer#xAODPixelSpacePoints{stage}FromFPGA",f"xAOD::SpacePointAuxContainer#xAODPixelSpacePoints{stage}FromFPGAAux.-measurements",
270 f"xAOD::SpacePointContainer#xAODStripSpacePoints{stage}FromFPGA",f"xAOD::SpacePointAuxContainer#xAODStripSpacePoints{stage}FromFPGAAux.-measurements.-sctSpacePointLink"]
271
272 result.merge(addToAOD(flags, toAOD))
273
274 return result
275
276

Variable Documentation

◆ log

python.FPGATrackSimDataPrepConfig.log = AthenaLogger(__name__)

Definition at line 445 of file FPGATrackSimDataPrepConfig.py.