Main Page | Class Hierarchy | Class List | File List | Class Members

FixedPadSizeDiskLayout.h

00001 #ifndef FixedPadSizeDiskLayout_h
00002 #define FixedPadSizeDiskLayout_h 1
00003 
00004 #include <vector>
00005 #include "gear/PadRowLayout2D.h"
00006 
00007 
00008 namespace gear {
00009 
00010 
00011 
00022   class FixedPadSizeDiskLayout : public PadRowLayout2D {
00023     
00024   public:
00025 
00027     struct Row{
00028       int NPad ;
00029       double RCenter ;
00030       double PhiPad ;
00031     } ;
00032     
00033 
00034   protected:
00035     double _rMin ;
00036     double _rMax ;
00037     double _rowHeight ;
00038     double _padWidth ;
00039     double _padHeight ;
00040     double _padGap ;
00041     int _nRow ;
00042     int _nPad ;
00043     std::vector<Row> _rows ;
00044     std::vector<double> _extent ;
00045     mutable std::vector< std::vector<int>* > _padIndices ;
00046 
00047 
00048   public: 
00049 
00056     FixedPadSizeDiskLayout( double rMin, double rMax, double padHeight, double PadWidth, 
00057                             int nRow=0 , 
00058                             double padGap=0.) ;
00059     
00061     virtual ~FixedPadSizeDiskLayout() ; 
00062     
00063 
00065     virtual double getPadGap() const { return _padGap ; } 
00066 
00069     virtual double getFixedPadWidth() const { return _padWidth ; }
00070     
00071 
00074     virtual int getPadLayoutType() const { return PadRowLayout2D::POLAR ; } 
00075     
00078     virtual int getPadShape() const { return PadRowLayout2D::RECTANGLE ; }
00079     
00082     virtual int getNPads() const { return _nPad ; }
00083     
00086     virtual int getNRows() const ;
00087     
00090     virtual double getRowHeight(int rowNumber) const { return _rowHeight ; }
00091 
00094     virtual double getPadHeight(int padIndex) const { return _padHeight ; }
00095 
00098     virtual double getPadWidth(int padIndex) const ;
00099 
00102     virtual Point2D getPadCenter(int padIndex)  const;
00103 
00104 
00108     virtual const std::vector<int>& getPadsInRow(int rowNumber) const ;
00109 
00113     virtual const std::vector<double>& getPlaneExtent()  const { return _extent ; }
00114 
00117     virtual int getRowNumber(int padIndex)  const { return ( 0xffff0000 & padIndex ) >> 16 ; } 
00118 
00121     virtual int getPadNumber(int padIndex) const { return ( 0x0000ffff & padIndex ) ; }
00122 
00125     virtual int getPadIndex(int rowNum, int padNum)  const;
00126 
00130     virtual int getNearestPad(double c0, double c1)  const;
00131 
00134     virtual int getRightNeighbour(int padIndex)  const;
00135 
00138     virtual int getLeftNeighbour(int padIndex)  const;
00139 
00142     virtual bool isInsidePad(double c0, double c1, int padIndex)  const;
00143 
00146     virtual bool isInsidePad(double c0, double c1)  const;
00147 
00148   }; // class
00149 
00150 } // namespace gear
00151 #endif // ifndef FixedPadSizeDiskLayout_h

Generated on Tue Sep 5 11:36:29 2006 for Gear by doxygen 1.3.5