13#ifndef ITSTRACKINGGPU_TRACKINGKERNELS_H_
14#define ITSTRACKINGGPU_TRACKINGKERNELS_H_
32class TrackingFrameInfo;
38class ExternalAllocator;
53 const int** ROFClusters,
54 const unsigned char** usedClusters,
55 const int** clustersIndexTables,
57 gsl::span<int*> trackletsLUTsHost,
58 const bool selectUPCVertices,
59 const float NSigmaCut,
62 const float resolutionPV,
63 std::array<float, NLayers>& minR,
64 std::array<float, NLayers>& maxR,
66 std::vector<float>& radii,
84 const int** ROFClusters,
85 const unsigned char** usedClusters,
86 const int** clustersIndexTables,
88 gsl::span<Tracklet*> spanTracklets,
89 gsl::span<int> nTracklets,
91 gsl::span<int*> trackletsLUTsHost,
92 const bool selectUPCVertices,
93 const float NSigmaCut,
96 const float resolutionPV,
97 std::array<float, NLayers>& minR,
98 std::array<float, NLayers>& maxR,
100 std::vector<float>& radii,
105template <
int NLayers>
107 const Cluster** unsortedClusters,
111 const int nTracklets,
112 const int cellTopologyId,
115 int** cellsLUTsDeviceArray,
118 const float maxChi2ClusterAttachment,
119 const float cellDeltaTanLambdaSigma,
120 const float nSigmaCut,
121 const std::vector<float>& layerxX0Host,
125template <
int NLayers>
127 const Cluster** unsortedClusters,
131 const int nTracklets,
132 const int cellTopologyId,
135 int** cellsLUTsDeviceArray,
138 const float maxChi2ClusterAttachment,
139 const float cellDeltaTanLambdaSigma,
140 const float nSigmaCut,
141 const std::vector<float>& layerxX0Host,
144template <
int NLayers>
146 int* neighboursCursor,
148 const int sourceCellTopologyId,
149 const int targetCellTopologyId,
150 const float maxChi2ClusterAttachment,
152 const unsigned int nCells,
157 const unsigned int nCells,
161template <
int NLayers>
163 int* neighboursCursor,
166 const int sourceCellTopologyId,
167 const int targetCellTopologyId,
168 const float maxChi2ClusterAttachment,
170 const unsigned int nCells,
179template <
int NLayers>
181 const int defaultCellTopologyId,
184 const int* currentCellTopologyIds,
185 const int* currentCellIds,
187 const unsigned char** usedClusters,
189 int** neighboursDeviceLUTs,
193 const float MaxChi2ClusterAttachment,
194 const float maxChi2NDF,
196 const int minSeedingClusters,
199 const std::vector<float>& layerxX0Host,
204template <
int NLayers>
207 const Cluster** unsortedClusters,
209 const std::vector<float>& layerRadiiHost,
210 const std::vector<float>& minPtsHost,
211 const std::vector<float>& layerxX0Host,
212 const unsigned int nSeeds,
214 const float maxChi2ClusterAttachment,
215 const float maxChi2NDF,
216 const int reseedIfShorter,
217 const bool repeatRefitOut,
218 const bool shiftRefToCluster,
223template <
int NLayers>
226 const Cluster** unsortedClusters,
231 const unsigned char** usedClusters,
232 const int** clustersIndexTables,
233 const int** ROFClusters,
239 const std::vector<float>& layerRadiiHost,
240 const std::vector<float>& minPtsHost,
241 const std::vector<float>& layerxX0Host,
242 const unsigned int nSeeds,
243 const unsigned int nTracks,
245 const float maxChi2ClusterAttachment,
246 const float maxChi2NDF,
247 const int reseedIfShorter,
248 const bool repeatRefitOut,
249 const bool shiftRefToCluster,
255 const float nSigmaCutPhi,
256 const float nSigmaCutZ,
HMPID cluster implementation.
CellSeed: connections of three clusters.
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 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)
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
const bool const int nLayers
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)
TrackExtensionHypothesis< NLayers > int const int maxHypotheses
const bool const bool extendBot
void countTrackletsInROFsHandler(const IndexTableUtils< NLayers > *utils, const typename ROFMaskTable< NLayers >::View &rofMask, const int linkId, 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 > &linkPhiCuts, const float resolutionPV, std::array< float, NLayers > &minR, std::array< float, NLayers > &maxR, bounded_vector< float > &resolutions, std::vector< float > &radii, bounded_vector< float > &linkMSAngles, o2::its::ExternalAllocator *alloc, gpu::Streams &streams)
void computeTrackletsInROFsHandler(const IndexTableUtils< NLayers > *utils, const typename ROFMaskTable< NLayers >::View &rofMask, const int linkId, 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 > &linkPhiCuts, const float resolutionPV, std::array< float, NLayers > &minR, std::array< float, NLayers > &maxR, bounded_vector< float > &resolutions, std::vector< float > &radii, bounded_vector< float > &linkMSAngles, 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 minSeedingClusters, const LayerMask holeLayerMask, const LayerMask nonSeedingLayerMask, const std::vector< float > &layerxX0Host, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, o2::its::ExternalAllocator *alloc)
const track::TrackFitContext< NLayers > const TrackFollowContext< NLayers > const bool TrackExtensionHypothesis< NLayers > * activeHypotheses
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)
const track::TrackFitContext< NLayers > const TrackFollowContext< NLayers > const bool TrackExtensionHypothesis< NLayers > TrackExtensionHypothesis< NLayers > * nextHypotheses
void computeTrackSeedHandler(TrackSeed< NLayers > *trackSeeds, const TrackingFrameInfo **foundTrackingFrameInfo, const Cluster **unsortedClusters, const IndexTableUtils< NLayers > *utils, const typename ROFMaskTable< NLayers >::View &rofMask, const typename ROFOverlapTable< NLayers >::View &rofOverlaps, const Cluster **clusters, const unsigned char **usedClusters, const int **clustersIndexTables, const int **ROFClusters, o2::its::TrackITSExt *tracks, int *trackIndices, const int *seedLUT, TrackExtensionHypothesis< NLayers > *activeHypotheses, TrackExtensionHypothesis< NLayers > *nextHypotheses, 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 float maxChi2ClusterAttachment, const float maxChi2NDF, const int reseedIfShorter, const bool repeatRefitOut, const bool shiftRefToCluster, const int nLayers, const int phiBins, const int maxHypotheses, const bool extendTop, const bool extendBot, const float nSigmaCutPhi, const float nSigmaCutZ, 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