16#ifndef ALICEO2_ITS3_SEGMENTATIONMOSAIX_H_
17#define ALICEO2_ITS3_SEGMENTATIONMOSAIX_H_
79 static constexpr float PitchCol{constants::pixelarray::pixels::mosaix::pitchZ};
80 static constexpr float PitchRow{constants::pixelarray::pixels::mosaix::pitchX};
99 constexpr void curvedToFlat(
const float xCurved,
const float yCurved,
float& xFlat,
float& yFlat)
const noexcept
103 float dist = std::hypot(xCurved, yCurved);
104 float phi = std::atan2(yCurved, xCurved);
105 xFlat = (mRadius * phi) -
WidthH;
121 constexpr void flatToCurved(
float xFlat,
float yFlat,
float& xCurved,
float& yCurved)
const noexcept
128 xCurved = dist * std::cos((xFlat +
WidthH) / mRadius);
129 yCurved = dist * std::sin((xFlat +
WidthH) / mRadius);
143 constexpr bool localToDetector(
float const xRow,
float const zCol,
int& iRow,
int& iCol)
const noexcept
146 if (!isValid(iRow, iCol)) {
170 constexpr bool detectorToLocal(
int const iRow,
int const iCol,
float& xRow,
float& zCol)
const noexcept
172 if (!isValid(iRow, iCol)) {
176 return isValid(xRow, zCol);
189 float xRow{0.}, zCol{0.};
199 float xRow{0.}, zCol{0.};
205 template <
typename T>
206 [[nodiscard]]
constexpr bool isValid(T
const row, T
const col)
const noexcept
208 if constexpr (std::is_floating_point_v<T>) {
211 return !
static_cast<bool>(row < 0 || row >=
static_cast<int>(
NRows) || col < 0 || col >=
static_cast<int>(
NCols));
Segmentation and response for pixels in ITS3 upgrade.
static constexpr float SensorLayerThickness
constexpr SegmentationMosaix(SegmentationMosaix &&)=delete
constexpr void flatToCurved(float xFlat, float yFlat, float &xCurved, float &yCurved) const noexcept
static constexpr float Length
constexpr void curvedToFlat(const float xCurved, const float yCurved, float &xFlat, float &yFlat) const noexcept
static constexpr float PitchCol
constexpr void detectorToLocalUnchecked(int const iRow, int const iCol, float &xRow, float &zCol) const noexcept
constexpr bool detectorToLocal(int const iRow, int const iCol, float &xRow, float &zCol) const noexcept
static constexpr int NPixels
static constexpr int NRows
constexpr SegmentationMosaix(const SegmentationMosaix &)=default
constexpr ~SegmentationMosaix()=default
static constexpr float LengthH
constexpr SegmentationMosaix & operator=(SegmentationMosaix &&)=delete
void detectorToLocalUnchecked(int const row, int const col, math_utils::Point3D< float > &loc) const noexcept
static constexpr int NCols
constexpr SegmentationMosaix & operator=(const SegmentationMosaix &)=default
constexpr SegmentationMosaix(int layer)
bool detectorToLocal(int const row, int const col, math_utils::Point3D< float > &loc) const noexcept
static constexpr float WidthH
static constexpr float Width
static constexpr float NominalYShift
constexpr void localToDetectorUnchecked(float const xRow, float const zCol, int &iRow, int &iCol) const noexcept
static constexpr float PitchRow
constexpr bool localToDetector(float const xRow, float const zCol, int &iRow, int &iCol) const noexcept
GLenum GLuint GLint GLint layer
constexpr double nominalYShift
constexpr double totalThickness