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"
18#include "GPUTPCGMMergedTrack.h"
20#include "GPUTPCTrack.h"
21#include "GPUTPCHitId.h"
22#include "GPUTRDTrackletWord.h"
23#include "GPUTRDRecoParam.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 if (ioPtrs == nullptr) {
73 ioPtrs = &mIOPtrs;
74 }
75 fwrite(DUMP_HEADER, 1, DUMP_HEADER_SIZE, fp);
77 DumpData(fp, ioPtrs->clusterData, ioPtrs->nClusterData, InOutPointerType::CLUSTER_DATA);
78 DumpData(fp, ioPtrs->rawClusters, ioPtrs->nRawClusters, InOutPointerType::RAW_CLUSTERS);
79 if (ioPtrs->clustersNative) {
80 if (DumpData(fp, &ioPtrs->clustersNative->clustersLinear, &ioPtrs->clustersNative->nClustersTotal, InOutPointerType::CLUSTERS_NATIVE)) {
81 fwrite(&ioPtrs->clustersNative->nClusters[0][0], sizeof(ioPtrs->clustersNative->nClusters[0][0]), NSECTORS * GPUCA_ROW_COUNT, fp);
82 if (ioPtrs->clustersNative->clustersMCTruth) {
83 const auto& buffer = ioPtrs->clustersNative->clustersMCTruth->getBuffer();
84 std::pair<const char*, size_t> tmp = {buffer.data(), buffer.size()};
85 DumpData(fp, &tmp.first, &tmp.second, InOutPointerType::CLUSTER_NATIVE_MC);
86 }
87 }
88 }
89 if (ioPtrs->tpcPackedDigits) {
90 if (DumpData(fp, ioPtrs->tpcPackedDigits->tpcDigits, ioPtrs->tpcPackedDigits->nTPCDigits, InOutPointerType::TPC_DIGIT) && ioPtrs->tpcPackedDigits->tpcDigitsMC) {
91 const char* ptrs[NSECTORS];
92 size_t sizes[NSECTORS];
93 for (uint32_t i = 0; i < NSECTORS; i++) {
94 if (ioPtrs->tpcPackedDigits->tpcDigitsMC->v[i]) {
95 const auto& buffer = ioPtrs->tpcPackedDigits->tpcDigitsMC->v[i]->getBuffer();
96 ptrs[i] = buffer.data();
97 sizes[i] = buffer.size();
98 } else {
99 ptrs[i] = nullptr;
100 sizes[i] = 0;
101 }
102 }
103 DumpData(fp, ptrs, sizes, InOutPointerType::TPC_DIGIT_MC);
104 }
105 }
106 if (ioPtrs->tpcZS) {
107 size_t total = 0;
108 for (int32_t i = 0; i < NSECTORS; i++) {
109 for (uint32_t j = 0; j < GPUTrackingInOutZS::NENDPOINTS; j++) {
110 for (uint32_t k = 0; k < ioPtrs->tpcZS->sector[i].count[j]; k++) {
111 total += ioPtrs->tpcZS->sector[i].nZSPtr[j][k];
112 }
113 }
114 }
115 std::vector<std::array<char, TPCZSHDR::TPC_ZS_PAGE_SIZE>> pages(total);
116 char* ptr = pages[0].data();
118 total = 0;
119 for (int32_t i = 0; i < NSECTORS; i++) {
120 for (uint32_t j = 0; j < GPUTrackingInOutZS::NENDPOINTS; j++) {
121 for (uint32_t k = 0; k < ioPtrs->tpcZS->sector[i].count[j]; k++) {
122 memcpy(&ptr[total * TPCZSHDR::TPC_ZS_PAGE_SIZE], ioPtrs->tpcZS->sector[i].zsPtr[j][k], ioPtrs->tpcZS->sector[i].nZSPtr[j][k] * TPCZSHDR::TPC_ZS_PAGE_SIZE);
123 counts.count[i][j] += ioPtrs->tpcZS->sector[i].nZSPtr[j][k];
124 total += ioPtrs->tpcZS->sector[i].nZSPtr[j][k];
125 }
126 }
127 }
129 if (DumpData(fp, &ptr, &total, InOutPointerType::TPC_ZS)) {
130 fwrite(&counts, sizeof(counts), 1, fp);
131 }
132 }
133 if (ioPtrs->tpcCompressedClusters) {
134 if (ioPtrs->tpcCompressedClusters->ptrForward) {
135 throw std::runtime_error("Cannot dump non-flat compressed clusters");
136 }
137 char* ptr = (char*)ioPtrs->tpcCompressedClusters;
138 size_t size = ioPtrs->tpcCompressedClusters->totalDataSize;
139 DumpData(fp, &ptr, &size, InOutPointerType::TPC_COMPRESSED_CL);
140 }
141 if (ioPtrs->settingsTF) {
142 uint32_t n = 1;
143 DumpData(fp, &ioPtrs->settingsTF, &n, InOutPointerType::TF_SETTINGS);
144 }
145 DumpData(fp, ioPtrs->sectorTracks, ioPtrs->nSectorTracks, InOutPointerType::SECTOR_OUT_TRACK);
146 DumpData(fp, ioPtrs->sectorClusters, ioPtrs->nSectorClusters, InOutPointerType::SECTOR_OUT_CLUSTER);
147 DumpData(fp, &ioPtrs->mcLabelsTPC, &ioPtrs->nMCLabelsTPC, InOutPointerType::MC_LABEL_TPC);
148 DumpData(fp, &ioPtrs->mcInfosTPC, &ioPtrs->nMCInfosTPC, InOutPointerType::MC_INFO_TPC);
149 DumpData(fp, &ioPtrs->mcInfosTPCCol, &ioPtrs->nMCInfosTPCCol, InOutPointerType::MC_INFO_TPC);
150 DumpData(fp, &ioPtrs->mergedTracks, &ioPtrs->nMergedTracks, InOutPointerType::MERGED_TRACK);
151 DumpData(fp, &ioPtrs->mergedTrackHits, &ioPtrs->nMergedTrackHits, InOutPointerType::MERGED_TRACK_HIT);
152 DumpData(fp, &ioPtrs->trdTracks, &ioPtrs->nTRDTracks, InOutPointerType::TRD_TRACK);
153 DumpData(fp, &ioPtrs->trdTracklets, &ioPtrs->nTRDTracklets, InOutPointerType::TRD_TRACKLET);
154 if (ioPtrs->trdSpacePoints) {
155 DumpData(fp, &ioPtrs->trdSpacePoints, &ioPtrs->nTRDTracklets, InOutPointerType::TRD_SPACEPOINT);
156 }
157 DumpData(fp, &ioPtrs->trdTriggerTimes, &ioPtrs->nTRDTriggerRecords, InOutPointerType::TRD_TRIGGERRECORDS);
158 DumpData(fp, &ioPtrs->trdTrackletIdxFirst, &ioPtrs->nTRDTriggerRecords, InOutPointerType::TRD_TRIGGERRECORDS);
159 DumpData(fp, &ioPtrs->trdTrigRecMask, &ioPtrs->nTRDTriggerRecords, InOutPointerType::TRD_TRIGGERRECORDS);
160 fclose(fp);
161}
162
164{
166 FILE* fp = fopen(filename, "rb");
167 if (fp == nullptr) {
168 return (1);
169 }
170
171 char buf[DUMP_HEADER_SIZE + 1] = "";
172 size_t r = fread(buf, 1, DUMP_HEADER_SIZE, fp);
173 if (strncmp(DUMP_HEADER, buf, DUMP_HEADER_SIZE)) {
174 GPUError("Invalid file header");
175 fclose(fp);
176 return -1;
177 }
178 GeometryType geo;
179 r = fread(&geo, sizeof(geo), 1, fp);
181 GPUError("File has invalid geometry (%s v.s. %s)", GPUReconstruction::GEOMETRY_TYPE_NAMES[(int32_t)geo], GPUReconstruction::GEOMETRY_TYPE_NAMES[(int32_t)GPUReconstruction::geometryType]);
182 fclose(fp);
183 return 1;
184 }
185 GPUTPCClusterData* ptrClusterData[NSECTORS];
186 ReadData(fp, mIOPtrs.clusterData, mIOPtrs.nClusterData, mIOMem.clusterData, InOutPointerType::CLUSTER_DATA, ptrClusterData);
187 AliHLTTPCRawCluster* ptrRawClusters[NSECTORS];
188 ReadData(fp, mIOPtrs.rawClusters, mIOPtrs.nRawClusters, mIOMem.rawClusters, InOutPointerType::RAW_CLUSTERS, ptrRawClusters);
189 int32_t nClustersTotal = 0;
191 if (ReadData<ClusterNative>(fp, &mIOMem.clusterNativeAccess->clustersLinear, &mIOMem.clusterNativeAccess->nClustersTotal, &mIOMem.clustersNative, InOutPointerType::CLUSTERS_NATIVE)) {
192 r = fread(&mIOMem.clusterNativeAccess->nClusters[0][0], sizeof(mIOMem.clusterNativeAccess->nClusters[0][0]), NSECTORS * GPUCA_ROW_COUNT, fp);
193 mIOMem.clusterNativeAccess->setOffsetPtrs();
195 std::pair<const char*, size_t> tmp = {nullptr, 0};
196 if (ReadData(fp, &tmp.first, &tmp.second, &mIOMem.clusterNativeMC, InOutPointerType::CLUSTER_NATIVE_MC)) {
197 mIOMem.clusterNativeMCView = std::make_unique<ConstMCLabelContainerView>(gsl::span<const char>(tmp.first, tmp.first + tmp.second));
198 mIOMem.clusterNativeAccess->clustersMCTruth = mIOMem.clusterNativeMCView.get();
199 }
200 }
202 if (ReadData(fp, mIOMem.digitMap->tpcDigits, mIOMem.digitMap->nTPCDigits, mIOMem.tpcDigits, InOutPointerType::TPC_DIGIT)) {
204 const char* ptrs[NSECTORS];
205 size_t sizes[NSECTORS];
206 if (ReadData(fp, ptrs, sizes, mIOMem.tpcDigitsMC, InOutPointerType::TPC_DIGIT_MC)) {
207 mIOMem.tpcDigitMCMap = std::make_unique<GPUTPCDigitsMCInput>();
209 for (uint32_t i = 0; i < NSECTORS; i++) {
210 if (sizes[i]) {
211 mIOMem.tpcDigitMCView.get()[i] = gsl::span<const char>(ptrs[i], ptrs[i] + sizes[i]);
213 } else {
214 mIOMem.tpcDigitMCMap->v[i] = nullptr;
215 }
216 }
217 mIOMem.digitMap->tpcDigitsMC = mIOMem.tpcDigitMCMap.get();
218 }
219 }
220 const char* ptr;
221 size_t total;
222 char* ptrZSPages;
223 if (ReadData(fp, &ptr, &total, &mIOMem.tpcZSpagesChar, InOutPointerType::TPC_ZS, &ptrZSPages)) {
225 r = fread(&counts, sizeof(counts), 1, fp);
228 total = 0;
229 for (int32_t i = 0; i < NSECTORS; i++) {
230 for (uint32_t j = 0; j < GPUTrackingInOutZS::NENDPOINTS; j++) {
231 mIOMem.tpcZSmeta2->ptr[i][j] = &ptrZSPages[total * TPCZSHDR::TPC_ZS_PAGE_SIZE];
232 mIOMem.tpcZSmeta->sector[i].zsPtr[j] = &mIOMem.tpcZSmeta2->ptr[i][j];
233 mIOMem.tpcZSmeta2->n[i][j] = counts.count[i][j];
234 mIOMem.tpcZSmeta->sector[i].nZSPtr[j] = &mIOMem.tpcZSmeta2->n[i][j];
235 mIOMem.tpcZSmeta->sector[i].count[j] = 1;
236 total += counts.count[i][j];
237 }
238 }
240 }
241 if (ReadData(fp, &ptr, &total, &mIOMem.tpcCompressedClusters, InOutPointerType::TPC_COMPRESSED_CL)) {
243 }
244 uint32_t n;
245 ReadData(fp, &mIOPtrs.settingsTF, &n, &mIOMem.settingsTF, InOutPointerType::TF_SETTINGS);
246 ReadData(fp, mIOPtrs.sectorTracks, mIOPtrs.nSectorTracks, mIOMem.sectorTracks, InOutPointerType::SECTOR_OUT_TRACK);
247 ReadData(fp, mIOPtrs.sectorClusters, mIOPtrs.nSectorClusters, mIOMem.sectorClusters, InOutPointerType::SECTOR_OUT_CLUSTER);
248 ReadData(fp, &mIOPtrs.mcLabelsTPC, &mIOPtrs.nMCLabelsTPC, &mIOMem.mcLabelsTPC, InOutPointerType::MC_LABEL_TPC);
249 ReadData(fp, &mIOPtrs.mcInfosTPC, &mIOPtrs.nMCInfosTPC, &mIOMem.mcInfosTPC, InOutPointerType::MC_INFO_TPC);
250 ReadData(fp, &mIOPtrs.mcInfosTPCCol, &mIOPtrs.nMCInfosTPCCol, &mIOMem.mcInfosTPCCol, InOutPointerType::MC_INFO_TPC);
251 ReadData(fp, &mIOPtrs.mergedTracks, &mIOPtrs.nMergedTracks, &mIOMem.mergedTracks, InOutPointerType::MERGED_TRACK);
252 ReadData(fp, &mIOPtrs.mergedTrackHits, &mIOPtrs.nMergedTrackHits, &mIOMem.mergedTrackHits, InOutPointerType::MERGED_TRACK_HIT);
253 ReadData(fp, &mIOPtrs.trdTracks, &mIOPtrs.nTRDTracks, &mIOMem.trdTracks, InOutPointerType::TRD_TRACK);
254 ReadData(fp, &mIOPtrs.trdTracklets, &mIOPtrs.nTRDTracklets, &mIOMem.trdTracklets, InOutPointerType::TRD_TRACKLET);
255 uint32_t dummy = 0;
256 ReadData(fp, &mIOPtrs.trdSpacePoints, &dummy, &mIOMem.trdSpacePoints, InOutPointerType::TRD_SPACEPOINT);
257 ReadData(fp, &mIOPtrs.trdTriggerTimes, &mIOPtrs.nTRDTriggerRecords, &mIOMem.trdTriggerTimes, InOutPointerType::TRD_TRIGGERRECORDS);
258 ReadData(fp, &mIOPtrs.trdTrackletIdxFirst, &mIOPtrs.nTRDTriggerRecords, &mIOMem.trdTrackletIdxFirst, InOutPointerType::TRD_TRIGGERRECORDS);
259 ReadData(fp, &mIOPtrs.trdTrigRecMask, &mIOPtrs.nTRDTriggerRecords, &mIOMem.trdTrigRecMask, InOutPointerType::TRD_TRIGGERRECORDS);
260
261 size_t fptr = ftell(fp);
262 fseek(fp, 0, SEEK_END);
263 size_t fend = ftell(fp);
264 fclose(fp);
265 if (fptr != fend) {
266 GPUError("Error reading data file, reading incomplete");
267 return 1;
268 }
269 (void)r;
270 for (uint32_t i = 0; i < NSECTORS; i++) {
271 for (uint32_t j = 0; j < mIOPtrs.nClusterData[i]; j++) {
272 ptrClusterData[i][j].id = nClustersTotal++;
273 if ((uint32_t)ptrClusterData[i][j].amp >= 25 * 1024) {
274 GPUError("Invalid cluster charge, truncating (%d >= %d)", (int32_t)ptrClusterData[i][j].amp, 25 * 1024);
275 ptrClusterData[i][j].amp = 25 * 1024 - 1;
276 }
277 }
278 for (uint32_t j = 0; j < mIOPtrs.nRawClusters[i]; j++) {
279 if ((uint32_t)mIOMem.rawClusters[i][j].GetCharge() >= 25 * 1024) {
280 GPUError("Invalid raw cluster charge, truncating (%d >= %d)", (int32_t)ptrRawClusters[i][j].GetCharge(), 25 * 1024);
281 ptrRawClusters[i][j].SetCharge(25 * 1024 - 1);
282 }
283 if ((uint32_t)mIOPtrs.rawClusters[i][j].GetQMax() >= 1024) {
284 GPUError("Invalid raw cluster charge max, truncating (%d >= %d)", (int32_t)ptrRawClusters[i][j].GetQMax(), 1024);
285 ptrRawClusters[i][j].SetQMax(1024 - 1);
286 }
287 }
288 }
289
290 return (0);
291}
292
294{
295 std::string f;
296 if (processors()->calibObjects.fastTransform != nullptr) {
297 f = dir;
298 f += "tpctransform.dump";
299 DumpFlatObjectToFile(processors()->calibObjects.fastTransform, f.c_str());
300 }
301 if (processors()->calibObjects.fastTransformRef != nullptr) {
302 f = dir;
303 f += "tpctransformref.dump";
304 DumpFlatObjectToFile(processors()->calibObjects.fastTransformRef, f.c_str());
305 }
306 if (processors()->calibObjects.fastTransformMShape != nullptr) {
307 f = dir;
308 f += "tpctransformmshape.dump";
309 DumpFlatObjectToFile(processors()->calibObjects.fastTransformMShape, f.c_str());
310 }
311 if (processors()->calibObjects.fastTransformHelper != nullptr) {
312 f = dir;
313 f += "tpctransformhelper.dump";
314 DumpStructToFile(processors()->calibObjects.fastTransformHelper, f.c_str());
315 }
316 if (processors()->calibObjects.tpcPadGain != nullptr) {
317 f = dir;
318 f += "tpcpadgaincalib.dump";
319 DumpStructToFile(processors()->calibObjects.tpcPadGain, f.c_str());
320 }
321 if (processors()->calibObjects.tpcZSLinkMapping != nullptr) {
322 f = dir;
323 f += "tpczslinkmapping.dump";
324 DumpStructToFile(processors()->calibObjects.tpcZSLinkMapping, f.c_str());
325 }
326 if (processors()->calibObjects.dEdxCalibContainer != nullptr) {
327 f = dir;
328 f += "dEdxCalibContainer.dump";
329 DumpFlatObjectToFile(processors()->calibObjects.dEdxCalibContainer, f.c_str());
330 }
331 if (processors()->calibObjects.matLUT != nullptr) {
332 f = dir;
333 f += "matlut.dump";
334 DumpFlatObjectToFile(processors()->calibObjects.matLUT, f.c_str());
335 }
336 if (processors()->calibObjects.trdGeometry != nullptr) {
337 f = dir;
338 f += "trdgeometry.dump";
339 DumpStructToFile(processors()->calibObjects.trdGeometry, f.c_str());
340 }
341 if (processors()->calibObjects.trdRecoParam != nullptr) {
342 f = dir;
343 f += "trdrecoparam.dump";
344 DumpStructToFile(processors()->calibObjects.trdRecoParam, f.c_str());
345 }
346}
347
349{
350 std::string f;
351 f = dir;
352 f += "tpctransform.dump";
353 mTPCFastTransformU = ReadFlatObjectFromFile<TPCFastTransform>(f.c_str());
355 f = dir;
356 f += "tpctransformref.dump";
357 mTPCFastTransformRefU = ReadFlatObjectFromFile<TPCFastTransform>(f.c_str());
359 f = dir;
360 f += "tpctransformmshape.dump";
361 mTPCFastTransformMShapeU = ReadFlatObjectFromFile<TPCFastTransform>(f.c_str());
363 f = dir;
364 f += "tpctransformhelper.dump";
365 mTPCFastTransformHelperU = ReadStructFromFile<CorrectionMapsHelper>(f.c_str());
366 if ((processors()->calibObjects.fastTransformHelper = mTPCFastTransformHelperU.get())) {
369 mTPCFastTransformHelperU->setCorrMapMShape(mTPCFastTransformMShapeU.get());
370 }
371 f = dir;
372 f += "tpcpadgaincalib.dump";
373 mTPCPadGainCalibU = ReadStructFromFile<TPCPadGainCalib>(f.c_str());
375 f = dir;
376 f += "tpczslinkmapping.dump";
377 mTPCZSLinkMappingU = ReadStructFromFile<TPCZSLinkMapping>(f.c_str());
379 f = dir;
380 f += "dEdxCalibContainer.dump";
381 mdEdxCalibContainerU = ReadFlatObjectFromFile<o2::tpc::CalibdEdxContainer>(f.c_str());
383 f = dir;
384 f += "matlut.dump";
385 mMatLUTU = ReadFlatObjectFromFile<o2::base::MatLayerCylSet>(f.c_str());
387 f = dir;
388 f += "trdgeometry.dump";
389 mTRDGeometryU = ReadStructFromFile<o2::trd::GeometryFlat>(f.c_str());
391 f = dir;
392 f += "trdrecoparam.dump";
393 mTRDRecoParamU = ReadStructFromFile<GPUTRDRecoParam>(f.c_str());
395}
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< GPUTRDRecoParam > mTRDRecoParamU
std::unique_ptr< TPCFastTransform > mTPCFastTransformMShapeU
void ReadSettings(const char *dir="") override
std::unique_ptr< CorrectionMapsHelper > mTPCFastTransformHelperU
std::unique_ptr< TPCFastTransform > mTPCFastTransformRefU
std::unique_ptr< TPCPadGainCalib > mTPCPadGainCalibU
std::unique_ptr< o2::tpc::CalibdEdxContainer > mdEdxCalibContainerU
std::unique_ptr< o2::trd::GeometryFlat > mTRDGeometryU
std::unique_ptr< TPCZSLinkMapping > mTPCZSLinkMappingU
void DumpData(const char *filename, const GPUTrackingInOutPointers *ioPtrs=nullptr)
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:168
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< GPUTRDRecoParam >::type * trdRecoParam
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 o2::tpc::CompressedClustersFlat * tpcCompressedClusters
const AliHLTTPCClusterMCLabel * mcLabelsTPC
const GPUTRDSpacePoint * trdSpacePoints
const GPUTPCTrack * sectorTracks[NSECTORS]
const GPUTRDTrackGPU * trdTracks
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