1 #ifndef Geometry_TrackerGeometryBuilder_RectangularPixelTopology_H
2 #define Geometry_TrackerGeometryBuilder_RectangularPixelTopology_H
51 int ROCS_X,
int ROCS_Y )
56 m_ROWS_PER_ROC( ROWS_PER_ROC ),
57 m_COLS_PER_ROC( COLS_PER_ROC ),
60 m_upgradeGeometry( upgradeGeometry )
65 m_xoffset = -(m_nrows + BIG_PIX_PER_ROC_X*m_nrows/
ROWS_PER_ROC)/2. *
67 m_yoffset = -(m_ncols + BIG_PIX_PER_ROC_Y*m_ncols/
COLS_PER_ROC)/2. *
70 LogDebug(
"RectangularPixelTopology") <<
"nrows " << m_nrows <<
", ncols " << m_ncols <<
", pitchx "
71 << m_pitchx <<
", pitchy " << m_pitchy <<
", xoffset "
72 << m_xoffset <<
", yoffset " << m_yoffset <<
", BIG_PIX_PER_ROC_X "
73 << BIG_PIX_PER_ROC_X <<
", BIG_PIX_PER_ROC_Y " << BIG_PIX_PER_ROC_Y <<
", ROWS_PER_ROC "
74 << ROWS_PER_ROC <<
", COLS_PER_ROC " << COLS_PER_ROC <<
", ROCS_X " << ROCS_X <<
", ROCS_Y " << ROCS_Y
75 <<
"\nNROWS " << m_ROWS_PER_ROC * m_ROCS_X <<
", NCOL " << m_COLS_PER_ROC * m_ROCS_Y;
85 std::pair<float,float>
p =
pixel( lp );
105 std::pair<float,float>
p =
pixel( lp );
113 virtual float localX(
const float mpX )
const;
114 virtual float localY(
const float mpY )
const;
120 return (( m_upgradeGeometry )?(
false):(( ixbin == 79 ) | ( ixbin == 80 )));
124 if unlikely( m_upgradeGeometry )
return false;
126 int iybin0 = iybin%52;
127 return(( iybin0 == 0 ) | ( iybin0 == 51 ));
137 return m_upgradeGeometry ?
false :( (ixmin<=80) & (ixmax>=79) );
140 return m_upgradeGeometry ?
false :
150 return ( (ixbin == 0) | (ixbin == (m_nrows-1)) );
153 return ( (iybin == 0) | (iybin == (m_ncols-1)) );
161 virtual std::pair<float,float>
pitch()
const {
162 return std::pair<float,float>( float(m_pitchx), float(m_pitchy));
182 return m_ROWS_PER_ROC;
186 return m_COLS_PER_ROC;
virtual int channel(const LocalPoint &lp) const
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
bool isItEdgePixelInY(int iybin) const
static const int COLS_PER_ROC
virtual int colsperroc() const
static const int BIG_PIX_PER_ROC_Y
bool isItEdgePixel(int ixbin, int iybin) const
RectangularPixelTopology(int nrows, int ncols, float pitchx, float pitchy, bool upgradeGeometry, int ROWS_PER_ROC, int COLS_PER_ROC, int BIG_PIX_PER_ROC_X, int BIG_PIX_PER_ROC_Y, int ROCS_X, int ROCS_Y)
virtual int rocsX() const
virtual std::pair< float, float > pitch() const
static const int ROWS_PER_ROC
virtual MeasurementPoint measurementPosition(const LocalPoint &lp) const
virtual int nrows() const
static const int BIG_PIX_PER_ROC_X
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
virtual bool isItEdgePixelInX(int ixbin) const =0
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
virtual bool isItBigPixelInX(const int ixbin) const
virtual std::pair< float, float > pixel(const LocalPoint &p) const =0
virtual int rowsperroc() const
virtual int ncolumns() const
bool isItEdgePixelInX(int ixbin) const
virtual float localX(const float mpX) const =0
virtual LocalError localError(const MeasurementPoint &, const MeasurementError &) const =0
bool containsBigPixelInY(int iymin, int iymax) const
virtual bool isItEdgePixelInY(int iybin) const =0
virtual bool isItBigPixelInY(const int iybin) const
static int pixelToChannel(int row, int col)
GloballyPositioned< float >::LocalPoint LocalPoint
virtual float localY(const float mpY) const =0
bool containsBigPixelInX(int ixmin, int ixmax) const
virtual bool isItBigPixelInY(const int iybin) const =0
Unlimited (trivial) bounds.
virtual int rocsY() const