00001 #ifndef _RADIAL_STRIP_TOPOLOGY_H_
00002 #define _RADIAL_STRIP_TOPOLOGY_H_
00003
00004 #include "Geometry/CommonTopologies/interface/StripTopology.h"
00005
00026 class RadialStripTopology : public StripTopology {
00027 public:
00028
00043 RadialStripTopology( int ns, float aw, float dh, float r, int yAx = 1, float yMid = 0.);
00044
00048 virtual ~RadialStripTopology(){}
00049
00050
00051
00052
00053
00058 virtual LocalPoint localPosition(float strip) const;
00059
00073 virtual LocalPoint localPosition(const MeasurementPoint&) const;
00074
00081 virtual LocalError localError(float strip, float stripErr2) const;
00082
00088 virtual LocalError localError(const MeasurementPoint&, const MeasurementError&) const;
00089
00097 virtual float strip(const LocalPoint&) const;
00098
00099
00106 virtual float pitch() const;
00107
00112 virtual float localPitch(const LocalPoint&) const;
00113
00125 virtual float stripAngle(float strip) const;
00126
00130 virtual int nstrips() const { return theNumberOfStrips; }
00131
00135 virtual float stripLength() const { return theDetHeight; }
00136
00140 virtual float localStripLength(const LocalPoint& ) const;
00141
00142
00143
00144
00145
00146
00147
00148 virtual MeasurementPoint measurementPosition( const LocalPoint& ) const;
00149
00150 virtual MeasurementError measurementError( const LocalPoint&, const LocalError& ) const;
00151
00159 virtual int channel( const LocalPoint& ) const;
00160
00161
00162
00163
00164
00165
00169 float angularWidth() const { return theAngularWidth;}
00170
00174 virtual float phiPitch(void) const { return angularWidth(); }
00175
00179 float detHeight() const { return theDetHeight;}
00180
00184 float yExtentOfStripPlane() const { return theDetHeight; }
00185
00191 float centreToIntersection() const { return theCentreToIntersection; }
00192
00198 float originToIntersection() const { return (theCentreToIntersection - yCentre); }
00199
00212 float phiOfOneEdge() const { return thePhiOfOneEdge; }
00213
00218 float xOfStrip(int strip, float y) const;
00219
00223 virtual int nearestStrip(const LocalPoint&) const;
00224
00228 int yAxisOrientation() const { return theYAxisOrientation; }
00229
00233 float yCentreOfStripPlane() const { return yCentre; }
00234
00238 float yDistanceToIntersection( float y ) const;
00239
00240 friend std::ostream & operator<<(std::ostream&, const RadialStripTopology& );
00241
00242 private:
00243
00244 int theNumberOfStrips;
00245 float theAngularWidth;
00246 float theDetHeight;
00247 float theCentreToIntersection;
00248 float thePhiOfOneEdge;
00249 int theYAxisOrientation;
00250 float yCentre;
00251 };
00252
00253 #endif
00254
00255