ATLAS Offline Software
Loading...
Searching...
No Matches
ActsDeviceClusterizationTest.py
Go to the documentation of this file.
1#!/usr/bin/env athena
2
3# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4#
5# Run script for the full GPU clusterization chain:
6# RDO -> traccc cells -> traccc measurements -> xAOD clusters
7
8from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
9from AthenaCommon.Constants import DEBUG
10
11from ActsGPUDataPreparation.ActsGPUDataPreparationConfig import DeviceClusterizationAlgCfg
12from ActsGPUEventCnv.ActsGPUEventCnvConfig import TracccMeasurementConverterAlgCfg
13from ActsGPUGeometry.ActsGPUGeometryConfig import DeviceDetectorDescriptionCondAlgCfg
14
15def GPUClusterizationCfg(flags) -> ComponentAccumulator:
16 acc = ComponentAccumulator()
17
18 # Service runs first — loads all device detector description data into detStore
19 acc.merge(DeviceDetectorDescriptionCondAlgCfg(flags))
20
21 if flags.Acts.EDM.PhaseII :
22 print("Running PhaseII RDO to TracccCell conversion")
23 from ActsConfig.ActsPhaseIIRawDataEdmConfig import (
24 PhaseIIPixelRawDataContainerCfg,
25 PhaseIIStripRawDataContainerCfg,
26 )
27 acc.merge(PhaseIIPixelRawDataContainerCfg(flags))
28 acc.merge(PhaseIIStripRawDataContainerCfg(flags))
29 from ActsGPUEventCnv.ActsGPUEventCnvConfig import PhaseIIRDOtoTracccCellConverterAlgCfg
30 acc.merge(PhaseIIRDOtoTracccCellConverterAlgCfg(flags,
31 TracccCells = "TracccCellCollection",
32 OutputLevel = DEBUG
33 ))
34 else:
35 from ActsGPUEventCnv.ActsGPUEventCnvConfig import RDOtoTracccCellConverterAlgCfg
36 acc.merge(RDOtoTracccCellConverterAlgCfg(flags,
37 TracccCells = "TracccCellCollection",
38 OutputLevel = DEBUG
39 ))
40
41 acc.merge(DeviceClusterizationAlgCfg(flags,
42 InputTracccCells="TracccCellCollection",
43 OutputTracccMeasurements="TracccMeasurementCollection",
44 OutputTracccClusters="TracccClusterCollection",
45 RetrieveClusterCells=flags.Tracking.doTruth,
46 OutputLevel = DEBUG,
47
48 ))
49
50 acc.merge(TracccMeasurementConverterAlgCfg(flags,
51 InputMeasurements="TracccMeasurementCollection",
52 InputClusters="TracccClusterCollection",
53 InputCells="TracccCellCollection",
54 ConvertClustersWithCells = flags.Tracking.doTruth,
55 OutputPixelClusters="ITkTracccPixelClusters",
56 OutputStripClusters="ITkTracccStripClusters",
57 OutputLevel = DEBUG
58 ))
59
60 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig import ITkPixelLorentzAngleToolCfg
61 from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
62 from AthenaConfiguration.ComponentFactory import CompFactory
63 acc.addEventAlgo(CompFactory.ActsTrk.ActsClusterComparisonAlg(
64 "GPU_ActsClusterComparisonAlg",
65 TracccCondKey="TracccHostCondConfig",
66 checkSpacepoints=False,
67 monitoredSpacepointsKey="ITkTracccPixelSpacepoints",
68 referenceSpacepointsKey="ITkPixelSpacePoints",
69 monitoredPixelClustersKey="ITkTracccPixelClusters",
70 referencePixelClustersKey="ITkPixelClusters",
71 monitoredStripClustersKey="ITkTracccStripClusters",
72 referenceStripClustersKey="ITkStripClusters",
73 PixelLorentzAngleTool = acc.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags)),
74 StripLorentzAngleTool = acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags)),
75 OutputLevel = DEBUG
76
77 ))
78
79 return acc
80
81if __name__ == "__main__":
82 from AthenaConfiguration.AllConfigFlags import initConfigFlags
83 from AthenaConfiguration.TestDefaults import defaultTestFiles
84
85 flags = initConfigFlags()
86
87 flags.Input.Files = defaultTestFiles.RDO_RUN4
88 flags.Exec.MaxEvents = 1
89
90 # Set the Main Pass
91 flags = flags.cloneAndReplace(
92 "Tracking.ActiveConfig",
93 "Tracking.ITkActsPass")
94
95 flags.Acts.TrackingGeometry.UseBlueprint = True
96 flags.Acts.TrackingGeometry.BuildDetrayGeometry = True
97
98 # Keep calo/muon out of the tracking geometry: the calo volumes cannot be
99 # converted to a consistent Detray geometry
100 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
101 OnlyTrackingPreInclude(flags)
102
103 flags.fillFromArgs()
104
105 flags.lock()
106
107 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
108 acc = MainServicesCfg(flags)
109 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
110 acc.merge(PoolReadCfg(flags))
111
112 # Needed for PixelID and SCT_ID
113 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
114 acc.merge(ITkPixelReadoutGeometryCfg(flags))
115 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
116 acc.merge(ITkStripReadoutGeometryCfg(flags))
117
118 # RoI creator
119 from ActsConfig.ActsRegionsOfInterestConfig import ActsMainRegionsOfInterestCreatorAlgCfg
120 acc.merge(ActsMainRegionsOfInterestCreatorAlgCfg(flags))
121
122 # Data Preparation - Clustering
123 from ActsConfig.ActsClusterizationConfig import ActsPixelClusterizationAlgCfg
124 acc.merge(ActsPixelClusterizationAlgCfg(flags,OutputLevel = DEBUG))
125
126 from ActsConfig.ActsClusterizationConfig import ActsStripClusterizationAlgCfg
127 acc.merge(ActsStripClusterizationAlgCfg(flags,OutputLevel = DEBUG))
128
129
130 acc.merge(GPUClusterizationCfg(flags))
131 acc.printConfig(withDetails=True, summariseProps=True)
132
133 statusCode = acc.run(flags.Exec.MaxEvents)
134 assert statusCode.isSuccess(), "Application execution did not succeed"
void print(char *figname, TCanvas *c1)
ComponentAccumulator GPUClusterizationCfg(flags)