12#ifndef O2_TRD_PADPLANE_H
13#define O2_TRD_PADPLANE_H
67 mInverseLengthOPad = 1.0 / l;
72 mInverseWidthOPad = 1.0 /
w;
77 mInverseLengthIPad = 1.0 / l;
82 mInverseWidthIPad = 1.0 /
w;
88 GPUd() int getPadRowNumber(
double z)
const
98 if ((
z > getRow0()) || (
z < getRowEnd())) {
104 while (nabove - nbelow > 1) {
105 middle = (nabove + nbelow) / 2;
106 if (
z == (mPadRow[middle - 1] + mPadRowSMOffset)) {
109 if (
z > (mPadRow[middle - 1] + mPadRowSMOffset)) {
124 GPUd()
int getPadColNumber(
double rphi)
const
135 if ((rphi < getCol0()) || (rphi > getColEnd())) {
141 while (nabove - nbelow > 1) {
142 middle = (nabove + nbelow) / 2;
143 if (rphi == mPadCol[middle]) {
146 if (rphi > mPadCol[middle]) {
160 GPUd()
double getTiltOffset(
int row,
double rowOffset)
const
162 if (
row == 0 ||
row == mNrows - 1) {
163 return mTiltingTan * (rowOffset - 0.5 * mLengthOPad);
165 return mTiltingTan * (rowOffset - 0.5 * mLengthIPad);
168 GPUd() double getPadRowOffset(
int row,
double z)
const
170 if ((
row < 0) || (
row >= mNrows)) {
173 return mPadRow[
row] + mPadRowSMOffset -
z;
176 GPUd() double getPadRowOffsetROC(
int row,
double z)
const
178 if ((
row < 0) || (
row >= mNrows)) {
181 return mPadRow[
row] -
z;
185 GPUd() double getPadColOffset(
int col,
double rphi)
const
187 if ((
col < 0) || (
col >= mNcols)) {
190 return rphi - mPadCol[
col];
194 GPUd() double getTiltingAngle()
const {
return mTiltingAngle; };
195 GPUd() int getNrows()
const {
return mNrows; };
196 GPUd() int getNcols()
const {
return mNcols; };
197 GPUd() double getRow0()
const {
return mPadRow[0] + mPadRowSMOffset; };
198 GPUd() double getRow0ROC()
const {
return mPadRow[0]; };
199 GPUd() double getCol0()
const {
return mPadCol[0]; };
200 GPUd() double getRowEnd()
const {
return mPadRow[mNrows - 1] - mLengthOPad + mPadRowSMOffset; };
201 GPUd() double getRowEndROC()
const {
return mPadRow[mNrows - 1] - mLengthOPad; };
202 GPUd() double getColEnd()
const {
return mPadCol[mNcols - 1] + mWidthOPad; };
203 GPUd() double getRowPos(
int row)
const {
return mPadRow[
row] + mPadRowSMOffset; };
204 GPUd() double getRowPosROC(
int row)
const {
return mPadRow[
row]; };
205 GPUd() double getColPos(
int col)
const {
return mPadCol[
col]; };
208 if ((
row == 0) || (
row == mNrows - 1)) {
216 if ((
col == 0) || (
col == mNcols - 1)) {
223 GPUd() double getLengthRim()
const {
return mLengthRim; };
224 GPUd() double getWidthRim()
const {
return mWidthRim; };
225 GPUd() double getRowSpacing()
const {
return mRowSpacing; };
226 GPUd() double getColSpacing()
const {
return mColSpacing; };
227 GPUd() double getLengthOPad()
const {
return mLengthOPad; };
228 GPUd() double getLengthIPad()
const {
return mLengthIPad; };
229 GPUd() double getWidthOPad()
const {
return mWidthOPad; };
230 GPUd() double getWidthIPad()
const {
return mWidthIPad; };
231 GPUd() double getAnodeWireOffset()
const {
return mAnodeWireOffset; };
234 static GPUglobalconstexpr() int MAXCOLS = 144;
235 static GPUglobalconstexpr()
int MAXROWS = 16;
258 double mTiltingAngle;
261 double mPadRow[MAXROWS];
262 double mPadCol[MAXCOLS];
264 double mPadRowSMOffset;
266 double mAnodeWireOffset;
268 double mInverseLengthIPad;
269 double mInverseLengthOPad;
271 double mInverseWidthIPad;
272 double mInverseWidthOPad;
void setPadRow(int ir, double r)
GPUd() double getRowEndROC() const
GPUd() double getColSpacing() const
GPUd() double getRow0ROC() const
void setWidthOPad(double w)
GPUd() double getPadRowOffset(int row
GPUd() double getCol0() const
GPUd() int getNrows() const
void setPadRowSMOffset(double o)
GPUd() double getColSize(int col) const
GPUd() double getWidthIPad() const
GPUd() double getColEnd() const
GPUd() double getWidthRim() const
PadPlane & operator=(const PadPlane &p)=delete
GPUd() double getWidthOPad() const
GPUd() double getLengthIPad() const
GPUd() double getAnodeWireOffset() const
GPUd() double getTiltingAngle() const
void setTiltingAngle(double t)
GPUd() int getNcols() const
GPUd() int getPadRowNumberROC(double z) const
void setRowSpacing(double s)
PadPlane(const PadPlane &p)=delete
void setWidthRim(double w)
void setWidthIPad(double w)
GPUd() double getRowSpacing() const
GPUd() int getPadRowNumber(double z) const
GPUd() double getRowPos(int row) const
void setPadCol(int ic, double c)
void setColSpacing(double s)
GPUd() double getColPos(int col) const
GPUd() double getRowSize(int row) const
void setLengthIPad(double l)
GPUd() double getRowPosROC(int row) const
void setAnodeWireOffset(float o)
void setLengthRim(double l)
GPUd() double getRowEnd() const
PadPlane(int layer, int stack)
GPUd() double getPadRowOffsetROC(int row
GPUd() double getLengthRim() const
void setLengthOPad(double l)
GPUd() double getRow0() const
GPUd() double getLengthOPad() const
GLenum GLuint GLint GLint layer
GLubyte GLubyte GLubyte GLubyte w
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
o2::InteractionRecord ir(0, 0)