46def FPGA150Pipeline(flags, runStandalone=False):
47 kwargs = {}
48 kwargs.setdefault('FPGAThreads', flags.Concurrency.NumThreads)
49 acc = ComponentAccumulator()
50 from EFTrackingFPGAPipeline.F100IntegrationConfig import F100DataEncodingCfg, F100EDMConversionCfg, FPGAClusterSortingCfg
51 acc.merge(F100DataEncodingCfg(flags))
52
53 acc.merge(F150IntegrationAlgCfg(flags, "F150IntegrationAlg", **kwargs))
54
55 acc.merge(F100EDMConversionCfg(flags,
56 **{'xAODClusterMakerTool.PixelClusterContainerKey':
57 'FPGAPixelClusters' if flags.FPGADataPrep.DoClusterSorting
58 else'ITkPixelClusters',
59 'xAODClusterMakerTool.StripClusterContainerKey':
60 'FPGAStripClusters' if flags.FPGADataPrep.DoClusterSorting
61 else 'ITkStripClusters'}))
62 if(flags.FPGADataPrep.DoClusterSorting):
63 acc.merge(FPGAClusterSortingCfg(flags,
64 **{'sortedxAODPixelClusterContainer': 'SortedFPGAPixelClusters' if runStandalone
65 else 'ITkPixelClusters',
66 'sortedxAODStripClusterContainer': 'SortedFPGAStripClusters' if runStandalone
67 else 'ITkStripClusters'}))
68
69 acc.merge(F150EDMConversionCfg(flags,
70 **{'FPGASpacePointsKey' : 'ITkPixelSpacePoints'}))
71
72 if(not runStandalone):
73 if(not flags.FPGADataPrep.ForTiming):
74 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
75 acc.merge(FPGATrackSimReportingCfg(flags,
76 perEventReports = False,
77 **{'xAODPixelClusterContainers' : ['ITkPixelClusters'],
78 'xAODStripClusterContainers' : ['ITkStripClusters'],
79 'FPGAActsTracks' : [f'{flags.Tracking.ActiveConfig.extension}Tracks',f'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
80 'isDataPrep': True} ))
81
82 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelDetectorElementStatusAlgCfg
83 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
84
85 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import ITkStripDetectorElementStatusAlgCfg
86 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
87
88 if flags.Acts.EDM.PersistifyClusters or flags.Acts.EDM.PersistifySpacePoints:
89 toAOD = []
90
91 pixel_cluster_shortlist = ['-pixelClusterLink']
92 strip_cluster_shortlist = ['-sctClusterLink']
93
94 pixel_cluster_variables = '.'.join(pixel_cluster_shortlist)
95 strip_cluster_variables = '.'.join(strip_cluster_shortlist)
96
97 toAOD += ['xAOD::PixelClusterContainer#ITkPixelClusters',
98 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
99 'xAOD::StripClusterContainer#ITkStripClusters',
100 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
101 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
102 acc.merge(addToAOD(flags, toAOD))
103 return acc
104
105
106
107
108