Project
Loading...
Searching...
No Matches
GPUTPCExtrapolationTracking.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 GPUTPCEXTRAPOLATIONTRACKING_H
16#define GPUTPCEXTRAPOLATIONTRACKING_H
17
18#include "GPUGeneralKernels.h"
19#include "GPUConstantMem.h"
20
21namespace o2::gpu
22{
23class GPUTPCTracker;
24
26{
27 public:
31
32 typedef GPUconstantref() GPUTPCTracker processorType;
33 GPUhdi() constexpr static GPUDataTypes::RecoStep GetRecoStep() { return GPUCA_RECO_STEP::TPCSectorTracking; }
34 GPUhdi() static processorType* Processor(GPUConstantMem& processors)
35 {
36 return processors.tpcTrackers;
37 }
38 template <int32_t iKernel = GPUKernelTemplate::defaultKernel>
39 GPUd() static void Thread(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, GPUsharedref() GPUSharedMemory& smem, processorType& tracker);
40
41 GPUd() static int32_t ExtrapolationTrackingSectorOrder(int32_t iSector);
42 GPUd() static void ExtrapolationTrackingSectorLeftRight(uint32_t iSector, uint32_t& left, uint32_t& right);
43
44 private:
45 GPUd() static int32_t PerformExtrapolationTrackingRun(GPUTPCTracker& tracker, GPUsharedref() GPUSharedMemory& smem, const GPUTPCTracker& sectorSource, int32_t iTrack, int32_t rowIndex, float angle, int32_t direction);
46 GPUd() static void PerformExtrapolationTracking(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, const GPUTPCTracker& tracker, GPUsharedref() GPUSharedMemory& smem, GPUTPCTracker& sectorTarget, bool right);
47};
48
50{
51 public:
52 typedef GPUconstantref() GPUTPCTracker processorType;
53 GPUhdi() constexpr static GPUDataTypes::RecoStep GetRecoStep() { return GPUCA_RECO_STEP::TPCSectorTracking; }
54 GPUhdi() static processorType* Processor(GPUConstantMem& processors)
55 {
56 return processors.tpcTrackers;
57 }
58 template <int32_t iKernel = GPUKernelTemplate::defaultKernel>
59 GPUd() static void Thread(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, GPUsharedref() GPUSharedMemory& smem, processorType& tracker, int32_t n);
60};
61
62} // namespace o2::gpu
63
64#endif // GPUTPCTRACKLETCONSTRUCTOR_H
#define GPUsharedref()
#define GPUCA_ROW_COUNT
int32_t int32_t int32_t processorType & processors
GPUhdi() static processorType *Processor(GPUConstantMem &processors)
typedef GPUconstantref() GPUTPCTracker processorType
GPUd() static void Thread(int32_t nBlocks
GPUd() static void Thread(int32_t nBlocks
typedef GPUconstantref() GPUTPCTracker processorType
GPUhdi() static processorType *Processor(GPUConstantMem &processors)
int32_t int32_t int32_t processorType & tracker
GLdouble n
Definition glcorearb.h:1982
GLdouble GLdouble right
Definition glcorearb.h:4077
GLfloat angle
Definition glcorearb.h:4071
CA_SHARED_STORAGE(GPUTPCRow mRows[GPUCA_ROW_COUNT])