15#ifndef O2_GPU_DECODE_ZS_H
16#define O2_GPU_DECODE_ZS_H
29class GPUTPCClusterFinder;
56 GPUhdi() constexpr static gpudatatypes::RecoStep GetRecoStep()
75 GPUhdi() constexpr static gpudatatypes::RecoStep GetRecoStep()
89 template <
class Decoder>
96 GPUdi() static const uint8_t* ConsumeBytes(const uint8_t*&
page,
size_t nbytes)
98 const uint8_t* oldPage =
page;
103 GPUdi() static uint8_t ConsumeByte(const uint8_t*&
page)
108 template <
typename T>
109 GPUdi() static const T* ConsumeHeader(const uint8_t*&
page)
111 assert(
size_t(
page) %
alignof(T) == 0);
112 return reinterpret_cast<const T*
>(ConsumeBytes(
page,
sizeof(T)));
115 template <
typename T = u
int8_t>
121 assert((
size_t(
page) +
offset) %
alignof(T) == 0);
122 return reinterpret_cast<const T*
>(
page +
offset);
125 GPUdi() static
float ADCToFloat(uint32_t
adc, uint32_t decodeMask,
float decodeBitsFactor)
127 return float(
adc & decodeMask) * decodeBitsFactor;
143 template <int32_t iKernel = defaultKernel,
typename... Args>
148 GPUd() static
void GetChannelBitmask(const tpc::zerosupp_link_based::CommonHeader& tbHdr, uint32_t* chan);
149 GPUd() static
bool ChannelIsActive(const uint32_t* chan, uint8_t chanIndex);
151 GPUd() static
void DecodeTB(
GPUSharedMemory& smem,
DecodeCtx& ctx, const uint8_t* adcData, uint32_t nAdc, const uint32_t* channelMask, int32_t timeBin, int32_t cru, int32_t fecInPartition);
166 uint16_t samplesPerLinkEnd[MaxNLinksPerTimebin];
167 uint8_t linkIds[MaxNLinksPerTimebin];
168 uint8_t rawFECChannels[MaxNLinksPerTimebin * 80];
171 template <int32_t iKernel = defaultKernel,
typename... Args>
176 GPUd() static
bool ChannelIsActive(const uint8_t* chan, uint16_t chanIndex);
181 template <
bool PayloadExtendsToNextPage>
182 GPUd() static int16_t DecodeTB(
GPUSharedMemory& smem,
DecodeCtx& ctx, const
header::RAWDataHeader* rawDataHeader, int32_t cru, uint16_t nSamplesLeftInPage, const uint8_t* payloadEnd, const uint8_t* nextPage);
std::vector< std::string > header
#define GPUglobalconstexpr()
#define GPUCA_GET_THREAD_COUNT(...)
definitions to deal with the link based zero suppression format
Definitions of TPC Zero Suppression Data Headers.
int32_t int32_t int32_t processorType & processors
static GPUglobalconstexpr() int32_t DECODE_BITS
GPUTPCClusterFinder processorType
GPUdi() static uint8_t ConsumeByte(const uint8_t *&page)
GPUdi() static const T *Peek(const uint8_t *page
GPUdi() static const T *ConsumeHeader(const uint8_t *&page)
GPUhdi() static processorType *Processor(GPUConstantMem &processors)
GPUhdi() const expr static gpudatatypes
static GPUglobalconstexpr() int32_t DECODE_BITS
static GPUSharedMemory int32_t int32_t int32_t iBlock
GPUd() static void Thread(int32_t nBlocks
static GPUSharedMemory int32_t nBlocks
GPUhdi() const expr static gpudatatypes
int32_t int32_t int32_t GPUSharedMemory processorType & clusterer
static GPUSharedMemory int32_t int32_t nThreads
static GPUSharedMemory int32_t int32_t int32_t int32_t iThread
static GPUSharedMemory int32_t int32_t int32_t int32_t int32_t firstHBF
int32_t int32_t int32_t GPUSharedMemory & smem
int32_t int32_t int32_t GPUSharedMemory processorType Args args
static GPUSharedMemory int32_t int32_t int32_t int32_t int32_t int32_t tpcTimeBinCut
static GPUSharedMemory & s
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
processorType & clusterer
GPUCA_SHARED_STORAGE(uint32_t ZSPage[o2::tpc::TPCZSHDR::TPC_ZS_PAGE_SIZE/sizeof(uint32_t)])
uint32_t RowClusterOffset[o2::tpc::TPCZSHDR::TPC_MAX_ZS_ROW_IN_ENDPOINT]
GPUAtomic(uint32_t) rowOffsetCounter
coder decode(ctfImage, triggersD, clustersD)