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

Classes

class  DataLocation

Functions

 ITkActsDeviceTrackRecoCfg (flags, *, previousExtension=None)

Function Documentation

◆ ITkActsDeviceTrackRecoCfg()

python.ITkActsDeviceTrackRecoConfig.ITkActsDeviceTrackRecoCfg ( flags,
* ,
previousExtension = None )

Definition at line 11 of file ITkActsDeviceTrackRecoConfig.py.

11def ITkActsDeviceTrackRecoCfg(flags, *, previousExtension=None):
12 acc = ComponentAccumulator()
13
14 # Bring up shared device infrastructure once, upfront
15 print(f"Setting up GPU algorithms with {flags.Device.Backend.value} backend")
16
17 # Setup traccc detector description objects — loads all device detector description data into detStore
18 acc.merge(JSONDeviceDetectorDescriptionProviderSvcCfg(flags,
19 HostConditionsObjectName="TracccHostCondConfig",
20 HostDigitizationObjectName="TracccHostDigitizationConfig",
21 DeviceConditionsObjectName="TracccDeviceCondConfig",
22 DeviceDigitizationObjectName="TracccDeviceDigitizationConfig"
23 ))
24
25 # --- Clusterization ---
26 if flags.Acts.Device.doClusterization:
27
28 #TODO: remove this once MC is fixed
29 if not flags.Tracking.doPixelDigitalClustering:
30 raise ValueError("clusterization on device is not compatible "
31 "with analog clustering at the moment due to incorrent "
32 "ToT values for Pixel hits in the simulation data.")
33
34 # Create RoI for secondary passes (e.g. LargeD0) to reuse
35 from ActsConfig.ActsRegionsOfInterestConfig import ActsRegionsOfInterestCreatorAlgCfg
36 acc.merge(ActsRegionsOfInterestCreatorAlgCfg(flags,
37 name=f"{flags.Tracking.ActiveConfig.extension}RegionsOfInterestCreatorAlg"))
38
39 print("Performing clusterization on device")
40
41 # setup RDO converter
42 if flags.Acts.EDM.PhaseII :
43 from ActsConfig.ActsPhaseIIRawDataEdmConfig import (
44 PhaseIIPixelRawDataContainerCfg,
45 PhaseIIStripRawDataContainerCfg,
46 )
47 acc.merge(PhaseIIPixelRawDataContainerCfg(flags))
48 acc.merge(PhaseIIStripRawDataContainerCfg(flags))
49 from ActsGPUEventCnv.ActsGPUEventCnvConfig import PhaseIIRDOtoTracccCellConverterAlgCfg
50 acc.merge(PhaseIIRDOtoTracccCellConverterAlgCfg(flags,
51 TracccCells = "TracccCellCollection",
52 ))
53 else:
54 from ActsGPUEventCnv.ActsGPUEventCnvConfig import RDOtoTracccCellConverterAlgCfg
55 acc.merge(RDOtoTracccCellConverterAlgCfg(flags,
56 TracccCells = "TracccCellCollection",
57 ))
58
59 # setup traccc clusterization
60 from ActsGPUDataPreparation.ActsGPUDataPreparationConfig import DeviceClusterizationAlgCfg
61 acc.merge(DeviceClusterizationAlgCfg(flags,
62 InputTracccCells="TracccCellCollection",
63 OutputTracccMeasurements="TracccMeasurementCollection",
64 OutputTracccClusters="TracccClusterCollection",
65 RetrieveClusterCells=flags.Tracking.doTruth,
66 previousExtension=previousExtension))
67 clustersLocation = DataLocation.DEVICE
68
69 else:
70 from InDetConfig.ITkActsDataPreparationConfig import ITkActsDataPreparationCfg
71 acc.merge(ITkActsDataPreparationCfg(flags, previousExtension=previousExtension))
72 clustersLocation = DataLocation.HOST
73
74 # --- Seeding ---
75 if flags.Acts.Device.doSeeding:
76
77 raise ValueError("Unsupported: no device seeding yet!")
78
79 else:
80
81 # If clusterization was on device, need to copy them to host first
82 # and schedule space point formation
83 if clustersLocation is DataLocation.DEVICE:
84 from ActsGPUEventCnv.ActsGPUEventCnvConfig import TracccMeasurementConverterAlgCfg
85 acc.merge(TracccMeasurementConverterAlgCfg(flags,
86 InputMeasurements="TracccMeasurementCollection",
87 InputClusters="TracccClusterCollection",
88 InputCells="TracccCellCollection",
89 ConvertClustersWithCells = flags.Tracking.doTruth,
90 OutputPixelClusters="ITkPixelClusters",
91 OutputStripClusters="ITkStripClusters"
92 ))
93 clustersLocation = DataLocation.HOST
94
95 from ActsConfig.ActsSpacePointFormationConfig import ActsSpacePointFormationCfg
96 acc.merge(ActsSpacePointFormationCfg(flags, previousActsExtension=previousExtension))
97
98 from ActsConfig.ActsSeedingConfig import ActsSeedingCfg
99 acc.merge(ActsSeedingCfg(flags))
100 seedsLocation = DataLocation.HOST
101
102
103 # --- Track Reconstruction ---
104 if flags.Acts.Device.doTrackReconstruction:
105
106 raise ValueError("Unsupported operation, we do not have this step on device yet")
107
108 else:
109
110 # If clusterization was on device, need to copy the measurements to host first
111 if clustersLocation is DataLocation.DEVICE:
112 from ActsGPUEventCnv.ActsGPUEventCnvConfig import TracccMeasurementConverterAlgCfg
113 acc.merge(TracccMeasurementConverterAlgCfg(flags,
114 InputMeasurements="TracccMeasurementCollection",
115 InputClusters="TracccClusterCollection",
116 InputTracccCells="TracccCellCollection",
117 ConvertClustersWithCells = flags.Tracking.doTruth,
118 OutputPixelClusters="ITkPixelClusters",
119 OutputStripClusters="ITkStripClusters"
120 ))
121
122 if seedsLocation is DataLocation.DEVICE:
123 raise ValueError("Unsupported operation, we do not have this conversion yet")
124
125 # CKF
126 from ActsConfig.ActsTrackFindingConfig import ActsTrackFindingCfg
127 acc.merge(ActsTrackFindingCfg(flags))
128
129 # Ambiguity Resolution
130 if flags.Acts.doAmbiguityResolution:
131 from ActsConfig.ActsTrackFindingConfig import ActsAmbiguityResolutionCfg
132 acc.merge(ActsAmbiguityResolutionCfg(flags))
133
134
135 # PRD association
136 from ActsConfig.ActsPrdAssociationConfig import ActsPrdAssociationAlgCfg
137 acc.merge(ActsPrdAssociationAlgCfg(flags,
138 name = f'{flags.Tracking.ActiveConfig.extension}PrdAssociationAlg',
139 previousActsExtension = previousExtension))
140
141 # Truth
142 if flags.Tracking.doTruth:
143
144 # schedule association of measurements to truth particles
145 from ActsConfig.ActsTruthConfig import ActsTruthAssociationAlgCfg, ActsTruthParticleHitCountAlgCfg
146 acc.merge(ActsTruthAssociationAlgCfg(flags))
147 acc.merge(ActsTruthParticleHitCountAlgCfg(flags))
148 if flags.Acts.doTruthInspection:
149 from ActsConfig.ActsInspectTruthContentConfig import ActsInspectTruthContentAlgCfg
150 acc.merge(ActsInspectTruthContentAlgCfg(flags))
151
152 # Run truth on CKF tracks
153 # This is only necessary if we are asking for these tracks to be persistified with the
154 # - flag: Tracking.ActiveConfig.storeSiSPSeededTracks set to True OR
155 # - flag: flags.Acts.doAmbiguityResolution set to False
156 if flags.Tracking.ActiveConfig.storeSiSPSeededTracks or not flags.Acts.doAmbiguityResolution:
157 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
158 acts_tracks = f"{flags.Tracking.ActiveConfig.extension}Tracks"
159 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
160 name = f"{acts_tracks}TrackToTruthAssociationAlg",
161 ACTSTracksLocation = acts_tracks,
162 AssociationMapOut = f"{acts_tracks}ToTruthParticleAssociation"))
163
164 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
165 name = f"{acts_tracks}TrackFindingValidationAlg",
166 TrackToTruthAssociationMap = f"{acts_tracks}ToTruthParticleAssociation"))
167
168 # Run truth on the tracks from ambiguity resolution. This is only necessary if
169 # - flag: flags.Acts.doAmbiguityResolution set to True
170 if flags.Acts.doAmbiguityResolution:
171 acts_tracks = f"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
172 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
173 acc.merge(ActsTrackToTruthAssociationAlgCfg(flags,
174 name = f"{acts_tracks}TrackToTruthAssociationAlg",
175 ACTSTracksLocation = acts_tracks,
176 AssociationMapOut = f"{acts_tracks}ToTruthParticleAssociation"))
177
178 acc.merge(ActsTrackFindingValidationAlgCfg(flags,
179 name = f"{acts_tracks}TrackFindingValidationAlg",
180 TrackToTruthAssociationMap = f"{acts_tracks}ToTruthParticleAssociation"))
181
182 return acc
void print(char *figname, TCanvas *c1)