1 #ifndef Geometry_VeryForwardGeometry_CTPPSPixelSimTopology_h 2 #define Geometry_VeryForwardGeometry_CTPPSPixelSimTopology_h 20 double higher_simX_border,
21 double lower_simY_border,
22 double higher_simY_border,
24 unsigned short pixel_row_no,
25 unsigned short pixel_col_no)
66 double& higher_y)
const {
68 arow = (2 * ROCSizeInX - 1) - arow;
69 if (arow > (2 * ROCSizeInX - 1) || acol > (3 * ROCSizeInY - 1))
70 throw cms::Exception(
"CTPPSPixelSimTopology") <<
"rows or columns exceeding limits";
76 }
else if (arow <= (ROCSizeInX - 2)) {
79 }
else if (arow == (ROCSizeInX - 1)) {
82 }
else if (arow == ROCSizeInX) {
85 }
else if (arow <= (2 * ROCSizeInX - 2)) {
88 }
else if (arow == (2 * ROCSizeInX - 1)) {
97 }
else if (acol <= (ROCSizeInY - 2)) {
100 }
else if (acol == (ROCSizeInY - 1)) {
103 }
else if (acol == ROCSizeInY) {
106 }
else if (acol <= (2 * ROCSizeInY - 2)) {
109 }
else if (acol == (2 * ROCSizeInY - 1)) {
112 }
else if (acol == (2 * ROCSizeInY)) {
115 }
else if (acol <= (3 * ROCSizeInY - 2)) {
118 }
else if (acol == (3 * ROCSizeInY - 1)) {
140 const double aEF = topEdgeFactor * bottomEdgeFactor * rightEdgeFactor * leftEdgeFactor;
143 throw cms::Exception(
"CTPPSPixelSimTopology") <<
" active edge factor > 1";
153 inline unsigned int row(
double x)
const {
159 throw cms::Exception(
"CTPPSPixelSimTopology") <<
"out of reference frame";
168 arow = (ROCSizeInX - 1);
174 arow = (2 * ROCSizeInX - 1);
176 arow = (2 * ROCSizeInX - 1) - arow;
177 if (arow > (2 * ROCSizeInX - 1))
178 throw cms::Exception(
"CTPPSPixelSimTopology") <<
"row number exceeding limit";
183 inline unsigned int col(
double y)
const {
191 throw cms::Exception(
"CTPPSPixelSimTopology") <<
" out of reference frame";
198 column = ROCSizeInY - 1;
204 column = 2 * ROCSizeInY - 1;
206 column = 2 * ROCSizeInY;
210 column = (3 * ROCSizeInY - 1);
static double pitch_simY_
void rowCol2Index(unsigned int arow, unsigned int acol, unsigned int &index) const
unsigned short pixelRowNo() const
unsigned short pixelColNo() const
static double phys_active_edge_dist_
double distanceFromRightActiveEdge(double x, double y) const
double higherSimXBorder() const
void index2RowCol(unsigned int &arow, unsigned int &acol, unsigned int index) const
unsigned short pixel_row_no_
double distanceFromBottomActiveEdge(double x, double y) const
static double active_edge_sigma_
unsigned short pixelIndex() const
Geometrical and topological information on RPix silicon detector. Uses coordinate a frame with origin...
static double dead_edge_width_
static double simX_width_
double lowerSimYBorder() const
double lower_simX_border_
PixelInfo(double lower_simX_border, double higher_simX_border, double lower_simY_border, double higher_simY_border, double eff_factor, unsigned short pixel_row_no, unsigned short pixel_col_no)
unsigned int col(double y) const
double higher_simX_border_
void pixelRange(unsigned int arow, unsigned int acol, double &lower_x, double &higher_x, double &lower_y, double &higher_y) const
double lowerSimXBorder() const
unsigned short pixel_col_no_
static double simY_width_
PixelInfo getPixelsInvolved(double x, double y, double sigma, double &hit_pos_x, double &hit_pos_y) const
static unsigned short no_of_pixels_simX_
double distanceFromLeftActiveEdge(double x, double y) const
double lower_simY_border_
double distanceFromTopActiveEdge(double x, double y) const
double higherSimYBorder() const
static double pitch_simX_
unsigned int row(double x) const
double activeEdgeFactor(double x, double y) const
double higher_simY_border_
unsigned short pixel_index_