Project
Loading...
Searching...
No Matches
GPUChainTrackingIO.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14
15#include "GPUChainTracking.h"
16#include "GPUReconstructionIO.h"
17#include "GPUTPCClusterData.h"
19#include "GPUTPCGMMergedTrack.h"
21#include "GPUTPCTrack.h"
22#include "GPUTPCHitId.h"
23#include "GPUTRDTrackletWord.h"
25#include "GPUTPCMCInfo.h"
26#include "GPUTRDTrack.h"
27#include "GPUTRDTracker.h"
28#include "AliHLTTPCRawCluster.h"
30#include "GPUQA.h"
31#include "GPULogging.h"
35#include "TPCZSLinkMapping.h"
36#include "GPUTriggerOutputs.h"
37#include "GPUConstantMem.h"
38
43#include "GPUHostDataTypes.h"
45#include "CalibdEdxContainer.h"
46
47#include "TPCFastTransform.h"
49
50using namespace o2::gpu;
51
52#include "GPUO2DataTypes.h"
53
54using namespace o2::tpc;
55using namespace o2::trd;
56using namespace o2::dataformats;
57
58static constexpr uint32_t DUMP_HEADER_SIZE = 4;
59static constexpr char DUMP_HEADER[DUMP_HEADER_SIZE + 1] = "CAv1";
60
65
67{
68 FILE* fp = fopen(filename, "w+b");
69 if (fp == nullptr) {
70 return;
71 }
72 fwrite(DUMP_HEADER, 1, DUMP_HEADER_SIZE, fp);
74 DumpData(fp, mIOPtrs.clusterData, mIOPtrs.nClusterData, InOutPointerType::CLUSTER_DATA);
75 DumpData(fp, mIOPtrs.rawClusters, mIOPtrs.nRawClusters, InOutPointerType::RAW_CLUSTERS);
77 if (DumpData(fp, &mIOPtrs.clustersNative->clustersLinear, &mIOPtrs.clustersNative->nClustersTotal, InOutPointerType::CLUSTERS_NATIVE)) {
81 std::pair<const char*, size_t> tmp = {buffer.data(), buffer.size()};
82 DumpData(fp, &tmp.first, &tmp.second, InOutPointerType::CLUSTER_NATIVE_MC);
83 }
84 }
85 }
88 const char* ptrs[NSECTORS];
89 size_t sizes[NSECTORS];
90 for (uint32_t i = 0; i < NSECTORS; i++) {
92 const auto& buffer = mIOPtrs.tpcPackedDigits->tpcDigitsMC->v[i]->getBuffer();
93 ptrs[i] = buffer.data();
94 sizes[i] = buffer.size();
95 } else {
96 ptrs[i] = nullptr;
97 sizes[i] = 0;
98 }
99 }
100 DumpData(fp, ptrs, sizes, InOutPointerType::TPC_DIGIT_MC);
101 }
102 }
103 if (mIOPtrs.tpcZS) {
104 size_t total = 0;
105 for (int32_t i = 0; i < NSECTORS; i++) {
106 for (uint32_t j = 0; j < GPUTrackingInOutZS::NENDPOINTS; j++) {
107 for (uint32_t k = 0; k < mIOPtrs.tpcZS->sector[i].count[j]; k++) {
108 total += mIOPtrs.tpcZS->sector[i].nZSPtr[j][k];
109 }
110 }
111 }
112 std::vector<std::array<char, TPCZSHDR::TPC_ZS_PAGE_SIZE>> pages(total);
113 char* ptr = pages[0].data();
115 total = 0;
116 for (int32_t i = 0; i < NSECTORS; i++) {
117 for (uint32_t j = 0; j < GPUTrackingInOutZS::NENDPOINTS; j++) {
118 for (uint32_t k = 0; k < mIOPtrs.tpcZS->sector[i].count[j]; k++) {
120 counts.count[i][j] += mIOPtrs.tpcZS->sector[i].nZSPtr[j][k];
121 total += mIOPtrs.tpcZS->sector[i].nZSPtr[j][k];
122 }
123 }
124 }
126 if (DumpData(fp, &ptr, &total, InOutPointerType::TPC_ZS)) {
127 fwrite(&counts, sizeof(counts), 1, fp);
128 }
129 }
132 throw std::runtime_error("Cannot dump non-flat compressed clusters");
133 }
134 char* ptr = (char*)mIOPtrs.tpcCompressedClusters;
136 DumpData(fp, &ptr, &size, InOutPointerType::TPC_COMPRESSED_CL);
137 }
138 if (mIOPtrs.settingsTF) {
139 uint32_t n = 1;
140 DumpData(fp, &mIOPtrs.settingsTF, &n, InOutPointerType::TF_SETTINGS);
141 }
142 DumpData(fp, mIOPtrs.sectorTracks, mIOPtrs.nSectorTracks, InOutPointerType::SECTOR_OUT_TRACK);
143 DumpData(fp, mIOPtrs.sectorClusters, mIOPtrs.nSectorClusters, InOutPointerType::SECTOR_OUT_CLUSTER);
144 DumpData(fp, &mIOPtrs.mcLabelsTPC, &mIOPtrs.nMCLabelsTPC, InOutPointerType::MC_LABEL_TPC);
145 DumpData(fp, &mIOPtrs.mcInfosTPC, &mIOPtrs.nMCInfosTPC, InOutPointerType::MC_INFO_TPC);
146 DumpData(fp, &mIOPtrs.mcInfosTPCCol, &mIOPtrs.nMCInfosTPCCol, InOutPointerType::MC_INFO_TPC);
147 DumpData(fp, &mIOPtrs.mergedTracks, &mIOPtrs.nMergedTracks, InOutPointerType::MERGED_TRACK);
148 DumpData(fp, &mIOPtrs.mergedTrackHits, &mIOPtrs.nMergedTrackHits, InOutPointerType::MERGED_TRACK_HIT);
149 DumpData(fp, &mIOPtrs.trdTracks, &mIOPtrs.nTRDTracks, InOutPointerType::TRD_TRACK);
150 DumpData(fp, &mIOPtrs.trdTracklets, &mIOPtrs.nTRDTracklets, InOutPointerType::TRD_TRACKLET);
152 DumpData(fp, &mIOPtrs.trdSpacePoints, &mIOPtrs.nTRDTracklets, InOutPointerType::TRD_SPACEPOINT);
153 }
154 DumpData(fp, &mIOPtrs.trdTriggerTimes, &mIOPtrs.nTRDTriggerRecords, InOutPointerType::TRD_TRIGGERRECORDS);
155 DumpData(fp, &mIOPtrs.trdTrackletIdxFirst, &mIOPtrs.nTRDTriggerRecords, InOutPointerType::TRD_TRIGGERRECORDS);
156 DumpData(fp, &mIOPtrs.trdTrigRecMask, &mIOPtrs.nTRDTriggerRecords, InOutPointerType::TRD_TRIGGERRECORDS);
157 fclose(fp);
158}
159
161{
163 FILE* fp = fopen(filename, "rb");
164 if (fp == nullptr) {
165 return (1);
166 }
167
168 char buf[DUMP_HEADER_SIZE + 1] = "";
169 size_t r = fread(buf, 1, DUMP_HEADER_SIZE, fp);
170 if (strncmp(DUMP_HEADER, buf, DUMP_HEADER_SIZE)) {
171 GPUError("Invalid file header");
172 fclose(fp);
173 return -1;
174 }
175 GeometryType geo;
176 r = fread(&geo, sizeof(geo), 1, fp);
178 GPUError("File has invalid geometry (%s v.s. %s)", GPUReconstruction::GEOMETRY_TYPE_NAMES[(int32_t)geo], GPUReconstruction::GEOMETRY_TYPE_NAMES[(int32_t)GPUReconstruction::geometryType]);
179 fclose(fp);
180 return 1;
181 }
182 GPUTPCClusterData* ptrClusterData[NSECTORS];
183 ReadData(fp, mIOPtrs.clusterData, mIOPtrs.nClusterData, mIOMem.clusterData, InOutPointerType::CLUSTER_DATA, ptrClusterData);
184 AliHLTTPCRawCluster* ptrRawClusters[NSECTORS];
185 ReadData(fp, mIOPtrs.rawClusters, mIOPtrs.nRawClusters, mIOMem.rawClusters, InOutPointerType::RAW_CLUSTERS, ptrRawClusters);
186 int32_t nClustersTotal = 0;
188 if (ReadData<ClusterNative>(fp, &mIOMem.clusterNativeAccess->clustersLinear, &mIOMem.clusterNativeAccess->nClustersTotal, &mIOMem.clustersNative, InOutPointerType::CLUSTERS_NATIVE)) {
189 r = fread(&mIOMem.clusterNativeAccess->nClusters[0][0], sizeof(mIOMem.clusterNativeAccess->nClusters[0][0]), NSECTORS * GPUCA_ROW_COUNT, fp);
190 mIOMem.clusterNativeAccess->setOffsetPtrs();
192 std::pair<const char*, size_t> tmp = {nullptr, 0};
193 if (ReadData(fp, &tmp.first, &tmp.second, &mIOMem.clusterNativeMC, InOutPointerType::CLUSTER_NATIVE_MC)) {
194 mIOMem.clusterNativeMCView = std::make_unique<ConstMCLabelContainerView>(gsl::span<const char>(tmp.first, tmp.first + tmp.second));
195 mIOMem.clusterNativeAccess->clustersMCTruth = mIOMem.clusterNativeMCView.get();
196 }
197 }
199 if (ReadData(fp, mIOMem.digitMap->tpcDigits, mIOMem.digitMap->nTPCDigits, mIOMem.tpcDigits, InOutPointerType::TPC_DIGIT)) {
201 const char* ptrs[NSECTORS];
202 size_t sizes[NSECTORS];
203 if (ReadData(fp, ptrs, sizes, mIOMem.tpcDigitsMC, InOutPointerType::TPC_DIGIT_MC)) {
204 mIOMem.tpcDigitMCMap = std::make_unique<GPUTPCDigitsMCInput>();
206 for (uint32_t i = 0; i < NSECTORS; i++) {
207 if (sizes[i]) {
208 mIOMem.tpcDigitMCView.get()[i] = gsl::span<const char>(ptrs[i], ptrs[i] + sizes[i]);
210 } else {
211 mIOMem.tpcDigitMCMap->v[i] = nullptr;
212 }
213 }
214 mIOMem.digitMap->tpcDigitsMC = mIOMem.tpcDigitMCMap.get();
215 }
216 }
217 const char* ptr;
218 size_t total;
219 char* ptrZSPages;
220 if (ReadData(fp, &ptr, &total, &mIOMem.tpcZSpagesChar, InOutPointerType::TPC_ZS, &ptrZSPages)) {
222 r = fread(&counts, sizeof(counts), 1, fp);
225 total = 0;
226 for (int32_t i = 0; i < NSECTORS; i++) {
227 for (uint32_t j = 0; j < GPUTrackingInOutZS::NENDPOINTS; j++) {
228 mIOMem.tpcZSmeta2->ptr[i][j] = &ptrZSPages[total * TPCZSHDR::TPC_ZS_PAGE_SIZE];
229 mIOMem.tpcZSmeta->sector[i].zsPtr[j] = &mIOMem.tpcZSmeta2->ptr[i][j];
230 mIOMem.tpcZSmeta2->n[i][j] = counts.count[i][j];
231 mIOMem.tpcZSmeta->sector[i].nZSPtr[j] = &mIOMem.tpcZSmeta2->n[i][j];
232 mIOMem.tpcZSmeta->sector[i].count[j] = 1;
233 total += counts.count[i][j];
234 }
235 }
237 }
238 if (ReadData(fp, &ptr, &total, &mIOMem.tpcCompressedClusters, InOutPointerType::TPC_COMPRESSED_CL)) {
240 }
241 uint32_t n;
242 ReadData(fp, &mIOPtrs.settingsTF, &n, &mIOMem.settingsTF, InOutPointerType::TF_SETTINGS);
243 ReadData(fp, mIOPtrs.sectorTracks, mIOPtrs.nSectorTracks, mIOMem.sectorTracks, InOutPointerType::SECTOR_OUT_TRACK);
244 ReadData(fp, mIOPtrs.sectorClusters, mIOPtrs.nSectorClusters, mIOMem.sectorClusters, InOutPointerType::SECTOR_OUT_CLUSTER);
245 ReadData(fp, &mIOPtrs.mcLabelsTPC, &mIOPtrs.nMCLabelsTPC, &mIOMem.mcLabelsTPC, InOutPointerType::MC_LABEL_TPC);
246 ReadData(fp, &mIOPtrs.mcInfosTPC, &mIOPtrs.nMCInfosTPC, &mIOMem.mcInfosTPC, InOutPointerType::MC_INFO_TPC);
247 ReadData(fp, &mIOPtrs.mcInfosTPCCol, &mIOPtrs.nMCInfosTPCCol, &mIOMem.mcInfosTPCCol, InOutPointerType::MC_INFO_TPC);
248 ReadData(fp, &mIOPtrs.mergedTracks, &mIOPtrs.nMergedTracks, &mIOMem.mergedTracks, InOutPointerType::MERGED_TRACK);
249 ReadData(fp, &mIOPtrs.mergedTrackHits, &mIOPtrs.nMergedTrackHits, &mIOMem.mergedTrackHits, InOutPointerType::MERGED_TRACK_HIT);
250 ReadData(fp, &mIOPtrs.trdTracks, &mIOPtrs.nTRDTracks, &mIOMem.trdTracks, InOutPointerType::TRD_TRACK);
251 ReadData(fp, &mIOPtrs.trdTracklets, &mIOPtrs.nTRDTracklets, &mIOMem.trdTracklets, InOutPointerType::TRD_TRACKLET);
252 uint32_t dummy = 0;
253 ReadData(fp, &mIOPtrs.trdSpacePoints, &dummy, &mIOMem.trdSpacePoints, InOutPointerType::TRD_SPACEPOINT);
254 ReadData(fp, &mIOPtrs.trdTriggerTimes, &mIOPtrs.nTRDTriggerRecords, &mIOMem.trdTriggerTimes, InOutPointerType::TRD_TRIGGERRECORDS);
255 ReadData(fp, &mIOPtrs.trdTrackletIdxFirst, &mIOPtrs.nTRDTriggerRecords, &mIOMem.trdTrackletIdxFirst, InOutPointerType::TRD_TRIGGERRECORDS);
256 ReadData(fp, &mIOPtrs.trdTrigRecMask, &mIOPtrs.nTRDTriggerRecords, &mIOMem.trdTrigRecMask, InOutPointerType::TRD_TRIGGERRECORDS);
257
258 size_t fptr = ftell(fp);
259 fseek(fp, 0, SEEK_END);
260 size_t fend = ftell(fp);
261 fclose(fp);
262 if (fptr != fend) {
263 GPUError("Error reading data file, reading incomplete");
264 return 1;
265 }
266 (void)r;
267 for (uint32_t i = 0; i < NSECTORS; i++) {
268 for (uint32_t j = 0; j < mIOPtrs.nClusterData[i]; j++) {
269 ptrClusterData[i][j].id = nClustersTotal++;
270 if ((uint32_t)ptrClusterData[i][j].amp >= 25 * 1024) {
271 GPUError("Invalid cluster charge, truncating (%d >= %d)", (int32_t)ptrClusterData[i][j].amp, 25 * 1024);
272 ptrClusterData[i][j].amp = 25 * 1024 - 1;
273 }
274 }
275 for (uint32_t j = 0; j < mIOPtrs.nRawClusters[i]; j++) {
276 if ((uint32_t)mIOMem.rawClusters[i][j].GetCharge() >= 25 * 1024) {
277 GPUError("Invalid raw cluster charge, truncating (%d >= %d)", (int32_t)ptrRawClusters[i][j].GetCharge(), 25 * 1024);
278 ptrRawClusters[i][j].SetCharge(25 * 1024 - 1);
279 }
280 if ((uint32_t)mIOPtrs.rawClusters[i][j].GetQMax() >= 1024) {
281 GPUError("Invalid raw cluster charge max, truncating (%d >= %d)", (int32_t)ptrRawClusters[i][j].GetQMax(), 1024);
282 ptrRawClusters[i][j].SetQMax(1024 - 1);
283 }
284 }
285 }
286
287 return (0);
288}
289
291{
292 std::string f;
293 if (processors()->calibObjects.fastTransform != nullptr) {
294 f = dir;
295 f += "tpctransform.dump";
296 DumpFlatObjectToFile(processors()->calibObjects.fastTransform, f.c_str());
297 }
298 if (processors()->calibObjects.fastTransformRef != nullptr) {
299 f = dir;
300 f += "tpctransformref.dump";
301 DumpFlatObjectToFile(processors()->calibObjects.fastTransformRef, f.c_str());
302 }
303 if (processors()->calibObjects.fastTransformMShape != nullptr) {
304 f = dir;
305 f += "tpctransformmshape.dump";
306 DumpFlatObjectToFile(processors()->calibObjects.fastTransformMShape, f.c_str());
307 }
308 if (processors()->calibObjects.fastTransformHelper != nullptr) {
309 f = dir;
310 f += "tpctransformhelper.dump";
311 DumpStructToFile(processors()->calibObjects.fastTransformHelper, f.c_str());
312 }
313 if (processors()->calibObjects.tpcPadGain != nullptr) {
314 f = dir;
315 f += "tpcpadgaincalib.dump";
316 DumpStructToFile(processors()->calibObjects.tpcPadGain, f.c_str());
317 }
318 if (processors()->calibObjects.tpcZSLinkMapping != nullptr) {
319 f = dir;
320 f += "tpczslinkmapping.dump";
321 DumpStructToFile(processors()->calibObjects.tpcZSLinkMapping, f.c_str());
322 }
323 if (processors()->calibObjects.dEdxCalibContainer != nullptr) {
324 f = dir;
325 f += "dEdxCalibContainer.dump";
326 DumpFlatObjectToFile(processors()->calibObjects.dEdxCalibContainer, f.c_str());
327 }
328 if (processors()->calibObjects.matLUT != nullptr) {
329 f = dir;
330 f += "matlut.dump";
331 DumpFlatObjectToFile(processors()->calibObjects.matLUT, f.c_str());
332 }
333 if (processors()->calibObjects.trdGeometry != nullptr) {
334 f = dir;
335 f += "trdgeometry.dump";
336 DumpStructToFile(processors()->calibObjects.trdGeometry, f.c_str());
337 }
338}
339
341{
342 std::string f;
343 f = dir;
344 f += "tpctransform.dump";
345 mTPCFastTransformU = ReadFlatObjectFromFile<TPCFastTransform>(f.c_str());
347 f = dir;
348 f += "tpctransformref.dump";
349 mTPCFastTransformRefU = ReadFlatObjectFromFile<TPCFastTransform>(f.c_str());
351 f = dir;
352 f += "tpctransformmshape.dump";
353 mTPCFastTransformMShapeU = ReadFlatObjectFromFile<TPCFastTransform>(f.c_str());
355 f = dir;
356 f += "tpctransformhelper.dump";
357 mTPCFastTransformHelperU = ReadStructFromFile<CorrectionMapsHelper>(f.c_str());
358 if ((processors()->calibObjects.fastTransformHelper = mTPCFastTransformHelperU.get())) {
361 mTPCFastTransformHelperU->setCorrMapMShape(mTPCFastTransformMShapeU.get());
362 }
363 f = dir;
364 f += "tpcpadgaincalib.dump";
365 mTPCPadGainCalibU = ReadStructFromFile<TPCPadGainCalib>(f.c_str());
367 f = dir;
368 f += "tpczslinkmapping.dump";
369 mTPCZSLinkMappingU = ReadStructFromFile<TPCZSLinkMapping>(f.c_str());
371 f = dir;
372 f += "dEdxCalibContainer.dump";
373 mdEdxCalibContainerU = ReadFlatObjectFromFile<o2::tpc::CalibdEdxContainer>(f.c_str());
375 f = dir;
376 f += "matlut.dump";
377 mMatLUTU = ReadFlatObjectFromFile<o2::base::MatLayerCylSet>(f.c_str());
379 f = dir;
380 f += "trdgeometry.dump";
381 mTRDGeometryU = ReadStructFromFile<o2::trd::GeometryFlat>(f.c_str());
383}
Definition of container class for dE/dx corrections.
Helper class to access correction maps.
Definition of the TPC Digit.
int32_t i
#define GPUCA_ROW_COUNT
Online TRD tracker based on extrapolated TPC tracks.
Used for storing the MC labels for the TRD tracklets.
TRD Tracklet word for GPU tracker - 32bit tracklet info + half chamber ID + index.
Definition of a container to keep Monte Carlo truth external to simulation objects.
uint32_t j
Definition RawData.h:0
Definition of TPCFastTransform class.
TBranch * ptr
Definitions of TPC Zero Suppression Data Headers.
const gsl::span< const char > & getBuffer() const
std::unique_ptr< o2::base::MatLayerCylSet > mMatLUTU
std::unique_ptr< TPCFastTransform > mTPCFastTransformMShapeU
void ReadSettings(const char *dir="") override
std::unique_ptr< CorrectionMapsHelper > mTPCFastTransformHelperU
std::unique_ptr< TPCFastTransform > mTPCFastTransformRefU
void DumpData(const char *filename)
std::unique_ptr< TPCPadGainCalib > mTPCPadGainCalibU
std::unique_ptr< o2::tpc::CalibdEdxContainer > mdEdxCalibContainerU
std::unique_ptr< o2::trd::GeometryFlat > mTRDGeometryU
std::unique_ptr< TPCZSLinkMapping > mTPCZSLinkMappingU
std::unique_ptr< TPCFastTransform > mTPCFastTransformU
GPUTrackingInOutPointers & mIOPtrs
struct o2::gpu::GPUChainTracking::InOutMemory mIOMem
int32_t ReadData(const char *filename)
void DumpSettings(const char *dir="") override
GPUConstantMem * processors()
Definition GPUChain.h:84
void DumpStructToFile(const T *obj, const char *file)
Definition GPUChain.h:164
static constexpr int32_t NSECTORS
Definition GPUChain.h:58
void DumpFlatObjectToFile(const T *obj, const char *file)
Definition GPUChain.h:154
static constexpr GeometryType geometryType
static constexpr const char *const GEOMETRY_TYPE_NAMES[]
GLdouble n
Definition glcorearb.h:1982
GLuint buffer
Definition glcorearb.h:655
GLsizeiptr size
Definition glcorearb.h:659
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
Definition glcorearb.h:2595
GLdouble f
Definition glcorearb.h:310
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
GLboolean r
Definition glcorearb.h:1233
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition glcorearb.h:2514
Definition of a container to keep/associate and arbitrary number of labels associated to an index wit...
Global TPC definitions and constants.
Definition SimTraits.h:167
std::string filename()
void SetQMax(uint16_t qmax)
void SetCharge(uint16_t charge)
S< o2::trd::GeometryFlat >::type * trdGeometry
S< o2::tpc::CalibdEdxContainer >::type * dEdxCalibContainer
S< TPCZSLinkMapping >::type * tpcZSLinkMapping
S< TPCFastTransform >::type * fastTransform
S< TPCPadGainCalib >::type * tpcPadGain
S< o2::base::MatLayerCylSet >::type * matLUT
S< TPCFastTransform >::type * fastTransformRef
S< TPCFastTransform >::type * fastTransformMShape
std::unique_ptr< o2::tpc::Digit[]> tpcDigits[NSECTORS]
std::unique_ptr< char[]> tpcCompressedClusters
std::unique_ptr< GPUTPCMCInfo[]> mcInfosTPC
std::unique_ptr< char[]> tpcDigitsMC[NSECTORS]
std::unique_ptr< GPUTRDTrackletWord[]> trdTracklets
std::unique_ptr< o2::dataformats::ConstMCTruthContainerView< o2::MCCompLabel >[]> tpcDigitMCView
std::unique_ptr< GPUTPCMCInfoCol[]> mcInfosTPCCol
std::unique_ptr< GPUTPCGMMergedTrackHit[]> mergedTrackHits
std::unique_ptr< int32_t[]> trdTrackletIdxFirst
std::unique_ptr< GPUTPCGMMergedTrack[]> mergedTracks
std::unique_ptr< AliHLTTPCClusterMCLabel[]> mcLabelsTPC
std::unique_ptr< o2::dataformats::ConstMCTruthContainerView< o2::MCCompLabel > > clusterNativeMCView
std::unique_ptr< GPUTrackingInOutDigits > digitMap
std::unique_ptr< GPUTPCClusterData[]> clusterData[NSECTORS]
std::unique_ptr< o2::tpc::ClusterNative[]> clustersNative
std::unique_ptr< GPUTPCDigitsMCInput > tpcDigitMCMap
InOutMemory & operator=(InOutMemory &&)
std::unique_ptr< float[]> trdTriggerTimes
std::unique_ptr< GPUTPCTrack[]> sectorTracks[NSECTORS]
std::unique_ptr< GPUTRDSpacePoint[]> trdSpacePoints
std::unique_ptr< GPUTrackingInOutZS > tpcZSmeta
std::unique_ptr< uint8_t[]> trdTrigRecMask
std::unique_ptr< o2::tpc::ClusterNativeAccess > clusterNativeAccess
std::unique_ptr< AliHLTTPCRawCluster[]> rawClusters[NSECTORS]
std::unique_ptr< GPUTPCHitId[]> sectorClusters[NSECTORS]
std::unique_ptr< GPUSettingsTF[]> settingsTF
std::unique_ptr< GPUTRDTrackGPU[]> trdTracks
std::unique_ptr< GPUTrackingInOutZS::GPUTrackingInOutZSMeta > tpcZSmeta2
GPUCalibObjectsConst calibObjects
std::array< const o2::dataformats::ConstMCTruthContainerView< o2::MCCompLabel > *, o2::tpc::constants::MAXSECTOR > v
const o2::tpc::Digit * tpcDigits[NSECTORS]
const GPUTPCDigitsMCInput * tpcDigitsMC
const GPUTPCHitId * sectorClusters[NSECTORS]
const o2::tpc::ClusterNativeAccess * clustersNative
const GPUTPCMCInfo * mcInfosTPC
const o2::tpc::CompressedClustersFlat * tpcCompressedClusters
const AliHLTTPCClusterMCLabel * mcLabelsTPC
const GPUTRDSpacePoint * trdSpacePoints
const GPUTPCTrack * sectorTracks[NSECTORS]
const GPUTRDTrackGPU * trdTracks
const GPUSettingsTF * settingsTF
const GPUTRDTrackletWord * trdTracklets
const GPUTrackingInOutZS * tpcZS
const AliHLTTPCRawCluster * rawClusters[NSECTORS]
const GPUTPCClusterData * clusterData[NSECTORS]
const GPUTPCGMMergedTrackHit * mergedTrackHits
const GPUTrackingInOutDigits * tpcPackedDigits
const GPUTPCMCInfoCol * mcInfosTPCCol
const GPUTPCGMMergedTrack * mergedTracks
GPUTrackingInOutZSSector sector[NSECTORS]
static constexpr uint32_t NENDPOINTS
unsigned int nClusters[constants::MAXSECTOR][constants::MAXGLOBALPADROW]
const o2::dataformats::ConstMCTruthContainerView< o2::MCCompLabel > * clustersMCTruth
const ClusterNative * clustersLinear
const CompressedClusters * ptrForward
static constexpr size_t TPC_ZS_PAGE_SIZE