FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SensorGrid::BasicGrid Class Reference

A generic regular pixel grid with dead space between cells. More...

#include <PndDiscSensorGrid.h>

Inheritance diagram for SensorGrid::BasicGrid:
SensorGrid::SensorGridBase

Public Member Functions

 BasicGrid ()
 
 BasicGrid (const double &x_min, const double &x_width, const double &x_pitch, int n_x, const double &y_min, const double &y_width, const double &y_pitch, int n_y)
 
virtual ~BasicGrid ()
 
void SetXDivision (const double &x_min, const double &x_width, const double &x_pitch, int n_x)
 
void SetYDivision (const double &y_min, const double &y_width, const double &y_pitch, int n_y)
 
virtual bool PositionToPixel (const double &x, const double &y, PixelInfo &pixel_info) const
 Convert a hit position to a pixel number. More...
 
virtual bool PixelToPosition (PixelInfo &pixel_info, double &x, double &y) const
 Compute the center-position of a pixel on this grid and update the pixel_info structure. More...
 
virtual void EnumerateGrids (int &id, int &pixel_offset)
 
void SetUserColumnOffset (int ofs)
 
void SetUserRowOffset (int ofs)
 
void LockGrid (bool lock)
 Lock the grid: More...
 
bool IsLocked ()
 
int GetNumberOfPixels ()
 
virtual bool NextPixel (double &x, double &y, PixelInfo &pixel_number) const
 Return information of the next pixel (pixel iteration) More...
 

Protected Member Functions

virtual void LockChilds (bool)
 
void SetPixelNumberOffset (int offset)
 
void EnumerateGridsProxy (SensorGridBase *b, int &grid_id, int &pixel_number)
 
void LockChildsProxy (SensorGridBase *b, bool lock)
 

Protected Attributes

double x_min
 
double x_width
 
double x_pitch
 
double x_width_over_two_pitch
 
double y_min
 
double y_width
 
double y_pitch
 
double y_width_over_two_pitch
 
int n_x
 
int n_y
 
double x_max
 
double y_max
 
int grid_number
 
int pixel_number_offset
 
int user_row_offset
 The pixel number of the first pixel in this grid (or its childs) More...
 
int user_col_offset
 user prowided offset to add to row on grid value in PixelInfo More...
 
int number_of_pixels
 user prowided offset to add to column on grid value in PixelInfo More...
 
bool locked
 The total number of pixels in this grid (or its childs) More...
 

Detailed Description

A generic regular pixel grid with dead space between cells.

Definition at line 83 of file PndDiscSensorGrid.h.

Constructor & Destructor Documentation

SensorGrid::BasicGrid::BasicGrid ( )

Definition at line 53 of file PndDiscSensorGrid.cxx.

53 { }
SensorGrid::BasicGrid::BasicGrid ( const double &  x_min,
const double &  x_width,
const double &  x_pitch,
int  n_x,
const double &  y_min,
const double &  y_width,
const double &  y_pitch,
int  n_y 
)
Todo:
: throw here

Definition at line 56 of file PndDiscSensorGrid.cxx.

References n_x, n_y, SensorGrid::SensorGridBase::number_of_pixels, x_max, x_min, x_pitch, x_width, x_width_over_two_pitch, y_max, y_min, y_pitch, y_width, and y_width_over_two_pitch.

58  : SensorGridBase(), x_min(x_min_), x_width(x_width_), x_pitch(x_pitch_),
59  y_min(y_min_), y_width(y_width_), y_pitch(y_pitch_), n_x(n_x_), n_y(n_y_)
60 {
64  x_max = x_min + double(n_x)*x_pitch;
65  y_max = y_min + double(n_y)*y_pitch;
67 }
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo
SensorGrid::BasicGrid::~BasicGrid ( )
virtual

Definition at line 70 of file PndDiscSensorGrid.cxx.

70 { }

Member Function Documentation

void SensorGrid::BasicGrid::EnumerateGrids ( int &  id,
int &  pixel_offset 
)
virtual

Implements SensorGrid::SensorGridBase.

Definition at line 73 of file PndDiscSensorGrid.cxx.

References SensorGrid::SensorGridBase::grid_number, SensorGrid::SensorGridBase::number_of_pixels, and SensorGrid::SensorGridBase::pixel_number_offset.

73  {
74 #ifdef OMERLE_SENSORGRID_DEBUG
75  std::cout << "BasicGrid::EnumerateGrids\n";
76 #endif
77  // Set grid id and pixel number offset
78  grid_number = id++;
79  pixel_number_offset = pixel_offset;
80  pixel_offset += number_of_pixels;
81 }
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo
void SensorGrid::SensorGridBase::EnumerateGridsProxy ( SensorGridBase b,
int &  grid_id,
int &  pixel_number 
)
inlineprotectedinherited

Definition at line 68 of file PndDiscSensorGrid.h.

References SensorGrid::SensorGridBase::EnumerateGrids().

Referenced by SensorGrid::MultipleGrids::EnumerateGrids().

68 { b->EnumerateGrids(grid_id, pixel_number); }
TTree * b
int SensorGrid::SensorGridBase::GetNumberOfPixels ( )
inlineinherited
bool SensorGrid::SensorGridBase::IsLocked ( )
inlineinherited

Definition at line 54 of file PndDiscSensorGrid.h.

References SensorGrid::SensorGridBase::locked.

54 { return locked; }
bool locked
The total number of pixels in this grid (or its childs)
virtual void SensorGrid::SensorGridBase::LockChilds ( bool  )
inlineprotectedvirtualinherited

Reimplemented in SensorGrid::MultipleGrids.

Definition at line 64 of file PndDiscSensorGrid.h.

Referenced by SensorGrid::SensorGridBase::LockChildsProxy(), and SensorGrid::SensorGridBase::LockGrid().

64 {} // used to forward lock to children // lock//[R.K.03/2017] unused variable(s)
void SensorGrid::SensorGridBase::LockChildsProxy ( SensorGridBase b,
bool  lock 
)
inlineprotectedinherited

Definition at line 69 of file PndDiscSensorGrid.h.

References SensorGrid::SensorGridBase::LockChilds().

Referenced by SensorGrid::MultipleGrids::LockChilds().

69 { b->LockChilds(lock); }
TTree * b
void SensorGrid::SensorGridBase::LockGrid ( bool  lock)
inherited

Lock the grid:

Definition at line 19 of file PndDiscSensorGrid.cxx.

References SensorGrid::SensorGridBase::EnumerateGrids(), SensorGrid::SensorGridBase::LockChilds(), SensorGrid::SensorGridBase::locked, and SensorGrid::SensorGridBase::number_of_pixels.

Referenced by SensorGrid::SensorGridPhotodetector::Init().

19  {
20  if(lock == true) {
21  // Enumerate this and all child grids:
22  int grid_id = 1;
23  int pixel_offset = number_of_pixels;
24  EnumerateGrids(grid_id, pixel_offset);
25  LockChilds(true);
26 
27  // and set lock flag
28  locked = true;
29  }
30  else
31  locked = false;
32 }
bool locked
The total number of pixels in this grid (or its childs)
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo
virtual void LockChilds(bool)
virtual void EnumerateGrids(int &id, int &pixel_offset)=0
bool SensorGrid::SensorGridBase::NextPixel ( double &  x,
double &  y,
PixelInfo pixel_info 
) const
virtualinherited

Return information of the next pixel (pixel iteration)

The pixel_info.pixel_number will be increased by one and the pixel_info structure is updated to the corresponding values. The position of the pixel center is also returned using arguments x, y.

Definition at line 40 of file PndDiscSensorGrid.cxx.

References SensorGrid::PixelInfo::pixel_number, and SensorGrid::SensorGridBase::PixelToPosition().

40  {
41  // simple method that will work with all derived classes.
42  // !!! maybe slow !!! -> derived classes should implement caching of last subgrid.
43  if(pixel_info.pixel_number < 0) pixel_info.pixel_number = 0; // start enum
44  else ++pixel_info.pixel_number; // run enum
45  return PixelToPosition(pixel_info, x, y);
46 }
virtual bool PixelToPosition(PixelInfo &pixel_info, double &x, double &y) const =0
Double_t x
Double_t y
bool SensorGrid::BasicGrid::PixelToPosition ( PixelInfo pixel_info,
double &  x,
double &  y 
) const
virtual

Compute the center-position of a pixel on this grid and update the pixel_info structure.

Implements SensorGrid::SensorGridBase.

Definition at line 127 of file PndDiscSensorGrid.cxx.

References SensorGrid::PixelInfo::column_on_grid, SensorGrid::PixelInfo::grid_id, SensorGrid::SensorGridBase::grid_number, n_x, SensorGrid::SensorGridBase::number_of_pixels, SensorGrid::PixelInfo::pixel_number, SensorGrid::SensorGridBase::pixel_number_offset, SensorGrid::PixelInfo::row_on_grid, SensorGrid::SensorGridBase::user_col_offset, SensorGrid::SensorGridBase::user_row_offset, x_min, x_pitch, y_min, and y_pitch.

127  {
128  //std::cout << pixel_number_offset << "\t" << number_of_pixels << std::endl;
129  int local_pixel_num = pixel_info.pixel_number-pixel_number_offset;
130  if(pixel_info.pixel_number < pixel_number_offset || local_pixel_num >= number_of_pixels) return false;
131 
132  pixel_info.column_on_grid = local_pixel_num % n_x;
133  pixel_info.row_on_grid = local_pixel_num / n_x;
134  pixel_info.grid_id = grid_number;
135 
136  x = x_min + (0.5 + (double)(pixel_info.column_on_grid)) * x_pitch;
137  y = y_min + (0.5 + (double)(pixel_info.row_on_grid)) * y_pitch;
138 
139  pixel_info.column_on_grid += user_col_offset;
140  pixel_info.row_on_grid += user_row_offset;
141  return true;
142 }
int user_row_offset
The pixel number of the first pixel in this grid (or its childs)
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo
Double_t x
int user_col_offset
user prowided offset to add to row on grid value in PixelInfo
Double_t y
bool SensorGrid::BasicGrid::PositionToPixel ( const double &  x,
const double &  y,
PixelInfo pixel_info 
) const
virtual

Convert a hit position to a pixel number.

Implements SensorGrid::SensorGridBase.

Definition at line 103 of file PndDiscSensorGrid.cxx.

References SensorGrid::PixelInfo::column_on_grid, fabs(), SensorGrid::PixelInfo::grid_id, SensorGrid::SensorGridBase::grid_number, n_x, SensorGrid::PixelInfo::pixel_number, SensorGrid::SensorGridBase::pixel_number_offset, SensorGrid::PixelInfo::row_on_grid, SensorGrid::SensorGridBase::user_col_offset, SensorGrid::SensorGridBase::user_row_offset, x_max, x_min, x_pitch, x_width_over_two_pitch, y_max, y_min, y_pitch, and y_width_over_two_pitch.

103  {
104  if(x<x_min || x>x_max || y<y_min || y>y_max) return false;
105 
106  double x_coord_fp = (x-x_min)/x_pitch;
107  double x_coord = floor(x_coord_fp);
108  if(x_width_over_two_pitch < fabs(0.5-(x_coord_fp-x_coord))) return false;
109 
110  double y_coord_fp = (y-y_min)/y_pitch;
111  double y_coord = floor(y_coord_fp);
112  if(y_width_over_two_pitch < fabs(0.5-(y_coord_fp-y_coord))) return false;
113 
114  pixel_info.column_on_grid = (int)x_coord;
115  pixel_info.row_on_grid = (int)y_coord;
116  pixel_info.pixel_number = pixel_info.column_on_grid + pixel_info.row_on_grid*n_x + pixel_number_offset;
117 
118  pixel_info.column_on_grid += user_col_offset;
119  pixel_info.row_on_grid += user_row_offset;
120 
121  pixel_info.grid_id = grid_number;
122  return true;
123 }
int user_row_offset
The pixel number of the first pixel in this grid (or its childs)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t x
int user_col_offset
user prowided offset to add to row on grid value in PixelInfo
Double_t y
void SensorGrid::SensorGridBase::SetPixelNumberOffset ( int  offset)
inlineprotectedinherited

Definition at line 65 of file PndDiscSensorGrid.h.

References offset(), and SensorGrid::SensorGridBase::pixel_number_offset.

TVector3 offset(2, 0, 0)
void SensorGrid::SensorGridBase::SetUserColumnOffset ( int  ofs)
inlineinherited

Definition at line 51 of file PndDiscSensorGrid.h.

References SensorGrid::SensorGridBase::user_col_offset.

Referenced by DiscDIRC_Photodetector::Init().

51 { user_col_offset = ofs; }
int user_col_offset
user prowided offset to add to row on grid value in PixelInfo
void SensorGrid::SensorGridBase::SetUserRowOffset ( int  ofs)
inlineinherited

Definition at line 52 of file PndDiscSensorGrid.h.

References SensorGrid::SensorGridBase::user_row_offset.

Referenced by DiscDIRC_Photodetector::Init().

52 { user_row_offset = ofs; }
int user_row_offset
The pixel number of the first pixel in this grid (or its childs)
void SensorGrid::BasicGrid::SetXDivision ( const double &  x_min,
const double &  x_width,
const double &  x_pitch,
int  n_x 
)

Definition at line 84 of file PndDiscSensorGrid.cxx.

References SensorGrid::SensorGridBase::locked, n_x, n_y, SensorGrid::SensorGridBase::number_of_pixels, x_max, x_min, x_pitch, x_width, and x_width_over_two_pitch.

84  {
85  if(locked) return; // todo: throw error
86  x_min = x_min_; x_width = x_width_; x_pitch = x_pitch_; n_x = n_x_;
88  x_max = x_min + double(n_x)*x_pitch;
90 }
bool locked
The total number of pixels in this grid (or its childs)
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo
void SensorGrid::BasicGrid::SetYDivision ( const double &  y_min,
const double &  y_width,
const double &  y_pitch,
int  n_y 
)

Definition at line 93 of file PndDiscSensorGrid.cxx.

References SensorGrid::SensorGridBase::locked, n_x, n_y, SensorGrid::SensorGridBase::number_of_pixels, y_max, y_min, y_pitch, y_width, and y_width_over_two_pitch.

93  {
94  if(locked) return; // todo: throw error
95  y_min = y_min_; y_width = y_width_; y_pitch = y_pitch_; n_y = n_y_;
97  y_max = y_min + double(n_y)*y_pitch;
99 }
bool locked
The total number of pixels in this grid (or its childs)
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo

Member Data Documentation

int SensorGrid::SensorGridBase::grid_number
protectedinherited
bool SensorGrid::SensorGridBase::locked
protectedinherited

The total number of pixels in this grid (or its childs)

Definition at line 78 of file PndDiscSensorGrid.h.

Referenced by SensorGrid::SensorGridBase::IsLocked(), SensorGrid::SensorGridBase::LockGrid(), SetXDivision(), and SetYDivision().

int SensorGrid::BasicGrid::n_x
protected
int SensorGrid::BasicGrid::n_y
protected

Definition at line 101 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), SetXDivision(), and SetYDivision().

int SensorGrid::SensorGridBase::number_of_pixels
protectedinherited
int SensorGrid::SensorGridBase::pixel_number_offset
protectedinherited
int SensorGrid::SensorGridBase::user_col_offset
protectedinherited

user prowided offset to add to row on grid value in PixelInfo

Definition at line 76 of file PndDiscSensorGrid.h.

Referenced by PixelToPosition(), PositionToPixel(), and SensorGrid::SensorGridBase::SetUserColumnOffset().

int SensorGrid::SensorGridBase::user_row_offset
protectedinherited

The pixel number of the first pixel in this grid (or its childs)

Definition at line 75 of file PndDiscSensorGrid.h.

Referenced by PixelToPosition(), PositionToPixel(), and SensorGrid::SensorGridBase::SetUserRowOffset().

double SensorGrid::BasicGrid::x_max
protected

Definition at line 102 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PositionToPixel(), and SetXDivision().

double SensorGrid::BasicGrid::x_min
protected

Definition at line 99 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PixelToPosition(), PositionToPixel(), and SetXDivision().

double SensorGrid::BasicGrid::x_pitch
protected

Definition at line 99 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PixelToPosition(), PositionToPixel(), and SetXDivision().

double SensorGrid::BasicGrid::x_width
protected

Definition at line 99 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), and SetXDivision().

double SensorGrid::BasicGrid::x_width_over_two_pitch
protected

Definition at line 99 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PositionToPixel(), and SetXDivision().

double SensorGrid::BasicGrid::y_max
protected

Definition at line 102 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PositionToPixel(), and SetYDivision().

double SensorGrid::BasicGrid::y_min
protected

Definition at line 100 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PixelToPosition(), PositionToPixel(), and SetYDivision().

double SensorGrid::BasicGrid::y_pitch
protected

Definition at line 100 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PixelToPosition(), PositionToPixel(), and SetYDivision().

double SensorGrid::BasicGrid::y_width
protected

Definition at line 100 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), and SetYDivision().

double SensorGrid::BasicGrid::y_width_over_two_pitch
protected

Definition at line 100 of file PndDiscSensorGrid.h.

Referenced by BasicGrid(), PositionToPixel(), and SetYDivision().


The documentation for this class was generated from the following files: