115 GPUhdi() int32_t NMergedTracks()
const {
return mMemory->nMergedTracks; }
122 GPUhdi() uint32_t NClusters()
const {
return mNClusters; }
123 GPUhdi() uint32_t NMaxClusters()
const {
return mNMaxClusters; }
124 GPUhdi() uint32_t NMaxTracks()
const {
return mNMaxTracks; }
125 GPUhdi() uint32_t NMaxMergedTrackClusters()
const {
return mNMaxMergedTrackClusters; }
126 GPUhdi() uint32_t NMergedTrackClusters()
const {
return mMemory->nMergedTrackClusters; }
129 GPUhdi()
GPUAtomic(uint32_t) * ClusterAttachment()
const {
return mClusterAttachment; }
130 GPUhdi() uint32_t* TrackOrderAttach()
const {
return mTrackOrderAttach; }
131 GPUhdi() uint32_t* TrackOrderProcess()
const {
return mTrackOrderProcess; }
132 GPUhdi() uint32_t* RetryRefitIds()
const {
return mRetryRefitIds; }
133 GPUhdi() uint8_t* ClusterStateExt()
const {
return mClusterStateExt; }
138 GPUhdi() uint32_t* TrackSort() {
return mTrackSort; }
140 GPUhdi() internal::MergeLooperParam* LooperCandidates() {
return mLooperCandidates; }
142 GPUhdi() gputpcgmmergertypes::GPUTPCGMBorderRange* BorderRange(int32_t
i) {
return mBorderRange[
i]; }
143 GPUhdi()
const gputpcgmmergertypes::GPUTPCGMBorderRange* BorderRange(int32_t
i)
const {
return mBorderRange[
i]; }
146 GPUhdi() uint32_t* OutputClusRefsTPCO2() {
return mOutputClusRefsTPCO2; }
148 GPUhdi() uint32_t NOutputTracksTPCO2()
const {
return mMemory->nO2Tracks; }
149 GPUhdi() uint32_t NOutputClusRefsTPCO2()
const {
return mMemory->nO2ClusRefs; }
151 GPUhdi() int32_t NMaxSingleSectorTracks()
const {
return mNMaxSingleSectorTracks; }
152 GPUhdi() int32_t* TrackIDs() {
return mTrackIDs; }
153 GPUhdi() int32_t* TmpSortMemory() {
return mTmpSortMemory; }
155 GPUd() uint16_t MemoryResMemory() {
return mMemoryResMemory; }
156 GPUd() uint16_t MemoryResOutput()
const {
return mMemoryResOutput; }
157 GPUd() uint16_t MemoryResOutputState()
const {
return mMemoryResOutputState; }
158 GPUd() uint16_t MemoryResOutputO2()
const {
return mMemoryResOutputO2; }
159 GPUd() uint16_t MemoryResOutputO2Clus()
const {
return mMemoryResOutputO2Clus; }
160 GPUd() uint16_t MemoryResOutputO2MC()
const {
return mMemoryResOutputO2MC; }
161 GPUd() uint16_t MemoryResOutputO2Scratch()
const {
return mMemoryResOutputO2Scratch; }
169 GPUd()
void UnpackSaveNumber(int32_t
id);
213 void DumpTrackClusters(std::ostream& out,
bool non0StateOnly =
false,
bool noNDF0 =
false)
const;
215 template <
int32_t mergeType>
223 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;
230 GPUdi() int32_t SectorTrackInfoLocalTotal()
const {
return mSectorTrackInfoIndex[
NSECTORS]; }
231 GPUdi() int32_t SectorTrackInfoTotal()
const {
return mSectorTrackInfoIndex[2 *
NSECTORS]; }
239 GPUd()
void MergeBorderTracks(int32_t nBlocks, int32_t
nThreads, int32_t
iBlock, int32_t
iThread, int32_t iSector1,
const GPUTPCGMBorderTrack* B1, int32_t N1, int32_t iSector2,
const GPUTPCGMBorderTrack* B2, int32_t N2, uint8_t
mergeMode = 0);
245 template <
class T,
class S>
246 int64_t GetTrackLabelA(
const S& trk)
const;
248 int64_t GetTrackLabel(
const S& trk)
const;
252 GPUdi()
void hookEdge(int32_t u, int32_t
v);
257 int32_t* mTrackLinks =
nullptr;
258 int32_t* mTrackCCRoots;
260 uint32_t mNTotalSectorTracks = 0;
261 uint32_t mNMaxTracks = 0;
262 uint32_t mNMaxSingleSectorTracks = 0;
263 uint32_t mNMaxMergedTrackClusters = 0;
264 uint32_t mNMaxClusters = 0;
265 uint32_t mNMaxLooperMatches = 0;
267 uint16_t mMemoryResMemory = (uint16_t)-1;
268 uint16_t mMemoryResOutput = (uint16_t)-1;
269 uint16_t mMemoryResOutputState = (uint16_t)-1;
270 uint16_t mMemoryResOutputO2 = (uint16_t)-1;
271 uint16_t mMemoryResOutputO2Clus = (uint16_t)-1;
272 uint16_t mMemoryResOutputO2MC = (uint16_t)-1;
273 uint16_t mMemoryResOutputO2Scratch = (uint16_t)-1;
275 int32_t mNClusters = 0;
280 int32_t* mSectorTrackInfoIndex =
nullptr;
282 GPUAtomic(uint32_t) * mClusterAttachment =
nullptr;
283 o2::tpc::
TrackTPC* mOutputTracksTPCO2 =
nullptr;
284 uint32_t* mOutputClusRefsTPCO2 =
nullptr;
286 internal::MergeLooperParam* mLooperCandidates =
nullptr;
288 uint32_t* mTrackOrderAttach =
nullptr;
289 uint32_t* mTrackOrderProcess =
nullptr;
290 uint8_t* mClusterStateExt =
nullptr;
291 uint2* mClusRefTmp =
nullptr;
292 int32_t* mTrackIDs =
nullptr;
293 int32_t* mTmpSortMemory =
nullptr;
294 uint32_t* mTrackSort =
nullptr;
295 tmpSort* mTrackSortO2 =
nullptr;
296 GPUAtomic(uint32_t) * mSharedCount =
nullptr;
299 gputpcgmmergertypes::GPUTPCGMBorderRange* mBorderRangeMemory =
nullptr;
300 gputpcgmmergertypes::GPUTPCGMBorderRange* mBorderRange[
NSECTORS];
301 memory* mMemory =
nullptr;
302 uint32_t* mRetryRefitIds =
nullptr;
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