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>
212 const Cluster** unsortedClusters,
214 const std::vector<float>& layerRadiiHost,
215 const std::vector<float>& minPtsHost,
216 const unsigned int nSeeds,
218 const int startLevel,
219 const float maxChi2ClusterAttachment,
220 const float maxChi2NDF,
221 const int reseedIfShorter,
222 const bool shiftRefToCluster,
HMPID cluster implementation.
GLenum GLuint GLint GLint layer
std::pair< T1, T2 > gpuPair
void trackSeedHandler(CellSeed< nLayers > *trackSeeds, const TrackingFrameInfo **foundTrackingFrameInfo, const Cluster **unsortedClusters, o2::its::TrackITSExt *tracks, const std::vector< float > &layerRadiiHost, const std::vector< float > &minPtsHost, const unsigned int nSeeds, const float Bz, const int startLevel, const float maxChi2ClusterAttachment, const float maxChi2NDF, const int reseedIfShorter, const bool shiftRefToCluster, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, const int nBlocks, const int nThreads)
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 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