13#ifndef ITSTRACKINGGPU_TRACKINGKERNELS_H_
14#define ITSTRACKINGGPU_TRACKINGKERNELS_H_
30class TrackingFrameInfo;
36class ExternalAllocator;
41 const int transitionId,
51 const int** ROFClusters,
52 const unsigned char** usedClusters,
53 const int** clustersIndexTables,
55 gsl::span<int*> trackletsLUTsHost,
56 const bool selectUPCVertices,
57 const float NSigmaCut,
60 const float resolutionPV,
61 std::array<float, NLayers>& minR,
62 std::array<float, NLayers>& maxR,
64 std::vector<float>& radii,
72 const int transitionId,
82 const int** ROFClusters,
83 const unsigned char** usedClusters,
84 const int** clustersIndexTables,
86 gsl::span<Tracklet*> spanTracklets,
87 gsl::span<int> nTracklets,
89 gsl::span<int*> trackletsLUTsHost,
90 const bool selectUPCVertices,
91 const float NSigmaCut,
94 const float resolutionPV,
95 std::array<float, NLayers>& minR,
96 std::array<float, NLayers>& maxR,
98 std::vector<float>& radii,
103template <
int NLayers>
105 const Cluster** unsortedClusters,
109 const int nTracklets,
110 const int cellTopologyId,
113 int** cellsLUTsDeviceArray,
116 const float maxChi2ClusterAttachment,
117 const float cellDeltaTanLambdaSigma,
118 const float nSigmaCut,
119 const std::vector<float>& layerxX0Host,
123template <
int NLayers>
125 const Cluster** unsortedClusters,
129 const int nTracklets,
130 const int cellTopologyId,
133 int** cellsLUTsDeviceArray,
136 const float maxChi2ClusterAttachment,
137 const float cellDeltaTanLambdaSigma,
138 const float nSigmaCut,
139 const std::vector<float>& layerxX0Host,
142template <
int NLayers>
144 int* neighboursCursor,
146 const int sourceCellTopologyId,
147 const int targetCellTopologyId,
148 const float maxChi2ClusterAttachment,
150 const unsigned int nCells,
155 const unsigned int nCells,
159template <
int NLayers>
161 int* neighboursCursor,
164 const int sourceCellTopologyId,
165 const int targetCellTopologyId,
166 const float maxChi2ClusterAttachment,
168 const unsigned int nCells,
177template <
int NLayers>
179 const int defaultCellTopologyId,
182 const int* currentCellTopologyIds,
183 const int* currentCellIds,
185 const unsigned char** usedClusters,
187 int** neighboursDeviceLUTs,
191 const float MaxChi2ClusterAttachment,
192 const float maxChi2NDF,
194 const int minTrackLength,
196 const std::vector<float>& layerxX0Host,
201template <
int NLayers>
204 const Cluster** unsortedClusters,
206 const std::vector<float>& layerRadiiHost,
207 const std::vector<float>& minPtsHost,
208 const std::vector<float>& layerxX0Host,
209 const unsigned int nSeeds,
211 const int startLevel,
212 const float maxChi2ClusterAttachment,
213 const float maxChi2NDF,
214 const int reseedIfShorter,
215 const bool repeatRefitOut,
216 const bool shiftRefToCluster,
221template <
int NLayers>
224 const Cluster** unsortedClusters,
227 const std::vector<float>& layerRadiiHost,
228 const std::vector<float>& minPtsHost,
229 const std::vector<float>& layerxX0Host,
230 const unsigned int nSeeds,
231 const unsigned int nTracks,
233 const int startLevel,
234 const float maxChi2ClusterAttachment,
235 const float maxChi2NDF,
236 const int reseedIfShorter,
237 const bool repeatRefitOut,
238 const bool shiftRefToCluster,
HMPID cluster implementation.
CellSeed: connections of three clusters.
void countTrackletsInROFsHandler(const IndexTableUtils< NLayers > *utils, const typename ROFMaskTable< NLayers >::View &rofMask, const int transitionId, const int fromLayer, const int toLayer, const typename ROFOverlapTable< NLayers >::View &rofOverlaps, const typename ROFVertexLookupTable< NLayers >::View &vertexLUT, const int vertexId, const Vertex *vertices, const int *rofPV, 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 bool selectUPCVertices, const float NSigmaCut, const typename TrackingTopology< NLayers >::View topology, bounded_vector< float > &transitionPhiCuts, const float resolutionPV, std::array< float, NLayers > &minR, std::array< float, NLayers > &maxR, bounded_vector< float > &resolutions, std::vector< float > &radii, bounded_vector< float > &transitionMSAngles, o2::its::ExternalAllocator *alloc, gpu::Streams &streams)
void countTrackSeedHandler(TrackSeed< NLayers > *trackSeeds, const TrackingFrameInfo **foundTrackingFrameInfo, const Cluster **unsortedClusters, int *seedLUT, const std::vector< float > &layerRadiiHost, const std::vector< float > &minPtsHost, const std::vector< float > &layerxX0Host, const unsigned int nSeeds, const float Bz, const int startLevel, const float maxChi2ClusterAttachment, const float maxChi2NDF, const int reseedIfShorter, const bool repeatRefitOut, const bool shiftRefToCluster, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, o2::its::ExternalAllocator *alloc)
void countCellsHandler(const Cluster **sortedClusters, const Cluster **unsortedClusters, const TrackingFrameInfo **tfInfo, Tracklet **tracklets, int **trackletsLUT, const int nTracklets, const int cellTopologyId, const typename TrackingTopology< NLayers >::View topology, CellSeed *cells, int **cellsLUTsDeviceArray, int *cellsLUTsHost, const float bz, const float maxChi2ClusterAttachment, const float cellDeltaTanLambdaSigma, const float nSigmaCut, const std::vector< float > &layerxX0Host, o2::its::ExternalAllocator *alloc, gpu::Streams &streams)
void processNeighboursHandler(const int startLevel, const int defaultCellTopologyId, CellSeed **allCellSeeds, CellSeed *currentCellSeeds, const int *currentCellTopologyIds, const int *currentCellIds, const int *nCells, const unsigned char **usedClusters, CellNeighbour **neighbours, int **neighboursDeviceLUTs, const TrackingFrameInfo **foundTrackingFrameInfo, bounded_vector< TrackSeed< NLayers > > &seedsHost, const float bz, const float MaxChi2ClusterAttachment, const float maxChi2NDF, const int maxHoles, const int minTrackLength, const LayerMask holeLayerMask, const std::vector< float > &layerxX0Host, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, o2::its::ExternalAllocator *alloc)
std::pair< T1, T2 > gpuPair
void computeCellsHandler(const Cluster **sortedClusters, const Cluster **unsortedClusters, const TrackingFrameInfo **tfInfo, Tracklet **tracklets, int **trackletsLUT, const int nTracklets, const int cellTopologyId, const typename TrackingTopology< NLayers >::View topology, CellSeed *cells, int **cellsLUTsDeviceArray, int *cellsLUTsHost, const float bz, const float maxChi2ClusterAttachment, const float cellDeltaTanLambdaSigma, const float nSigmaCut, const std::vector< float > &layerxX0Host, gpu::Streams &streams)
std::pmr::vector< T > bounded_vector
int filterCellNeighboursHandler(gpuPair< int, int > *, int *, unsigned int, gpu::Stream &, o2::its::ExternalAllocator *=nullptr)
void scanCellNeighboursHandler(int *neighboursCursor, int *neighboursLUT, const unsigned int nCells, o2::its::ExternalAllocator *alloc, gpu::Stream &stream)
void computeTrackletsInROFsHandler(const IndexTableUtils< NLayers > *utils, const typename ROFMaskTable< NLayers >::View &rofMask, const int transitionId, const int fromLayer, const int toLayer, const typename ROFOverlapTable< NLayers >::View &rofOverlaps, const typename ROFVertexLookupTable< NLayers >::View &vertexLUT, const int vertexId, const Vertex *vertices, const int *rofPV, 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 bool selectUPCVertices, const float NSigmaCut, const typename TrackingTopology< NLayers >::View topology, bounded_vector< float > &transitionPhiCuts, const float resolutionPV, std::array< float, NLayers > &minR, std::array< float, NLayers > &maxR, bounded_vector< float > &resolutions, std::vector< float > &radii, bounded_vector< float > &transitionMSAngles, o2::its::ExternalAllocator *alloc, gpu::Streams &streams)
void countCellNeighboursHandler(CellSeed **cellsLayersDevice, int *neighboursCursor, int **cellsLUTs, const int sourceCellTopologyId, const int targetCellTopologyId, const float maxChi2ClusterAttachment, const float bz, const unsigned int nCells, gpu::Stream &stream)
void computeCellNeighboursHandler(CellSeed **cellsLayersDevice, int *neighboursCursor, int **cellsLUTs, CellNeighbour *cellNeighbours, const int sourceCellTopologyId, const int targetCellTopologyId, const float maxChi2ClusterAttachment, const float bz, const unsigned int nCells, gpu::Stream &stream)
void computeTrackSeedHandler(TrackSeed< NLayers > *trackSeeds, const TrackingFrameInfo **foundTrackingFrameInfo, const Cluster **unsortedClusters, o2::its::TrackITSExt *tracks, const int *seedLUT, const std::vector< float > &layerRadiiHost, const std::vector< float > &minPtsHost, const std::vector< float > &layerxX0Host, const unsigned int nSeeds, const unsigned int nTracks, const float Bz, const int startLevel, const float maxChi2ClusterAttachment, const float maxChi2NDF, const int reseedIfShorter, const bool repeatRefitOut, const bool shiftRefToCluster, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, o2::its::ExternalAllocator *alloc)
Common utility functions.
std::vector< Cluster > clusters
std::vector< Cell > cells
std::vector< Tracklet64 > tracklets