12#ifndef ALICEO2_ITSMFT_TRACKING_SURFACETRACKSTATE_H_
13#define ALICEO2_ITSMFT_TRACKING_SURFACETRACKSTATE_H_
49 GPUhdi() constexpr
bool hasRecognizedKind() const
noexcept {
return isRecognizedSurfaceKind(
kind); }
64 for (uint8_t
i = 0;
i < 5; ++
i) {
69 GPUhdi() constexpr
bool hasRecognizedKind() const
noexcept {
return isRecognizedSurfaceKind(
kind); }
72GPUhdi() constexpr uint8_t packedCovarianceIndex(uint8_t
row, uint8_t column)
noexcept
74 return row >= column ?
row * (
row + 1) / 2 + column : column * (column + 1) / 2 +
row;
83 for (uint8_t
i = 0;
i < 5; ++
i) {
84 const uint8_t diagIndex = packedCovarianceIndex(
i,
i);
85 c[diagIndex] =
c[diagIndex] < 0.f ? -
c[diagIndex] :
c[diagIndex];
86 if (
c[diagIndex] > maxDiagonal[
i]) {
87 const float scale = std::sqrt(maxDiagonal[
i] /
c[diagIndex]);
88 c[diagIndex] = maxDiagonal[
i];
89 for (uint8_t
j = 0;
j < 5; ++
j) {
91 c[packedCovarianceIndex(
i,
j)] *= scale;
96 for (uint8_t
i = 0;
i < 5; ++
i) {
97 for (uint8_t
j = 0;
j <
i; ++
j) {
98 const float bound = std::sqrt(
c[packedCovarianceIndex(
i,
i)] *
c[packedCovarianceIndex(
j,
j)]);
99 const uint8_t offIndex = packedCovarianceIndex(
i,
j);
100 if (
c[offIndex] > bound) {
102 }
else if (
c[offIndex] < -bound) {
103 c[offIndex] = -bound;
GLfloat GLfloat GLfloat alpha
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
uint32_t trackClusterIndicesSize noexcept
GPUhdi() const expr bool isRecognizedSurfaceKind(SurfaceKind kind) noexcept
float referenceCoordinate
GPUhdi() const expr SurfaceTrackParameters() noexcept=default
GPUhdi() const expr bool hasRecognizedKind() const noexcept
float referenceCoordinate
GPUhdi() float getP() const noexcept
GPUhdi() const expr bool hasRecognizedKind() const noexcept