453def FPGATrackSimClusteringCfg(flags):
454 acc=ComponentAccumulator()
455 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
456 acc.merge(FPGATrackSimDataPrepAlgCfg(flags))
457 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st',**{
458 'FPGATrackSimSPKey': 'FPGAClusters_1st',
459 'xAODPixelClusterFromFPGAClusterKey': 'FPGAPixelClusters',
460 'xAODStripClusterFromFPGAClusterKey': 'FPGAStripClusters',
461 'xAODPixelSpacePointFromFPGAKey': 'ITkPixelSpacePoints',
462 'doActsTrk': False,
463 'useRoads': False,
464 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
465 }))
466 else:
467 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig import FPGATrackSimMergeOutputsAlgCfg
468 acc.merge(FPGATrackSimMergeOutputsAlgCfg(flags))
469 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st',**{
470 'FPGATrackSimHitKey': 'FPGAHits',
471 'xAODPixelClusterFromFPGAHitKey': 'FPGAPixelClusters',
472 'xAODStripClusterFromFPGAHitKey': 'FPGAStripClusters',
473 'xAODPixelSpacePointFromFPGAKey': 'ITkPixelSpacePoints',
474 'doActsTrk': False,
475 'useRoads': False,
476 'doClusters': False,
477 'doHits': True,
478 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
479 }))
480
481 from FPGAClusterSorting.FPGAClusterSortingConfig import FPGAClusterSortingAlgCfg
482 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**{'xAODPixelClusterContainer': 'FPGAPixelClusters',
483 'xAODStripClusterContainer': 'FPGAStripClusters',
484 'sortedxAODPixelClusterContainer': 'ITkPixelClusters',
485 'sortedxAODStripClusterContainer': 'ITkStripClusters'})
486
487 acc.merge(ClusterSorting)
488
489 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
490 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
491
492 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
493 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
494
495 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
496 toAOD = []
497
498 pixel_cluster_shortlist = ['-pixelClusterLink']
499 strip_cluster_shortlist = ['-sctClusterLink']
500
501 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
502 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
503
504 toAOD += ['xAOD::PixelClusterContainer#ITkPixelClusters',
505 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
506 'xAOD::StripClusterContainer#ITkStripClusters',
507 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
508 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
509 acc.merge(addToAOD(flags, toAOD))
510
511
512 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
513 acc.merge(FPGATrackSimReportingCfg(flags,
514 perEventReports = False,
515 **{'xAODPixelClusterContainers' : ['ITkPixelClusters'],
516 'xAODStripClusterContainers' : ['ITkStripClusters'],
517 'FPGAActsTracks' : [f'{flags.Tracking.ActiveConfig.extension}Tracks',f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
518 'isDataPrep': True} ))
519
520 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData and flags.Tracking.ActiveConfig.extension in ["ActsValidateF100"]:
521 acc.addService(CompFactory.THistSvc(Output = [f"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
522 acc.addService(CompFactory.THistSvc(Output = ["FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
523 return acc
524