Project
Loading...
Searching...
No Matches
VertexingKernels.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_VERTEXINGKERNELS_H_
14#define ITSTRACKINGGPU_VERTEXINGKERNELS_H_
15
16#include <cstdint>
17#include <gsl/span>
18#include <array>
20#include "ITStracking/Cluster.h"
23
24namespace o2::its
25{
26
28template <int32_t nLayers>
30 const uint8_t* GPUrestrict() multMask,
31 const int32_t nRofs,
32 const int32_t deltaROF,
33 const int32_t* GPUrestrict() rofPV,
34 const int32_t vertPerRofThreshold,
36 const uint32_t nClusters,
37 const int32_t** GPUrestrict() ROFClusters,
38 const uint8_t** GPUrestrict() usedClusters,
39 const int32_t** GPUrestrict() clustersIndexTables,
40 int32_t** trackletsPerClusterLUTs,
41 int32_t** trackletsPerClusterSumLUTs,
42 int32_t** trackletsPerROF,
43 const std::array<int32_t*, 2>& trackletsPerClusterLUTsHost,
44 const std::array<int32_t*, 2>& trackletsPerClusterSumLUTsHost,
45 const int32_t iteration,
46 const float phiCut,
47 const int32_t maxTrackletsPerCluster,
48 const int32_t nBlocks,
49 const int32_t nThreads,
50 gpu::Streams& streams);
51
52template <int32_t nLayers>
54 const uint8_t* GPUrestrict() multMask,
55 const int32_t nRofs,
56 const int32_t deltaROF,
57 const int32_t* GPUrestrict() rofPV,
58 const int vertPerRofThreshold,
60 const uint32_t nClusters,
61 const int32_t** GPUrestrict() ROFClusters,
62 const uint8_t** GPUrestrict() usedClusters,
63 const int32_t** GPUrestrict() clustersIndexTables,
64 Tracklet** GPUrestrict() foundTracklets,
65 const int32_t** GPUrestrict() trackletsPerClusterLUTs,
66 const int32_t** GPUrestrict() trackletsPerClusterSumLUTs,
67 const int32_t** GPUrestrict() trackletsPerROF,
68 const int32_t iteration,
69 const float phiCut,
70 const int32_t maxTrackletsPerCluster,
71 const int32_t nBlocks,
72 const int32_t nThreads,
73 gpu::Streams& streams);
74
76void countTrackletsMatchingInROFsHandler(const int32_t nRofs,
77 const int32_t deltaROF,
78 const uint32_t nClusters,
79 const int32_t** GPUrestrict() ROFClusters,
81 uint8_t** GPUrestrict() usedClusters,
82 const Tracklet** GPUrestrict() foundTracklets,
83 uint8_t* GPUrestrict() usedTracklets,
84 const int32_t** GPUrestrict() trackletsPerClusterLUTs,
85 const int32_t** GPUrestrict() trackletsPerClusterSumLUTs,
86 int32_t* GPUrestrict() linesPerClusterLUT,
87 int32_t* GPUrestrict() linesPerClusterSumLUT,
88 const int32_t iteration,
89 const float phiCut,
90 const float tanLambdaCut,
91 const int32_t nBlocks,
92 const int32_t nThreads,
93 gpu::Streams& streams);
94
96 const int32_t deltaROF,
97 const uint32_t nClusters,
98 const int32_t** GPUrestrict() ROFClusters,
100 const uint8_t** GPUrestrict() usedClusters,
101 const Tracklet** GPUrestrict() foundTracklets,
102 uint8_t* GPUrestrict() usedTracklets,
103 const int32_t** GPUrestrict() trackletsPerClusterLUTs,
104 const int32_t** GPUrestrict() trackletsPerClusterSumLUTs,
105 const int32_t* GPUrestrict() linesPerClusterSumLUT,
106 Line* GPUrestrict() lines,
107 const int32_t iteration,
108 const float phiCut,
109 const float tanLambdaCut,
110 const int32_t nBlocks,
111 const int32_t nThreads,
112 gpu::Streams& streams);
113
114} // namespace o2::its
115#endif
#define GPUrestrict()
int nClusters
void computeTrackletsMatchingInROFsHandler(const int32_t nRofs, const int32_t deltaROF, const uint32_t nClusters, const int32_t **GPUrestrict() ROFClusters, const Cluster **GPUrestrict() clusters, const uint8_t **GPUrestrict() usedClusters, const Tracklet **GPUrestrict() foundTracklets, uint8_t *GPUrestrict() usedTracklets, const int32_t **GPUrestrict() trackletsPerClusterLUTs, const int32_t **GPUrestrict() trackletsPerClusterSumLUTs, const int32_t *GPUrestrict() linesPerClusterSumLUT, Line *GPUrestrict() lines, const int32_t iteration, const float phiCut, const float tanLambdaCut, const int32_t nBlocks, const int32_t nThreads, gpu::Streams &streams)
void countTrackletsInROFsHandler(const IndexTableUtils< nLayers > *utils, const uint8_t *multMask, const int layer, 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, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads, gpu::Streams &streams)
void computeTrackletsInROFsHandler(const IndexTableUtils< nLayers > *utils, const uint8_t *multMask, const int layer, 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, o2::its::ExternalAllocator *alloc, const int nBlocks, const int nThreads, gpu::Streams &streams)
void countTrackletsMatchingInROFsHandler(const int32_t nRofs, const int32_t deltaROF, const uint32_t nClusters, const int32_t **GPUrestrict() ROFClusters, const Cluster **GPUrestrict() clusters, uint8_t **GPUrestrict() usedClusters, const Tracklet **GPUrestrict() foundTracklets, uint8_t *GPUrestrict() usedTracklets, const int32_t **GPUrestrict() trackletsPerClusterLUTs, const int32_t **GPUrestrict() trackletsPerClusterSumLUTs, int32_t *GPUrestrict() linesPerClusterLUT, int32_t *GPUrestrict() linesPerClusterSumLUT, const int32_t iteration, const float phiCut, const float tanLambdaCut, const int32_t nBlocks, const int32_t nThreads, gpu::Streams &streams)
Selection.
Common utility functions.
std::vector< Cluster > clusters