13#ifndef ITSTRACKINGGPU_TRACKINGKERNELS_H_
14#define ITSTRACKINGGPU_TRACKINGKERNELS_H_
28class TrackingFrameInfo;
34class ExternalAllocator;
36template <
int nLayers = 7>
38 const uint8_t* multMask,
50 const int** ROFClusters,
51 const unsigned char** usedClusters,
52 const int** clustersIndexTables,
54 gsl::span<int*> trackletsLUTsHost,
56 const float NSigmaCut,
58 const float resolutionPV,
59 std::array<float, nLayers>& minR,
60 std::array<float, nLayers>& maxR,
62 std::vector<float>& radii,
69template <
int nLayers = 7>
71 const uint8_t* multMask,
83 const int** ROFClusters,
84 const unsigned char** usedClusters,
85 const int** clustersIndexTables,
87 gsl::span<Tracklet*> spanTracklets,
88 gsl::span<int> nTracklets,
90 gsl::span<int*> trackletsLUTsHost,
92 const float NSigmaCut,
94 const float resolutionPV,
95 std::array<float, nLayers>& minR,
96 std::array<float, nLayers>& maxR,
98 std::vector<float>& radii,
105template <
int nLayers>
107 const Cluster** unsortedClusters,
111 const int nTracklets,
114 int** cellsLUTsDeviceArray,
118 const float maxChi2ClusterAttachment,
119 const float cellDeltaTanLambdaSigma,
120 const float nSigmaCut,
126template <
int nLayers>
128 const Cluster** unsortedClusters,
132 const int nTracklets,
135 int** cellsLUTsDeviceArray,
139 const float maxChi2ClusterAttachment,
140 const float cellDeltaTanLambdaSigma,
141 const float nSigmaCut,
146template <
int nLayers>
151 int* neighboursIndexTable,
154 const float maxChi2ClusterAttachment,
156 const int layerIndex,
157 const unsigned int nCells,
158 const unsigned int nCellsNext,
159 const int maxCellNeighbours,
165template <
int nLayers>
170 int* neighboursIndexTable,
173 const float maxChi2ClusterAttachment,
175 const int layerIndex,
176 const unsigned int nCells,
177 const unsigned int nCellsNext,
178 const int maxCellNeighbours,
189template <
int nLayers = 7>
191 const int startLevel,
194 std::array<int, nLayers - 2>& nCells,
195 const unsigned char** usedClusters,
196 std::array<int*, nLayers - 2>& neighbours,
197 gsl::span<int*> neighboursDeviceLUTs,
201 const float MaxChi2ClusterAttachment,
202 const float maxChi2NDF,
209template <
int nLayers = 7>
213 std::vector<float>& minPtsHost,
214 const unsigned int nSeeds,
216 const int startLevel,
217 float maxChi2ClusterAttachment,
HMPID cluster implementation.
GLenum GLuint GLint GLint layer
std::pair< T1, T2 > gpuPair
std::pmr::vector< T > bounded_vector
void countCellNeighboursHandler(CellSeed< nLayers > **cellsLayersDevice, int *neighboursLUTs, int **cellsLUTs, gpuPair< int, int > *cellNeighbours, int *neighboursIndexTable, const Tracklet **tracklets, const int deltaROF, const float maxChi2ClusterAttachment, const float bz, const int layerIndex, const unsigned int nCells, const unsigned int nCellsNext, const int maxCellNeighbours, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads, gpu::Stream &stream)
int filterCellNeighboursHandler(gpuPair< int, int > *, int *, unsigned int, gpu::Stream &, o2::its::ExternalAllocator *=nullptr)
void countTrackletsInROFsHandler(const IndexTableUtils< nLayers > *utils, const uint8_t *multMask, const int layer, const int startROF, const int endROF, const int maxROF, const int deltaROF, const int vertexId, const Vertex *vertices, const int *rofPV, const int nVertices, const Cluster **clusters, std::vector< unsigned int > nClusters, const int **ROFClusters, const unsigned char **usedClusters, const int **clustersIndexTables, int **trackletsLUTs, gsl::span< int * > trackletsLUTsHost, const int iteration, const float NSigmaCut, bounded_vector< float > &phiCuts, const float resolutionPV, std::array< float, nLayers > &minR, std::array< float, nLayers > &maxR, bounded_vector< float > &resolutions, std::vector< float > &radii, bounded_vector< float > &mulScatAng, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads, gpu::Streams &streams)
void trackSeedHandler(CellSeed< nLayers > *trackSeeds, const TrackingFrameInfo **foundTrackingFrameInfo, o2::its::TrackITSExt *tracks, std::vector< float > &minPtsHost, const unsigned int nSeeds, const float Bz, const int startLevel, float maxChi2ClusterAttachment, float maxChi2NDF, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, const int nBlocks, const int nThreads)
void computeTrackletsInROFsHandler(const IndexTableUtils< nLayers > *utils, const uint8_t *multMask, const int layer, const int startROF, const int endROF, const int maxROF, const int deltaROF, const int vertexId, const Vertex *vertices, const int *rofPV, const int nVertices, const Cluster **clusters, std::vector< unsigned int > nClusters, const int **ROFClusters, const unsigned char **usedClusters, const int **clustersIndexTables, Tracklet **tracklets, gsl::span< Tracklet * > spanTracklets, gsl::span< int > nTracklets, int **trackletsLUTs, gsl::span< int * > trackletsLUTsHost, const int iteration, const float NSigmaCut, bounded_vector< float > &phiCuts, const float resolutionPV, std::array< float, nLayers > &minR, std::array< float, nLayers > &maxR, bounded_vector< float > &resolutions, std::vector< float > &radii, bounded_vector< float > &mulScatAng, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads, gpu::Streams &streams)
void processNeighboursHandler(const int startLayer, const int startLevel, CellSeed< nLayers > **allCellSeeds, CellSeed< nLayers > *currentCellSeeds, std::array< int, nLayers - 2 > &nCells, const unsigned char **usedClusters, std::array< int *, nLayers - 2 > &neighbours, gsl::span< int * > neighboursDeviceLUTs, const TrackingFrameInfo **foundTrackingFrameInfo, bounded_vector< CellSeed< nLayers > > &seedsHost, const float bz, const float MaxChi2ClusterAttachment, const float maxChi2NDF, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads)
void computeCellsHandler(const Cluster **sortedClusters, const Cluster **unsortedClusters, const TrackingFrameInfo **tfInfo, Tracklet **tracklets, int **trackletsLUT, const int nTracklets, const int layer, CellSeed< nLayers > *cells, int **cellsLUTsDeviceArray, int *cellsLUTsHost, const int deltaROF, const float bz, const float maxChi2ClusterAttachment, const float cellDeltaTanLambdaSigma, const float nSigmaCut, const int nBlocks, const int nThreads, gpu::Streams &streams)
void computeCellNeighboursHandler(CellSeed< nLayers > **cellsLayersDevice, int *neighboursLUTs, int **cellsLUTs, gpuPair< int, int > *cellNeighbours, int *neighboursIndexTable, const Tracklet **tracklets, const int deltaROF, const float maxChi2ClusterAttachment, const float bz, const int layerIndex, const unsigned int nCells, const unsigned int nCellsNext, const int maxCellNeighbours, const int nBlocks, const int nThreads, gpu::Stream &stream)
void countCellsHandler(const Cluster **sortedClusters, const Cluster **unsortedClusters, const TrackingFrameInfo **tfInfo, Tracklet **tracklets, int **trackletsLUT, const int nTracklets, const int layer, CellSeed< nLayers > *cells, int **cellsLUTsDeviceArray, int *cellsLUTsHost, const int deltaROF, const float bz, const float maxChi2ClusterAttachment, const float cellDeltaTanLambdaSigma, const float nSigmaCut, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads, gpu::Streams &streams)
Common utility functions.
std::vector< Cluster > clusters
std::vector< Cell > cells
std::vector< Tracklet64 > tracklets