Project
Loading...
Searching...
No Matches
GPUDataTypesIO.h
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#ifndef GPUDATATYPESIO_H
16#define GPUDATATYPESIO_H
17
18#include "GPUCommonDef.h"
19
20// These are basic and non-complex data types, which will also be visible on the GPU.
21// Please add complex data types required on the host but not GPU to GPUHostDataTypes.h and forward-declare!
22#ifndef GPUCA_GPUCODE_DEVICE
23#include <cstddef>
24#endif
25#include "GPUTRDDef.h"
26
29namespace o2::tpc
30{
31struct ClusterNativeAccess;
32struct CompressedClustersFlat;
33class Digit;
34class TrackTPC;
35namespace constants
36{
37} // namespace constants
38} // namespace o2::tpc
39
40namespace o2
41{
42class MCCompLabel;
43template <typename T>
44class BaseCluster;
45namespace base
46{
47template <typename T>
48class PropagatorImpl;
49class MatLayerCylSet;
50} // namespace base
51namespace track
52{
53template <typename value_T>
54class TrackParametrizationWithError;
55using TrackParCov = TrackParametrizationWithError<float>;
56} // namespace track
57namespace trd
58{
59class GeometryFlat;
60} // namespace trd
61namespace dataformats
62{
63class TrackTPCITS;
64class MatchInfoTOF;
65template <class T>
67template <class T>
68class ConstMCTruthContainerView;
69} // namespace dataformats
70namespace itsmft
71{
72class CompClusterExt;
73class ROFRecord;
74class TopologyDictionary;
75} // namespace itsmft
76namespace its
77{
78class TrackITS;
79} // namespace its
80namespace tof
81{
82class Cluster;
83} // namespace tof
84namespace tpc
85{
86class CalibdEdxContainer;
87class ORTRootSerializer;
88} // namespace tpc
89} // namespace o2
90
91namespace o2::gpu
92{
93class CorrectionMapsHelper;
94class TPCFastTransform;
95struct TPCPadGainCalib;
96struct TPCZSLinkMapping;
97
98class GPUTRDRecoParam;
99class GPUTPCTrack;
100class GPUTPCHitId;
101class GPUTPCGMMergedTrack;
102struct GPUTPCGMMergedTrackHit;
103class GPUTRDTrackletWord;
104class GPUTRDSpacePoint;
105struct GPUTPCMCInfo;
106struct GPUTPCMCInfoCol;
107struct GPUTPCClusterData;
108struct GPUTRDTrackletLabels;
109struct GPUTPCDigitsMCInput;
110struct GPUSettingsTF;
111
112namespace gpudatatypes
113{
114static constexpr uint32_t NSECTORS = 36;
115} // namespace gpudatatypes
116
117template <class T>
119 typedef T type;
120};
121template <class T>
122struct ConstPtr {
123 typedef const T type;
124};
125
126template <template <typename T> class S>
143typedef GPUCalibObjectsTemplate<DefaultPtr> GPUCalibObjects; // NOTE: These 2 must have identical layout since they are memcopied
145
147 static constexpr uint32_t NSECTORS = gpudatatypes::NSECTORS;
148 static constexpr uint32_t NENDPOINTS = 20;
150 const void* const* zsPtr[NENDPOINTS];
151 const uint32_t* nZSPtr[NENDPOINTS];
152 uint32_t count[NENDPOINTS];
153 };
155 uint32_t count[NSECTORS][NENDPOINTS] = {};
156 };
162};
163
165 static constexpr uint32_t NSECTORS = gpudatatypes::NSECTORS;
166 const o2::tpc::Digit* tpcDigits[NSECTORS] = {nullptr};
167 size_t nTPCDigits[NSECTORS] = {0};
169};
170
173
174 // TPC
175 static constexpr uint32_t NSECTORS = gpudatatypes::NSECTORS;
176 const GPUTrackingInOutZS* tpcZS = nullptr;
179 uint32_t nClusterData[NSECTORS] = {0};
181 uint32_t nRawClusters[NSECTORS] = {0};
183 const GPUTPCTrack* sectorTracks[NSECTORS] = {nullptr};
184 uint32_t nSectorTracks[NSECTORS] = {0};
186 uint32_t nSectorClusters[NSECTORS] = {0};
188 uint32_t nMCLabelsTPC = 0;
189 const GPUTPCMCInfo* mcInfosTPC = nullptr;
190 uint32_t nMCInfosTPC = 0;
192 uint32_t nMCInfosTPCCol = 0;
194 uint32_t nMergedTracks = 0;
196 uint32_t nMergedTrackHits = 0;
197 const uint32_t* mergedTrackHitAttachment = nullptr;
198 const uint8_t* mergedTrackHitStates = nullptr;
200 uint32_t nOutputTracksTPCO2 = 0;
201 const uint32_t* outputClusRefsTPCO2 = nullptr;
206
207 // TPC links
208 int32_t* tpcLinkITS = nullptr;
209 int32_t* tpcLinkTRD = nullptr;
210 int32_t* tpcLinkTOF = nullptr;
212 float* globalTrackTimes = nullptr;
213 uint32_t nGlobalTracks = 0;
214
215 // TRD
218 uint32_t nTRDTracklets = 0;
219 const GPUTRDTrackGPU* trdTracks = nullptr;
220 const GPUTRDTrack* trdTracksO2 = nullptr;
221 uint32_t nTRDTracks = 0;
222 const float* trdTriggerTimes = nullptr;
223 const int32_t* trdTrackletIdxFirst = nullptr;
224 const uint8_t* trdTrigRecMask = nullptr;
225 uint32_t nTRDTriggerRecords = 0;
228 const GPUTRDTrack* trdTracksTPCTRD = nullptr;
229 uint32_t nTRDTracksTPCTRD = 0;
230
231 // TOF
233 uint32_t nTOFClusters = 0;
235 uint32_t nITSTPCTOFMatches = 0;
239 uint32_t nTPCTRDTOFMatches = 0;
241 uint32_t nTPCTOFMatches = 0;
242
243 // ITS
247 uint32_t nItsClusters = 0;
249 uint32_t nItsClusterROF = 0;
250 const o2::its::TrackITS* itsTracks = nullptr;
251 const o2::MCCompLabel* itsTrackMC = nullptr;
252 uint32_t nItsTracks = 0;
253 const int32_t* itsTrackClusIdx = nullptr;
255 uint32_t nItsTrackROF = 0;
256
257 // TPC-ITS
259 uint32_t nTracksTPCITSO2 = 0;
260
261 // Common
262 const GPUSettingsTF* settingsTF = nullptr;
263};
264
265} // namespace o2::gpu
266
267#endif
o2::track::TrackParCov TrackParCov
Definition Recon.h:39
HMPID cluster implementation.
Definition Cluster.h:27
Cluster class for TOF.
Definition Cluster.h:37
GLdouble n
Definition glcorearb.h:1982
GLint GLsizei count
Definition glcorearb.h:399
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
o2::cpv::Digit Digit
GPUCalibObjectsTemplate< DefaultPtr > GPUCalibObjects
GPUCalibObjectsTemplate< ConstPtr > GPUCalibObjectsConst
Global TPC definitions and constants.
Definition SimTraits.h:168
TrackParCovF TrackParCov
Definition Track.h:33
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
S< o2::trd::GeometryFlat >::type * trdGeometry
S< o2::itsmft::TopologyDictionary >::type * itsPatternDict
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::PropagatorImpl< float > >::type * o2Propagator
S< o2::base::MatLayerCylSet >::type * matLUT
S< CorrectionMapsHelper >::type * fastTransformHelper
S< TPCFastTransform >::type * fastTransformRef
S< o2::tpc::ORTRootSerializer >::type * nnClusterizerNetworks[3]
S< TPCFastTransform >::type * fastTransformMShape
const o2::tpc::Digit * tpcDigits[NSECTORS]
const GPUTPCDigitsMCInput * tpcDigitsMC
static constexpr uint32_t NSECTORS
const o2::itsmft::CompClusterExt * itsCompClusters
const GPUTPCHitId * sectorClusters[NSECTORS]
const o2::tpc::ClusterNativeAccess * clustersNative
const o2::dataformats::MCTruthContainer< o2::MCCompLabel > * itsClusterMC
const o2::dataformats::MatchInfoTOF * tpctofMatches
const o2::dataformats::MatchInfoTOF * tpctrdtofMatches
const o2::MCCompLabel * itsTrackMC
const o2::dataformats::MatchInfoTOF * itstpctrdtofMatches
const o2::tpc::CompressedClustersFlat * tpcCompressedClusters
const AliHLTTPCClusterMCLabel * mcLabelsTPC
const GPUTRDSpacePoint * trdSpacePoints
const o2::tof::Cluster * tofClusters
const o2::BaseCluster< float > * itsClusters
const GPUTPCTrack * sectorTracks[NSECTORS]
const o2::itsmft::ROFRecord * itsClusterROF
const o2::dataformats::MatchInfoTOF * itstpctofMatches
const GPUTRDTrackGPU * trdTracks
const GPUTRDTrackletWord * trdTracklets
const GPUTrackingInOutZS * tpcZS
const AliHLTTPCRawCluster * rawClusters[NSECTORS]
const GPUTPCClusterData * clusterData[NSECTORS]
const o2::its::TrackITS * itsTracks
const o2::dataformats::TrackTPCITS * tracksTPCITSO2
const o2::MCCompLabel * outputTracksTPCO2MC
static constexpr uint32_t NSECTORS
const o2::itsmft::ROFRecord * itsTrackROF
const o2::tpc::ClusterNativeAccess * clustersNativeReduced
const o2::tpc::TrackTPC * outputTracksTPCO2
const GPUTPCGMMergedTrackHit * mergedTrackHits
const GPUTrackingInOutDigits * tpcPackedDigits
const GPUTRDTrack * trdTracksITSTPCTRD
const o2::track::TrackParCov ** globalTracks
const GPUTPCMCInfoCol * mcInfosTPCCol
const GPUTPCGMMergedTrack * mergedTracks
GPUTrackingInOutZSSector sector[NSECTORS]
static constexpr uint32_t NSECTORS
static constexpr uint32_t NENDPOINTS