13#ifndef ITSTRACKINGGPU_TRACKINGKERNELS_H_
14#define ITSTRACKINGGPU_TRACKINGKERNELS_H_
36class TrackingFrameInfo;
42class ExternalAllocator;
56 const std::vector<unsigned int>&
nClusters,
57 const int** ROFClusters,
58 const unsigned char** usedClusters,
59 const int** clustersIndexTables,
61 gsl::span<Tracklet*> spanTracklets,
62 gsl::span<int> nTracklets,
64 gsl::span<int*> trackletsLUTsHost,
65 const bool selectUPCVertices,
66 const float NSigmaCut,
68 bounded_vector<float>& linkPhiCuts,
69 const float resolutionPV,
70 std::array<float, NLayers>& minR,
71 std::array<float, NLayers>& maxR,
72 bounded_vector<float>& resolutions,
73 std::vector<float>& radii,
74 bounded_vector<float>& linkMSAngles,
79 const Cluster** unsortedClusters,
84 const int cellTopologyId,
90 const float maxChi2ClusterAttachment,
91 const float cellDeltaTanLambdaSigma,
92 const float nSigmaCut,
93 const float* layerxX0,
102 const int sourceCellTopologyId,
103 const int targetCellTopologyId,
104 const float maxChi2ClusterAttachment,
106 const unsigned int nCells,
111 const int startCellTopologyId,
114 const int* currentCellTopologyIds,
115 const int* currentCellIds,
117 const unsigned char** usedClusters,
119 int** neighboursDeviceLUTs,
122 const int seedsCapacity,
127 const float MaxChi2ClusterAttachment,
128 const float maxChi2NDF,
130 const int minSeedingClusters,
133 const float* layerxX0,
140 const Cluster** unsortedClusters,
145 const unsigned char** usedClusters,
146 const int** clustersIndexTables,
147 const int** ROFClusters,
150 int* trackSeedIndices,
152 const int trackCapacity,
155 const float* layerRadii,
157 const float* layerxX0,
158 const unsigned int nSeeds,
160 const float maxChi2ClusterAttachment,
161 const float maxChi2NDF,
162 const int reseedIfShorter,
163 const bool repeatRefitOut,
164 const bool shiftRefToCluster,
170 const float nSigmaCutPhi,
171 const float nSigmaCutZ,
181 const int nTargetCells,
Cross-timeframe output-size prediction.
HMPID cluster implementation.
CellSeed: connections of three clusters.
const bool const int nLayers
void resetOutputCounterHandler(int *outputCounter, gpu::Stream &stream)
TrackExtensionHypothesis< NLayers > int const int maxHypotheses
const bool const bool extendBot
const track::TrackFitContext< NLayers > const TrackFollowContext< NLayers > const bool TrackExtensionHypothesis< NLayers > * activeHypotheses
int finalizeCellNeighboursHandler(CellNeighbour *cellNeighbours, int *neighboursLUT, const int nTargetCells, const int capacity, o2::its::ExternalAllocator *alloc, gpu::Stream &stream)
const track::TrackFitContext< NLayers > const TrackFollowContext< NLayers > const bool TrackExtensionHypothesis< NLayers > TrackExtensionHypothesis< NLayers > * nextHypotheses
std::pmr::vector< T > bounded_vector
Common utility functions.
static int 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 Cluster **clusters, const 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, const int capacity, 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)
static void computeCellNeighboursHandler(CellSeed **cellsLayersDevice, int **cellsLUTs, CellNeighbour *cellNeighbours, int *outputCounter, const int capacity, const int sourceCellTopologyId, const int targetCellTopologyId, const float maxChi2ClusterAttachment, const float bz, const unsigned int nCells, o2::its::ExternalAllocator *alloc, gpu::Stream &stream)
static void processNeighboursHandler(const int startLevel, const int startCellTopologyId, CellSeed **allCellSeeds, CellSeed *currentCellSeeds, const int *currentCellTopologyIds, const int *currentCellIds, const int *nCells, const unsigned char **usedClusters, CellNeighbour **neighbours, int **neighboursDeviceLUTs, const TrackingFrameInfo **foundTrackingFrameInfo, TrackSeed< NLayers > *seedsDevice, const int seedsCapacity, int &seedsCursor, CapacityEstimator &estimator, const int iteration, const float bz, const float MaxChi2ClusterAttachment, const float maxChi2NDF, const int maxHoles, const int minSeedingClusters, const LayerMask holeLayerMask, const LayerMask nonSeedingLayerMask, const float *layerxX0, const o2::base::Propagator *propagator, const o2::base::PropagatorF::MatCorrType matCorrType, o2::its::ExternalAllocator *alloc)
static int 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, int *trackSeedIndices, int *outputCounter, const int trackCapacity, TrackExtensionHypothesis< NLayers > *activeHypotheses, TrackExtensionHypothesis< NLayers > *nextHypotheses, const float *layerRadii, const float *minPts, const float *layerxX0, const unsigned int nSeeds, 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)
static int 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, const int capacity, int *cellsLUTsHost, const float bz, const float maxChi2ClusterAttachment, const float cellDeltaTanLambdaSigma, const float nSigmaCut, const float *layerxX0, o2::its::ExternalAllocator *alloc, gpu::Streams &streams)
std::vector< Cluster > clusters
std::vector< Cell > cells
std::vector< Tracklet64 > tracklets