13#ifndef ITSTRACKINGGPU_TRACKINGKERNELS_H_
14#define ITSTRACKINGGPU_TRACKINGKERNELS_H_
22class ExternalAllocator;
30GPUd() bool fitTrack(TrackITSExt& track,
39 TrackingFrameInfo** tfInfos,
40 const
o2::base::Propagator* prop,
43template <
int nLayers = 7>
44GPUg()
void fitTrackSeedsKernel(
46 const TrackingFrameInfo** foundTrackingFrameInfo,
47 o2::its::TrackITSExt* tracks,
49 const
unsigned int nSeeds,
52 float maxChi2ClusterAttachment,
54 const
o2::base::Propagator* propagator,
59template <
int nLayers = 7>
61 const uint8_t* multMask,
72 const int** ROFClusters,
73 const unsigned char** usedClusters,
74 const int** clustersIndexTables,
76 gsl::span<int*> trackletsLUTsHost,
78 const float NSigmaCut,
80 const float resolutionPV,
81 std::array<float, nLayers>& minR,
82 std::array<float, nLayers>& maxR,
84 std::vector<float>& radii,
90template <
int nLayers = 7>
92 const uint8_t* multMask,
103 const int** ROFClusters,
104 const unsigned char** usedClusters,
105 const int** clustersIndexTables,
107 gsl::span<Tracklet*> spanTracklets,
108 gsl::span<int> nTracklets,
110 gsl::span<int*> trackletsLUTsHost,
112 const float NSigmaCut,
114 const float resolutionPV,
115 std::array<float, nLayers>& minR,
116 std::array<float, nLayers>& maxR,
118 std::vector<float>& radii,
125 const Cluster** unsortedClusters,
129 const int nTracklets,
132 int** cellsLUTsDeviceArray,
136 const float maxChi2ClusterAttachment,
137 const float cellDeltaTanLambdaSigma,
138 const float nSigmaCut,
143 const Cluster** unsortedClusters,
147 const int nTracklets,
150 int** cellsLUTsDeviceArray,
154 const float maxChi2ClusterAttachment,
155 const float cellDeltaTanLambdaSigma,
156 const float nSigmaCut,
164 int* neighboursIndexTable,
167 const float maxChi2ClusterAttachment,
169 const int layerIndex,
170 const unsigned int nCells,
171 const unsigned int nCellsNext,
172 const int maxCellNeighbours,
180 int* neighboursIndexTable,
183 const float maxChi2ClusterAttachment,
185 const int layerIndex,
186 const unsigned int nCells,
187 const unsigned int nCellsNext,
188 const int maxCellNeighbours,
197template <
int nLayers = 7>
199 const int startLevel,
202 std::array<int, nLayers - 2>& nCells,
203 const unsigned char** usedClusters,
204 std::array<int*, nLayers - 2>& neighbours,
205 gsl::span<int*> neighboursDeviceLUTs,
210 const float MaxChi2ClusterAttachment,
211 const float maxChi2NDF,
220 std::vector<float>& minPtsHost,
221 const unsigned int nSeeds,
223 const int startLevel,
224 float maxChi2ClusterAttachment,
GLenum GLuint GLint GLint layer
int filterCellNeighboursHandler(gpuPair< int, int > *, int *, unsigned int, o2::its::ExternalAllocator *=nullptr)
std::pmr::vector< T > bounded_vector
void countCellsHandler(const Cluster **sortedClusters, const Cluster **unsortedClusters, const TrackingFrameInfo **tfInfo, Tracklet **tracklets, int **trackletsLUT, const int nTracklets, const int layer, CellSeed *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)
void computeTrackletsInROFsHandler(const IndexTableUtils *utils, const uint8_t *multMask, 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, const int nBlocks, const int nThreads, gpu::Streams &streams)
void computeCellNeighboursHandler(CellSeed **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)
void computeCellsHandler(const Cluster **sortedClusters, const Cluster **unsortedClusters, const TrackingFrameInfo **tfInfo, Tracklet **tracklets, int **trackletsLUT, const int nTracklets, const int layer, CellSeed *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)
unsigned int countCellNeighboursHandler(CellSeed **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)
void trackSeedHandler(CellSeed *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 processNeighboursHandler(const int startLayer, const int startLevel, CellSeed **allCellSeeds, CellSeed *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 > &seedsHost, o2::its::ExternalAllocator *, const float bz, const float MaxChi2ClusterAttachment, const float maxChi2NDF, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, const int nBlocks, const int nThreads)
void countTrackletsInROFsHandler(const IndexTableUtils *utils, const uint8_t *multMask, 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, const int nBlocks, const int nThreads, gpu::Streams &streams)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Common utility functions.
std::vector< Cluster > clusters
std::vector< Cell > cells
std::vector< Tracklet64 > tracklets