Project
Loading...
Searching...
No Matches
GPUTPCGMMerger.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 GPUTPCGMMERGER_H
16#define GPUTPCGMMERGER_H
17
18#include "GPUParam.h"
19#include "GPUTPCDef.h"
20#include "GPUTPCGMBorderTrack.h"
21#include "GPUTPCGMMergedTrack.h"
22#include "GPUTPCGMSectorTrack.h"
23#include "GPUCommonDef.h"
24#include "GPUProcessor.h"
25#include "GPUTPCGMMergerTypes.h"
26#include "GPUGeneralKernels.h"
27
28#if !defined(GPUCA_GPUCODE)
29#include <cmath>
30#include <iostream>
31#endif // GPUCA_GPUCODE
32
33namespace o2::base
34{
35class MatLayerCylSet;
36}
37namespace o2::tpc
38{
39struct ClusterNative;
40}
41
42namespace o2::gpu
43{
44class GPUTPCSectorTrack;
45class GPUTPCSectorOutput;
46class GPUTPCGMTrackParam;
47class GPUTPCTracker;
48class GPUChainTracking;
49class GPUTPCGMPolynomialField;
50struct GPUTPCGMLoopData;
51namespace internal
52{
53struct MergeLooperParam;
54} // namespace internal
55
61{
62 public:
64 ~GPUTPCGMMerger() = default;
66 const GPUTPCGMMerger& operator=(const GPUTPCGMMerger&) const = delete;
67 static constexpr const int32_t NSECTORS = GPUCA_NSECTORS; //* N sectors
68
69 struct memory {
70 GPUAtomic(uint32_t) nRetryRefit;
71 GPUAtomic(uint32_t) nLoopData;
72 GPUAtomic(uint32_t) nUnpackedTracks;
73 GPUAtomic(uint32_t) nOutputTracks;
74 GPUAtomic(uint32_t) nOutputTrackClusters;
75 GPUAtomic(uint32_t) nO2Tracks;
76 GPUAtomic(uint32_t) nO2ClusRefs;
78 GPUAtomic(uint32_t) tmpCounter[2 * NSECTORS];
79 GPUAtomic(uint32_t) nLooperMatchCandidates;
80 };
81
82 struct trackCluster {
83 uint32_t id;
84 uint8_t row;
85 uint8_t sector;
86 uint8_t leg;
87 };
88
89 struct tmpSort {
90 uint32_t x;
91 float y;
92 };
93
97 void* SetPointersMerger(void* mem);
98 void* SetPointersRefitScratch(void* mem);
99 void* SetPointersOutput(void* mem);
100 void* SetPointersOutputO2(void* mem);
101 void* SetPointersOutputO2Clus(void* mem);
102 void* SetPointersOutputO2MC(void* mem);
103 void* SetPointersOutputO2Scratch(void* mem);
104 void* SetPointersOutputState(void* mem);
105 void* SetPointersMemory(void* mem);
106
107 GPUhdi() int32_t NOutputTracks() const { return mMemory->nOutputTracks; }
108 GPUhdi() const GPUTPCGMMergedTrack* OutputTracks() const { return mOutputTracks; }
109 GPUhdi() GPUTPCGMMergedTrack* OutputTracks() { return mOutputTracks; }
110 GPUhdi() const GPUdEdxInfo* OutputTracksdEdx() const { return mOutputTracksdEdx; }
111 GPUhdi() GPUdEdxInfo* OutputTracksdEdx() { return mOutputTracksdEdx; }
112 GPUhdi() uint32_t NClusters() const { return mNClusters; }
113 GPUhdi() uint32_t NMaxClusters() const { return mNMaxClusters; }
114 GPUhdi() uint32_t NMaxTracks() const { return mNMaxTracks; }
115 GPUhdi() uint32_t NMaxOutputTrackClusters() const { return mNMaxOutputTrackClusters; }
116 GPUhdi() uint32_t NOutputTrackClusters() const { return mMemory->nOutputTrackClusters; }
117 GPUhdi() const GPUTPCGMMergedTrackHit* Clusters() const { return mClusters; }
118 GPUhdi() GPUTPCGMMergedTrackHit* Clusters() { return (mClusters); }
119 GPUhdi() const GPUTPCGMMergedTrackHitXYZ* ClustersXYZ() const { return mClustersXYZ; }
120 GPUhdi() GPUTPCGMMergedTrackHitXYZ* ClustersXYZ() { return (mClustersXYZ); }
121 GPUhdi() GPUAtomic(uint32_t) * ClusterAttachment() const { return mClusterAttachment; }
122 GPUhdi() uint32_t* TrackOrderAttach() const { return mTrackOrderAttach; }
123 GPUhdi() uint32_t* TrackOrderProcess() const { return mTrackOrderProcess; }
124 GPUhdi() uint32_t* RetryRefitIds() const { return mRetryRefitIds; }
125 GPUhdi() uint8_t* ClusterStateExt() const { return mClusterStateExt; }
126 GPUhdi() GPUTPCGMLoopData* LoopData() const { return mLoopData; }
127 GPUhdi() memory* Memory() const { return mMemory; }
128 GPUhdi() GPUAtomic(uint32_t) * TmpCounter() { return mMemory->tmpCounter; }
129 GPUhdi() uint2* ClusRefTmp() { return mClusRefTmp; }
130 GPUhdi() uint32_t* TrackSort() { return mTrackSort; }
131 GPUhdi() tmpSort* TrackSortO2() { return mTrackSortO2; }
132 GPUhdi() internal::MergeLooperParam* LooperCandidates() { return mLooperCandidates; }
133 GPUhdi() GPUAtomic(uint32_t) * SharedCount() { return mSharedCount; }
134 GPUhdi() gputpcgmmergertypes::GPUTPCGMBorderRange* BorderRange(int32_t i) { return mBorderRange[i]; }
135 GPUhdi() const gputpcgmmergertypes::GPUTPCGMBorderRange* BorderRange(int32_t i) const { return mBorderRange[i]; }
136 GPUhdi() GPUTPCGMBorderTrack* BorderTracks(int32_t i) { return mBorder[i]; }
137 GPUhdi() o2::tpc::TrackTPC* OutputTracksTPCO2() { return mOutputTracksTPCO2; }
138 GPUhdi() uint32_t* OutputClusRefsTPCO2() { return mOutputClusRefsTPCO2; }
139 GPUhdi() o2::MCCompLabel* OutputTracksTPCO2MC() { return mOutputTracksTPCO2MC; }
140 GPUhdi() uint32_t NOutputTracksTPCO2() const { return mMemory->nO2Tracks; }
141 GPUhdi() uint32_t NOutputClusRefsTPCO2() const { return mMemory->nO2ClusRefs; }
142 GPUhdi() GPUTPCGMSectorTrack* SectorTrackInfos() { return mSectorTrackInfos; }
143 GPUhdi() int32_t NMaxSingleSectorTracks() const { return mNMaxSingleSectorTracks; }
144 GPUhdi() int32_t* TrackIDs() { return mTrackIDs; }
145 GPUhdi() int32_t* TmpSortMemory() { return mTmpSortMemory; }
146
147 GPUd() uint16_t MemoryResMemory() { return mMemoryResMemory; }
148 GPUd() uint16_t MemoryResOutput() const { return mMemoryResOutput; }
149 GPUd() uint16_t MemoryResOutputState() const { return mMemoryResOutputState; }
150 GPUd() uint16_t MemoryResOutputO2() const { return mMemoryResOutputO2; }
151 GPUd() uint16_t MemoryResOutputO2Clus() const { return mMemoryResOutputO2Clus; }
152 GPUd() uint16_t MemoryResOutputO2MC() const { return mMemoryResOutputO2MC; }
153 GPUd() uint16_t MemoryResOutputO2Scratch() const { return mMemoryResOutputO2Scratch; }
154
155 GPUd() int32_t RefitSectorTrack(GPUTPCGMSectorTrack& sectorTrack, const GPUTPCTrack* inTrack, float alpha, int32_t sector);
156 GPUd() void SetTrackClusterZT(GPUTPCGMSectorTrack& track, int32_t iSector, const GPUTPCTrack* sectorTr);
157
158 int32_t CheckSectors();
159 GPUd() void RefitSectorTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t iSector);
160 GPUd() void UnpackSectorGlobal(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t iSector);
161 GPUd() void UnpackSaveNumber(int32_t id);
162 GPUd() void UnpackResetIds(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t iSector);
163 GPUd() void MergeCE(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
164 GPUd() void ClearTrackLinks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, bool output);
165 GPUd() void MergeWithinSectorsPrepare(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
166 GPUd() void MergeSectorsPrepare(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t border0, int32_t border1, int8_t useOrigTrackParam);
167 template <int32_t I>
168 GPUd() void MergeBorderTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t iSector, int8_t withinSector, int8_t mergeMode);
169 GPUd() void MergeBorderTracksSetup(int32_t& n1, int32_t& n2, GPUTPCGMBorderTrack*& b1, GPUTPCGMBorderTrack*& b2, int32_t& jSector, int32_t iSector, int8_t withinSector, int8_t mergeMode) const;
170 template <int32_t I>
171 GPUd() void MergeBorderTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, gputpcgmmergertypes::GPUTPCGMBorderRange* range, int32_t N, int32_t cmpMax);
172 GPUd() void SortTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
173 GPUd() void SortTracksQPt(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
174 GPUd() void SortTracksPrepare(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
175 GPUd() void PrepareClustersForFit0(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
176 GPUd() void PrepareClustersForFit1(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
177 GPUd() void PrepareClustersForFit2(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
178 GPUd() void LinkExtrapolatedTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
179 GPUd() void CollectMergedTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
180 GPUd() void Finalize0(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
181 GPUd() void Finalize1(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
182 GPUd() void Finalize2(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
183 GPUd() void ResolveFindConnectedComponentsSetup(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
184 GPUd() void ResolveFindConnectedComponentsHookNeighbors(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
185 GPUd() void ResolveFindConnectedComponentsHookLinks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
186 GPUd() void ResolveFindConnectedComponentsMultiJump(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
187 GPUd() void ResolveMergeSectors(gputpcgmmergertypes::GPUResolveSharedMemory& smem, int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int8_t useOrigTrackParam, int8_t mergeAll);
188 GPUd() void MergeLoopersInit(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
189 GPUd() void MergeLoopersSort(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
190 GPUd() void MergeLoopersMain(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread);
191
192#ifndef GPUCA_GPUCODE
193 void DumpSectorTracks(std::ostream& out) const;
194 void DumpMergeRanges(std::ostream& out, int32_t withinSector, int32_t mergeMode) const;
195 void DumpTrackLinks(std::ostream& out, bool output, const char* type) const;
196 void DumpMergedWithinSectors(std::ostream& out) const;
197 void DumpMergedBetweenSectors(std::ostream& out) const;
198 void DumpCollected(std::ostream& out) const;
199 void DumpMergeCE(std::ostream& out) const;
200 void DumpFitPrepare(std::ostream& out) const;
201 void DumpRefit(std::ostream& out) const;
202 void DumpFinal(std::ostream& out) const;
203
204 template <int32_t mergeType>
205 void MergedTrackStreamerInternal(const GPUTPCGMBorderTrack& b1, const GPUTPCGMBorderTrack& b2, const char* name, int32_t sector1, int32_t sector2, int32_t mergeMode, float weight, float frac) const;
206 void MergedTrackStreamer(const GPUTPCGMBorderTrack& b1, const GPUTPCGMBorderTrack& b2, const char* name, int32_t sector1, int32_t sector2, int32_t mergeMode, float weight, float frac) const;
207 const GPUTPCGMBorderTrack& MergedTrackStreamerFindBorderTrack(const GPUTPCGMBorderTrack* tracks, int32_t N, int32_t trackId) const;
208 void DebugRefitMergedTrack(const GPUTPCGMMergedTrack& track) const;
209 std::vector<uint32_t> StreamerOccupancyBin(int32_t iSector, int32_t iRow, float time) const;
210 std::vector<float> StreamerUncorrectedZY(int32_t iSector, int32_t iRow, const GPUTPCGMTrackParam& track, const GPUTPCGMPropagator& prop) const;
211
212 void DebugStreamerUpdate(int32_t iTrk, int32_t ihit, float xx, float yy, float zz, const GPUTPCGMMergedTrackHit& cluster, const o2::tpc::ClusterNative& clusterNative, const GPUTPCGMTrackParam& track, const GPUTPCGMPropagator& prop, const gputpcgmmergertypes::InterpolationErrorHit& interpolation, int8_t rejectChi2, bool refit, int32_t retVal, float avgInvCharge, float posY, float posZ, int16_t clusterState, int32_t retValReject, float err2Y, float err2Z) const;
213#endif
214
215 GPUdi() int32_t SectorTrackInfoFirst(int32_t iSector) const { return mSectorTrackInfoIndex[iSector]; }
216 GPUdi() int32_t SectorTrackInfoLast(int32_t iSector) const { return mSectorTrackInfoIndex[iSector + 1]; }
217 GPUdi() int32_t SectorTrackInfoGlobalFirst(int32_t iSector) const { return mSectorTrackInfoIndex[NSECTORS + iSector]; }
218 GPUdi() int32_t SectorTrackInfoGlobalLast(int32_t iSector) const { return mSectorTrackInfoIndex[NSECTORS + iSector + 1]; }
219 GPUdi() int32_t SectorTrackInfoLocalTotal() const { return mSectorTrackInfoIndex[NSECTORS]; }
220 GPUdi() int32_t SectorTrackInfoTotal() const { return mSectorTrackInfoIndex[2 * NSECTORS]; }
221
222 private:
223 GPUd() void MergeSectorsPrepareStep2(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t iBorder, GPUTPCGMBorderTrack** B, GPUAtomic(uint32_t) * nB, bool useOrigTrackParam = false);
224 template <int32_t I>
225 GPUd() void MergeBorderTracks(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, int32_t iSector1, GPUTPCGMBorderTrack* B1, int32_t N1, int32_t iSector2, GPUTPCGMBorderTrack* B2, int32_t N2, int32_t mergeMode = 0);
226
227 GPUd() void MergeCEFill(const GPUTPCGMSectorTrack* track, const GPUTPCGMMergedTrackHit& cls, const GPUTPCGMMergedTrackHitXYZ* clsXYZ, int32_t itr);
228
229 void CheckMergedTracks();
230#ifndef GPUCA_GPUCODE
231 void PrintMergeGraph(const GPUTPCGMSectorTrack* trk, std::ostream& out) const;
232 template <class T, class S>
233 int64_t GetTrackLabelA(const S& trk) const;
234 template <class S>
235 int64_t GetTrackLabel(const S& trk) const;
236#endif
237
238 GPUdi() void setBlockRange(int32_t elems, int32_t nBlocks, int32_t iBlock, int32_t& start, int32_t& end);
239 GPUdi() void hookEdge(int32_t u, int32_t v);
240
241 int32_t mNextSectorInd[NSECTORS];
242 int32_t mPrevSectorInd[NSECTORS];
243
244 int32_t* mTrackLinks = nullptr;
245 int32_t* mTrackCCRoots; // root of the connected component of this track
246
247 uint32_t mNTotalSectorTracks = 0; // maximum number of incoming sector tracks
248 uint32_t mNMaxTracks = 0; // maximum number of output tracks
249 uint32_t mNMaxSingleSectorTracks = 0; // max N tracks in one sector
250 uint32_t mNMaxOutputTrackClusters = 0; // max number of clusters in output tracks (double-counting shared clusters)
251 uint32_t mNMaxClusters = 0; // max total unique clusters (in event)
252 uint32_t mNMaxLooperMatches = 0; // Maximum number of candidate pairs for looper matching
253
254 uint16_t mMemoryResMemory = (uint16_t)-1;
255 uint16_t mMemoryResOutput = (uint16_t)-1;
256 uint16_t mMemoryResOutputState = (uint16_t)-1;
257 uint16_t mMemoryResOutputO2 = (uint16_t)-1;
258 uint16_t mMemoryResOutputO2Clus = (uint16_t)-1;
259 uint16_t mMemoryResOutputO2MC = (uint16_t)-1;
260 uint16_t mMemoryResOutputO2Scratch = (uint16_t)-1;
261
262 int32_t mNClusters = 0; // Total number of incoming clusters (from sector tracks)
263 GPUTPCGMMergedTrack* mOutputTracks = nullptr; //* array of output merged tracks
264 GPUdEdxInfo* mOutputTracksdEdx = nullptr; //* dEdx information
265 GPUTPCGMSectorTrack* mSectorTrackInfos = nullptr; //* additional information for sector tracks
266 int32_t* mSectorTrackInfoIndex = nullptr;
267 GPUTPCGMMergedTrackHit* mClusters = nullptr;
268 GPUTPCGMMergedTrackHitXYZ* mClustersXYZ = nullptr;
269 GPUAtomic(uint32_t) * mClusterAttachment = nullptr;
270 o2::tpc::TrackTPC* mOutputTracksTPCO2 = nullptr;
271 uint32_t* mOutputClusRefsTPCO2 = nullptr;
272 o2::MCCompLabel* mOutputTracksTPCO2MC = nullptr;
273 internal::MergeLooperParam* mLooperCandidates = nullptr;
274
275 uint32_t* mTrackOrderAttach = nullptr;
276 uint32_t* mTrackOrderProcess = nullptr;
277 uint8_t* mClusterStateExt = nullptr;
278 uint2* mClusRefTmp = nullptr;
279 int32_t* mTrackIDs = nullptr;
280 int32_t* mTmpSortMemory = nullptr;
281 uint32_t* mTrackSort = nullptr;
282 tmpSort* mTrackSortO2 = nullptr;
283 GPUAtomic(uint32_t) * mSharedCount = nullptr; // Must be uint32_t unfortunately for atomic support
284 GPUTPCGMBorderTrack* mBorderMemory = nullptr; // memory for border tracks
285 GPUTPCGMBorderTrack* mBorder[2 * NSECTORS];
286 gputpcgmmergertypes::GPUTPCGMBorderRange* mBorderRangeMemory = nullptr; // memory for border tracks
287 gputpcgmmergertypes::GPUTPCGMBorderRange* mBorderRange[NSECTORS]; // memory for border tracks
288 memory* mMemory = nullptr;
289 uint32_t* mRetryRefitIds = nullptr;
290 GPUTPCGMLoopData* mLoopData = nullptr;
291};
292} // namespace o2::gpu
293
294#endif // GPUTPCGMMERGER_H
int16_t time
Definition RawEventData.h:4
int32_t i
#define GPUAtomic(type)
int32_t retVal
#define GPUCA_NSECTORS
Definition B.h:16
void * SetPointersRefitScratch(void *mem)
GPUd() uint16_t MemoryResOutputO2Clus() const
GPUhdi() const gputpcgmmergertypes
GPUhdi() uint32_t NOutputTracksTPCO2() const
int32_t int32_t int32_t int32_t int8_t int8_t mergeMode
void DumpMergeCE(std::ostream &out) const
void DumpMergedBetweenSectors(std::ostream &out) const
GPUd() uint16_t MemoryResOutputO2Scratch() const
GPUhdi() uint32_t NClusters() const
void MergedTrackStreamerInternal(const GPUTPCGMBorderTrack &b1, const GPUTPCGMBorderTrack &b2, const char *name, int32_t sector1, int32_t sector2, int32_t mergeMode, float weight, float frac) const
void DumpFitPrepare(std::ostream &out) const
void * SetPointersMemory(void *mem)
int32_t int32_t int32_t gputpcgmmergertypes::GPUTPCGMBorderRange int32_t int32_t cmpMax
static constexpr const int32_t NSECTORS
GPUhdi() uint32_t *TrackOrderAttach() const
GPUdi() int32_t SectorTrackInfoFirst(int32_t iSector) const
void DebugRefitMergedTrack(const GPUTPCGMMergedTrack &track) const
GPUd() uint16_t MemoryResOutputO2() const
int32_t int32_t int32_t bool output
GPUdi() int32_t SectorTrackInfoLocalTotal() const
int32_t int32_t int32_t gputpcgmmergertypes::GPUTPCGMBorderRange int32_t N
GPUhdi() GPUAtomic(uint32_t) *TmpCounter()
GPUhdi() uint32_t NMaxOutputTrackClusters() const
const GPUTPCTrack * inTrack
GPUhdi() const GPUTPCGMMergedTrack *OutputTracks() const
GPUhdi() const GPUdEdxInfo *OutputTracksdEdx() const
GPUhdi() int32_t NOutputTracks() const
int32_t GPUTPCGMBorderTrack GPUTPCGMBorderTrack *& b2
GPUhdi() uint32_t NMaxClusters() const
void DumpTrackLinks(std::ostream &out, bool output, const char *type) const
GPUhdi() uint32_t NOutputClusRefsTPCO2() const
GPUhdi() uint32_t *RetryRefitIds() const
void DumpFinal(std::ostream &out) const
GPUhdi() uint32_t *TrackOrderProcess() const
void * SetPointersOutput(void *mem)
GPUhdi() GPUAtomic(uint32_t) *ClusterAttachment() const
int32_t GPUTPCGMBorderTrack GPUTPCGMBorderTrack int32_t int32_t int8_t int8_t mergeMode const
GPUhdi() const GPUTPCGMMergedTrackHitXYZ *ClustersXYZ() const
std::vector< float > StreamerUncorrectedZY(int32_t iSector, int32_t iRow, const GPUTPCGMTrackParam &track, const GPUTPCGMPropagator &prop) const
GPUhdi() GPUTPCGMMergedTrackHit *Clusters()
GPUhdi() int32_t *TmpSortMemory()
void * SetPointersOutputO2MC(void *mem)
GPUd() uint16_t MemoryResOutputO2MC() const
const GPUTPCGMMerger & operator=(const GPUTPCGMMerger &) const =delete
GPUTPCGMMerger(const GPUTPCGMMerger &)=delete
GPUd() uint16_t MemoryResOutput() const
void * SetPointersOutputO2Scratch(void *mem)
void * SetPointersMerger(void *mem)
std::vector< uint32_t > StreamerOccupancyBin(int32_t iSector, int32_t iRow, float time) const
GPUhdi() GPUTPCGMSectorTrack *SectorTrackInfos()
GPUhdi() uint8_t *ClusterStateExt() const
void DumpRefit(std::ostream &out) const
void DumpMergedWithinSectors(std::ostream &out) const
GPUhdi() gputpcgmmergertypes
GPUhdi() uint2 *ClusRefTmp()
void DumpCollected(std::ostream &out) const
void * SetPointersOutputO2Clus(void *mem)
GPUhdi() GPUdEdxInfo *OutputTracksdEdx()
void * SetPointersOutputState(void *mem)
GPUhdi() uint32_t *OutputClusRefsTPCO2()
GPUhdi() GPUAtomic(uint32_t) *SharedCount()
int32_t GPUTPCGMBorderTrack GPUTPCGMBorderTrack int32_t & jSector
const GPUTPCGMBorderTrack & MergedTrackStreamerFindBorderTrack(const GPUTPCGMBorderTrack *tracks, int32_t N, int32_t trackId) const
int32_t int32_t int32_t int32_t border0
GPUhdi() uint32_t NMaxTracks() const
GPUhdi() uint32_t NOutputTrackClusters() const
GPUdi() int32_t SectorTrackInfoGlobalFirst(int32_t iSector) const
int32_t int32_t int32_t int32_t int8_t withinSector
void DebugStreamerUpdate(int32_t iTrk, int32_t ihit, float xx, float yy, float zz, const GPUTPCGMMergedTrackHit &cluster, const o2::tpc::ClusterNative &clusterNative, const GPUTPCGMTrackParam &track, const GPUTPCGMPropagator &prop, const gputpcgmmergertypes::InterpolationErrorHit &interpolation, int8_t rejectChi2, bool refit, int32_t retVal, float avgInvCharge, float posY, float posZ, int16_t clusterState, int32_t retValReject, float err2Y, float err2Z) const
GPUhdi() int32_t *TrackIDs()
int32_t int32_t int32_t iThread
GPUhdi() GPUTPCGMMergedTrackHitXYZ *ClustersXYZ()
GPUdi() int32_t SectorTrackInfoGlobalLast(int32_t iSector) const
void DumpMergeRanges(std::ostream &out, int32_t withinSector, int32_t mergeMode) const
void MergedTrackStreamer(const GPUTPCGMBorderTrack &b1, const GPUTPCGMBorderTrack &b2, const char *name, int32_t sector1, int32_t sector2, int32_t mergeMode, float weight, float frac) const
GPUhdi() GPUTPCGMMergedTrack *OutputTracks()
GPUhdi() GPUTPCGMLoopData *LoopData() const
GPUd() uint16_t MemoryResOutputState() const
const GPUTPCTrack float int32_t sector
int32_t GPUTPCGMBorderTrack *& b1
GPUdi() int32_t SectorTrackInfoLast(int32_t iSector) const
int32_t int32_t int32_t int32_t int32_t int8_t useOrigTrackParam
GPUd() uint16_t MemoryResMemory()
GPUdi() int32_t SectorTrackInfoTotal() const
GPUhdi() int32_t NMaxSingleSectorTracks() const
GPUhdi() const GPUTPCGMMergedTrackHit *Clusters() const
GPUhdi() tmpSort *TrackSortO2()
GPUhdi() memory *Memory() const
int32_t const GPUTPCTrack * sectorTr
void DumpSectorTracks(std::ostream &out) const
void SetMaxData(const GPUTrackingInOutPointers &io)
int32_t int32_t int32_t int32_t int32_t border1
void * SetPointersOutputO2(void *mem)
GPUhdi() uint32_t *TrackSort()
GLfloat GLfloat GLfloat alpha
Definition glcorearb.h:279
GLuint GLuint end
Definition glcorearb.h:469
const GLdouble * v
Definition glcorearb.h:832
GLuint const GLchar * name
Definition glcorearb.h:781
GLuint GLuint GLfloat weight
Definition glcorearb.h:5477
GLenum GLint * range
Definition glcorearb.h:1899
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
GLuint start
Definition glcorearb.h:469
GLuint memory
Definition glcorearb.h:5234
Global TPC definitions and constants.
Definition SimTraits.h:167
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
GPUAtomic(uint32_t) nRetryRefit
GPUAtomic(uint32_t) nLoopData
GPUAtomic(uint32_t) nOutputTrackClusters
GPUAtomic(uint32_t) nO2Tracks
GPUAtomic(uint32_t) nUnpackedTracks
GPUAtomic(uint32_t) nLooperMatchCandidates
const GPUTPCTrack * firstExtrapolatedTracks[NSECTORS]
GPUAtomic(uint32_t) nO2ClusRefs
GPUAtomic(uint32_t) nOutputTracks
GPUAtomic(uint32_t) tmpCounter[2 *NSECTORS]