1 #ifndef FixedPadAngleDiskLayout_h
2 #define FixedPadAngleDiskLayout_h 1
5 #include "gearimpl/FixedDiskLayoutBase.h"
43 std::vector<double> _extent ;
44 mutable std::vector< std::vector<int>* > _padIndices ;
67 double phiMin,
double phiMax,
int nPadsInRow ) ;
122 virtual double getRowHeight(
int rowNumber)
const {
return _rowHeight ; }
126 virtual double getPadHeight(
int padIndex)
const {
return _rowHeight ; }
131 virtual double getPadWidth(
int padIndex)
const {
return _padAngle;}
136 virtual double getPadPitch(
int padIndex)
const {
return _padAngle;}
149 virtual const std::vector<int>&
getPadsInRow(
int rowNumber)
const ;
170 virtual int getPadIndex(
int rowNum,
int padNum)
const;
186 virtual bool isInsidePad(
double c0,
double c1,
int padIndex)
const;
190 virtual bool isInsidePad(
double c0,
double c1)
const;
201 #endif // ifndef FixedPadAngleDiskLayout_h
virtual double getPadHeight(int padIndex) const
The height of the pad in mm.
virtual int getNearestPad(double c0, double c1) const
The index of the pad nearest to the given point in 2d coordinates (r, phi).
virtual Vector2D getPadCenter(int padIndex) const
The center of the pad in 2d coordinates (r,phi).
virtual ~FixedPadAngleDiskLayout()
Destructor.
Abstract description of a planar subdetector with pads (cells) that are positioned in rows (circular ...
virtual int getRightNeighbour(int padIndex) const
The index of the right neighbour pad.
virtual double getPadGap() const
The gap width in mm that was given in the C'tor.
Base class for circular PadRowLayout2D implementations.
Implementation of PadRowLayout2D for a disk with fixed angled keystone pads.
virtual const std::vector< double > & getPlaneExtent() const
Extent of the sensitive plane [rmin,rmax,phimin,phimax].
FixedPadAngleDiskLayout & operator=(const FixedPadAngleDiskLayout &)
The assignment operator.
virtual int getLeftNeighbour(int padIndex) const
The index of the left neighbour pad.
virtual double getPadWidth(int padIndex) const
The width of the pad in radians! (In this implementation there is no gap, identical to the pad pitch)...
virtual bool isInsidePad(double c0, double c1, int padIndex) const
True if coordinate (c0,c1) is within the given pad.
virtual int getPadLayoutImplType() const
The type of the row layout implementation: PadRowLayout2D.FIXEDPADANGLEDISKLAYOUT.
virtual int getNPads() const
The total number of pads in the TPC.
void copy_and_assign(const FixedPadAngleDiskLayout &)
Function to copy all internal variables, incl. the objects pointed to and owned by the FixedPadAngleD...
virtual double getRowHeight(int rowNumber) const
The row height in mm.
FixedPadAngleDiskLayout(double rMin, double rMax, int nRow, double phiMin, double phiMax, int nPadsInRow)
Construct the FixedPadAngleDiskLayout from the given parameters rMin, rMax, nRow, phiMin...
virtual int getPadIndex(int rowNum, int padNum) const
Create a padIndex for the given row and pad ( column ) number.
virtual double getFixedPadAngle() const
The fixed width of the pads in mm.
PadRowLayout2D * clone() const
Returns a copy (clone) of this class.
virtual double getPadPitch(int padIndex) const
The pitch of the pad in radians! (In this implementation there is no gap, identical to the pad width)...
virtual int getNRows() const
The number of rows.
virtual const std::vector< int > & getPadsInRow(int rowNumber) const
Indices of all pads in row rowNumber (row indices start at rMin).
void cleanup()
Function to delete all the objects pointed to and owned by the FixedPadAngleDiskLayout.
virtual int getNPadsInRow() const
Get the (fixed) number of pads per row.