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

A grid to group other grids or to create nested grids. More...

#include <PndDiscSensorGrid.h>

Inheritance diagram for SensorGrid::MultipleGrids:
SensorGrid::SensorGridBase

Public Member Functions

 MultipleGrids ()
 
virtual ~MultipleGrids ()
 
void AddGrid (SensorGridBase *grid)
 
virtual void EnumerateGrids (int &id, int &pixel_offset)
 
virtual bool PositionToPixel (const double &x, const double &y, PixelInfo &pixel_info) const
 
virtual bool PixelToPosition (PixelInfo &pixel_number, double &x, double &y) const
 
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 lock)
 
void SetPixelNumberOffset (int offset)
 
void EnumerateGridsProxy (SensorGridBase *b, int &grid_id, int &pixel_number)
 
void LockChildsProxy (SensorGridBase *b, bool lock)
 

Protected Attributes

std::vector< SensorGridBase * > grids
 
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 grid to group other grids or to create nested grids.

Definition at line 107 of file PndDiscSensorGrid.h.

Constructor & Destructor Documentation

SensorGrid::MultipleGrids::MultipleGrids ( )

Definition at line 150 of file PndDiscSensorGrid.cxx.

151 { }
SensorGrid::MultipleGrids::~MultipleGrids ( )
virtual

Definition at line 154 of file PndDiscSensorGrid.cxx.

References grids.

154  {
155  std::vector<SensorGridBase*>::const_iterator it;
156  for(it = grids.begin(); it != grids.end(); ++it) delete *it;
157 }
std::vector< SensorGridBase * > grids

Member Function Documentation

void SensorGrid::MultipleGrids::AddGrid ( SensorGridBase grid)

Definition at line 160 of file PndDiscSensorGrid.cxx.

References grids.

Referenced by DiscDIRC_Photodetector::Init().

160  {
161  grids.push_back(grid);
162 }
std::vector< SensorGridBase * > grids
void SensorGrid::MultipleGrids::EnumerateGrids ( int &  id,
int &  pixel_offset 
)
virtual

Implements SensorGrid::SensorGridBase.

Definition at line 165 of file PndDiscSensorGrid.cxx.

References SensorGrid::SensorGridBase::EnumerateGridsProxy(), SensorGrid::SensorGridBase::grid_number, grids, SensorGrid::SensorGridBase::number_of_pixels, and SensorGrid::SensorGridBase::pixel_number_offset.

165  {
166 #ifdef OMERLE_SENSORGRID_DEBUG
167  std::cout << "MultipleGrids::EnumerateGrids\n";
168 #endif
169  grid_number = id++;
170  pixel_number_offset = pixel_offset;
171  std::vector<SensorGridBase*>::const_iterator it;
172  for(it = grids.begin(); it != grids.end(); ++it) {
173  EnumerateGridsProxy(*it, id, pixel_offset);
174 #ifdef OMERLE_SENSORGRID_DEBUG
175  std::cout << "After Enum cycle" << id << "\t" << pixel_offset << std::endl;
176 #endif
177  }
178  number_of_pixels = pixel_offset;
179 }
int number_of_pixels
user prowided offset to add to column on grid value in PixelInfo
void EnumerateGridsProxy(SensorGridBase *b, int &grid_id, int &pixel_number)
std::vector< SensorGridBase * > grids
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 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)
void SensorGrid::MultipleGrids::LockChilds ( bool  lock)
protectedvirtual

Reimplemented from SensorGrid::SensorGridBase.

Definition at line 191 of file PndDiscSensorGrid.cxx.

References grids, and SensorGrid::SensorGridBase::LockChildsProxy().

191  {
192  std::vector<SensorGridBase*>::const_iterator it;
193  for(it = grids.begin(); it != grids.end(); ++it) LockChildsProxy(*it, lock);
194 }
std::vector< SensorGridBase * > grids
void LockChildsProxy(SensorGridBase *b, bool lock)
void SensorGrid::SensorGridBase::LockChildsProxy ( SensorGridBase b,
bool  lock 
)
inlineprotectedinherited

Definition at line 69 of file PndDiscSensorGrid.h.

References SensorGrid::SensorGridBase::LockChilds().

Referenced by 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::MultipleGrids::PixelToPosition ( PixelInfo pixel_number,
double &  x,
double &  y 
) const
virtual

Implements SensorGrid::SensorGridBase.

Definition at line 197 of file PndDiscSensorGrid.cxx.

References grids.

197  {
198  std::vector<SensorGridBase*>::const_iterator it;
199  for(it = grids.begin(); it != grids.end(); ++it) {
200  if((*it)->PixelToPosition(pixel_info, x, y)) return true;
201  }
202  return false;
203 }
Double_t x
Double_t y
std::vector< SensorGridBase * > grids
bool SensorGrid::MultipleGrids::PositionToPixel ( const double &  x,
const double &  y,
PixelInfo pixel_info 
) const
virtual

Implements SensorGrid::SensorGridBase.

Definition at line 182 of file PndDiscSensorGrid.cxx.

References grids.

182  {
183  std::vector<SensorGridBase*>::const_iterator it;
184  for(it = grids.begin(); it != grids.end(); ++it) {
185  if((*it)->PositionToPixel(x, y, pixel_info)) return true;
186  }
187  return false;
188 }
Double_t x
Double_t y
std::vector< SensorGridBase * > grids
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)

Member Data Documentation

int SensorGrid::SensorGridBase::grid_number
protectedinherited
std::vector<SensorGridBase*> SensorGrid::MultipleGrids::grids
protected
bool SensorGrid::SensorGridBase::locked
protectedinherited
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 SensorGrid::BasicGrid::PixelToPosition(), SensorGrid::BasicGrid::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 SensorGrid::BasicGrid::PixelToPosition(), SensorGrid::BasicGrid::PositionToPixel(), and SensorGrid::SensorGridBase::SetUserRowOffset().


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