Project
Loading...
Searching...
No Matches
TrackingKernels.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
12
13#ifndef ITSTRACKINGGPU_TRACKINGKERNELS_H_
14#define ITSTRACKINGGPU_TRACKINGKERNELS_H_
15
16#include <array>
17#include <gsl/gsl>
18
26
27namespace o2::its
28{
31
32class CellSeed;
33struct CellNeighbour;
34template <int>
35class TrackSeed;
36class TrackingFrameInfo;
37class Tracklet;
38template <int>
39class IndexTableUtils;
40class Cluster;
41class TrackITSExt;
42class ExternalAllocator;
43
44template <int NLayers>
47 const typename ROFMaskTable<NLayers>::View& rofMask,
48 const int linkId,
49 const int fromLayer,
50 const int toLayer,
51 const typename ROFOverlapTable<NLayers>::View& rofOverlaps,
52 const typename ROFVertexLookupTable<NLayers>::View& vertexLUT,
53 const int vertexId,
54 const Vertex* vertices,
55 const Cluster** clusters,
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,
63 const int capacity,
64 gsl::span<int*> trackletsLUTsHost,
65 const bool selectUPCVertices,
66 const float NSigmaCut,
67 const typename TrackingTopology<NLayers>::View topology,
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,
76 gpu::Streams& streams);
77
78 static int computeCellsHandler(const Cluster** sortedClusters,
79 const Cluster** unsortedClusters,
80 const TrackingFrameInfo** tfInfo,
82 int** trackletsLUT,
83 const int nTracklets,
84 const int cellTopologyId,
85 const typename TrackingTopology<NLayers>::View topology,
87 const int capacity,
88 int* cellsLUTsHost,
89 const float bz,
90 const float maxChi2ClusterAttachment,
91 const float cellDeltaTanLambdaSigma,
92 const float nSigmaCut,
93 const float* layerxX0,
95 gpu::Streams& streams);
96
97 static void computeCellNeighboursHandler(CellSeed** cellsLayersDevice,
98 int** cellsLUTs,
99 CellNeighbour* cellNeighbours,
100 int* outputCounter,
101 const int capacity,
102 const int sourceCellTopologyId,
103 const int targetCellTopologyId,
104 const float maxChi2ClusterAttachment,
105 const float bz,
106 const unsigned int nCells,
109
110 static void processNeighboursHandler(const int startLevel,
111 const int startCellTopologyId,
112 CellSeed** allCellSeeds,
113 CellSeed* currentCellSeeds,
114 const int* currentCellTopologyIds,
115 const int* currentCellIds,
116 const int* nCells,
117 const unsigned char** usedClusters,
118 CellNeighbour** neighbours,
119 int** neighboursDeviceLUTs,
120 const TrackingFrameInfo** foundTrackingFrameInfo,
121 TrackSeed<NLayers>* seedsDevice,
122 const int seedsCapacity,
123 int& seedsCursor,
124 CapacityEstimator& estimator,
125 const int iteration,
126 const float bz,
127 const float MaxChi2ClusterAttachment,
128 const float maxChi2NDF,
129 const int maxHoles,
130 const int minSeedingClusters,
131 const LayerMask holeLayerMask,
132 const LayerMask nonSeedingLayerMask,
133 const float* layerxX0,
134 const o2::base::Propagator* propagator,
135 const o2::base::PropagatorF::MatCorrType matCorrType,
137
139 const TrackingFrameInfo** foundTrackingFrameInfo,
140 const Cluster** unsortedClusters,
142 const typename ROFMaskTable<NLayers>::View& rofMask,
143 const typename ROFOverlapTable<NLayers>::View& rofOverlaps,
144 const Cluster** clusters,
145 const unsigned char** usedClusters,
146 const int** clustersIndexTables,
147 const int** ROFClusters,
148 o2::its::TrackITSExt* tracks,
149 int* trackIndices,
150 int* trackSeedIndices,
151 int* outputCounter,
152 const int trackCapacity,
155 const float* layerRadii,
156 const float* minPts,
157 const float* layerxX0,
158 const unsigned int nSeeds,
159 const float Bz,
160 const float maxChi2ClusterAttachment,
161 const float maxChi2NDF,
162 const int reseedIfShorter,
163 const bool repeatRefitOut,
164 const bool shiftRefToCluster,
165 const int nLayers,
166 const int phiBins,
167 const int maxHypotheses,
168 const bool extendTop,
169 const bool extendBot,
170 const float nSigmaCutPhi,
171 const float nSigmaCutZ,
172 const o2::base::Propagator* propagator,
173 const o2::base::PropagatorF::MatCorrType matCorrType,
175};
176
178
180 int* neighboursLUT,
181 const int nTargetCells,
182 const int capacity,
185
186} // namespace o2::its
187#endif // ITSTRACKINGGPU_TRACKINGKERNELS_H_
Cross-timeframe output-size prediction.
int nClusters
HMPID cluster implementation.
Definition Cluster.h:27
CellSeed: connections of three clusters.
Definition Cell.h:81
GLuint GLuint stream
Definition glcorearb.h:1806
const bool const int nLayers
void resetOutputCounterHandler(int *outputCounter, gpu::Stream &stream)
TrackExtensionHypothesis< NLayers > int const int maxHypotheses
const bool const bool extendBot
const bool extendTop
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