16#ifndef ALICEO2_IOTOF_SEGMENTATION_H
17#define ALICEO2_IOTOF_SEGMENTATION_H
35 static std::unique_ptr<o2::iotof::Segmentation> sInstance;
44 void configChip(
const int nCols,
const int nRows,
const float pitchCol,
const float pitchRow,
const float passiveEdgeReadOut,
const float passiveEdgeTop,
45 const float passiveEdgeSide,
const float sensorLayerThicknessEff,
const float sensorLayerThickness,
const int subDetectorID);
59 bool localToDetector(
float x,
float z,
int& iRow,
int& iCol,
const int subDetectorID);
75 template <
typename T =
float,
typename L =
float>
78 if (subDetectorID != 0 && subDetectorID != 1) {
86 template <
typename T =
float,
typename L =
float>
89 if (subDetectorID != 0 && subDetectorID != 1) {
96 template <
typename T =
float,
typename L =
float>
99 if (subDetectorID != 0 && subDetectorID != 1) {
111 template <
typename T =
float,
typename L =
float>
114 if (subDetectorID != 0 && subDetectorID != 1) {
119 if (row < 0 || row >= specsConfig.
NRows || col < 0 || col >= specsConfig.
NCols) {
126 template <
typename T =
float,
typename L =
float>
129 if (subDetectorID != 0 && subDetectorID != 1) {
134 if (row < 0 || row >= specsConfig.
NRows || col < 0 || col >= specsConfig.
NCols) {
140 template <
typename T =
float,
typename L =
float>
143 if (subDetectorID != 0 && subDetectorID != 1) {
148 if (row < 0 || row >= specsConfig.
NRows || col < 0 || col >= specsConfig.
NCols) {
175 if (subDetectorID != 0 && subDetectorID != 1) {
196 if (subDetectorID != 0 && subDetectorID != 1) {
float getFirstColCoordinate(const int subDetectorID)
bool detectorToLocal(L row, L col, std::array< T, 3 > &loc, const int subDetectorID)
ChipSpecifics mOTofSpecsConfig
float getFirstRowCoordinate(const int subDetectorID)
void localToDetectorUnchecked(float xRow, float zCol, int &iRow, int &iCol, const int subDetectorID)
same but w/o check for row/column range
void detectorToLocalUnchecked(L row, L col, T &xRow, T &zCol, const int subDetectorID)
static Segmentation * Instance()
void configChip(const int nCols, const int nRows, const float pitchCol, const float pitchRow, const float passiveEdgeReadOut, const float passiveEdgeTop, const float passiveEdgeSide, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID)
ChipSpecifics mITofSpecsConfig
void detectorToLocalUnchecked(L row, L col, math_utils::Point3D< T > &loc, const int subDetectorID)
void detectorToLocalUnchecked(L row, L col, std::array< T, 3 > &loc, const int subDetectorID)
bool detectorToLocal(L row, L col, math_utils::Point3D< T > &loc, const int subDetectorID)
bool detectorToLocal(L row, L col, T &xRow, T &zCol, const int subDetectorID)
bool localToDetector(float x, float z, int &iRow, int &iCol, const int subDetectorID)
ClassDefNV(Segmentation, 1)
static bool localToDetector(float x, float z, int &iRow, int &iCol)
static void localToDetectorUnchecked(float xRow, float zCol, int &iRow, int &iCol)
same but w/o check for row/column range
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
float ActiveMatrixSizeRows() const
float ActiveMatrixSizeCols() const