Project
Loading...
Searching...
No Matches
GPUTPCCFNoiseSuppression.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.
11
14
15#ifndef O2_GPU_NOISE_SUPPRESSION_H
16#define O2_GPU_NOISE_SUPPRESSION_H
17
18#include "clusterFinderDefs.h"
19#include "GPUGeneralKernels.h"
20#include "GPUConstantMem.h"
21#include "GPUTPCClusterFinder.h"
22#include "Array2D.h"
23#include "PackedCharge.h"
24
25namespace o2::gpu
26{
27
28struct ChargePos;
29
31{
32 public:
33 enum K : int32_t {
36 };
37 static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE = GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFNoiseSuppression);
42
45 {
46 return processors.tpcClusterer;
47 }
48
49 GPUhdi() constexpr static GPUDataTypes::RecoStep GetRecoStep()
50 {
51 return GPUDataTypes::RecoStep::TPCClusterFinding;
52 }
53
54 template <int32_t iKernel = defaultKernel, typename... Args>
55 GPUd() static void Thread(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, GPUSharedMemory& smem, processorType& clusterer, Args... args);
56
57 private:
58 static GPUd() void noiseSuppressionImpl(int32_t, int32_t, int32_t, int32_t, GPUSharedMemory&, const GPUSettingsRec&, const Array2D<PackedCharge>&, const Array2D<uint8_t>&, const ChargePos*, const uint32_t, uint8_t*);
59
60 static GPUd() void updatePeaksImpl(int32_t, int32_t, int32_t, int32_t, const ChargePos*, const uint8_t*, const uint32_t, Array2D<uint8_t>&);
61
62 static GPUdi() void checkForMinima(const float, const float, const float, PackedCharge, int32_t, uint64_t*, uint64_t*);
63
64 static GPUdi() void findMinima(const PackedCharge*, const uint16_t, const int32_t, int32_t, const float, const float, const float, uint64_t*, uint64_t*);
65
66 static GPUdi() void findPeaks(const uint8_t*, const uint16_t, const int32_t, int32_t, uint64_t*);
67
68 static GPUdi() bool keepPeak(uint64_t, uint64_t);
69
70 static GPUd() void findMinimaAndPeaks(const Array2D<PackedCharge>&, const Array2D<uint8_t>&, const GPUSettingsRec&, float, const ChargePos&, ChargePos*, PackedCharge*, uint64_t*, uint64_t*, uint64_t*);
71};
72
73} // namespace o2::gpu
74
75#endif
#define GPUCA_GET_THREAD_COUNT(...)
int32_t int32_t int32_t processorType & processors
GPUhdi() const expr static GPUDataTypes
int32_t int32_t int32_t GPUSharedMemory processorType & clusterer
static constexpr size_t SCRATCH_PAD_WORK_GROUP_SIZE
int32_t int32_t int32_t GPUSharedMemory & smem
GPUd() static void Thread(int32_t nBlocks
GPUhdi() static processorType *Processor(GPUConstantMem &processors)
int32_t int32_t int32_t GPUSharedMemory processorType Args args
#define SCRATCH_PAD_NOISE_N
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition glcorearb.h:2514