00001 #ifndef _RADIAL_STRIP_TOPOLOGY_H_ 00002 #define _RADIAL_STRIP_TOPOLOGY_H_ 00003 00004 #include "Geometry/CommonTopologies/interface/StripTopology.h" 00005 00028 class RadialStripTopology : public StripTopology { 00029 public: 00030 00031 00035 virtual ~RadialStripTopology(){} 00036 00037 // ========================================================= 00038 // StripTopology interface - implement pure virtual methods 00039 // ========================================================= 00040 00045 virtual LocalPoint localPosition(float strip) const=0; 00046 00060 virtual LocalPoint localPosition(const MeasurementPoint&) const=0; 00061 00068 virtual LocalError localError(float strip, float stripErr2) const=0; 00069 00075 virtual LocalError localError(const MeasurementPoint&, const MeasurementError&) const=0; 00076 00084 virtual float strip(const LocalPoint&) const=0; 00085 00086 00093 virtual float pitch() const GCC11_FINAL; 00094 00099 virtual float localPitch(const LocalPoint&) const=0; 00100 00112 virtual float stripAngle(float strip) const=0; 00113 00117 virtual int nstrips() const=0; 00118 00122 virtual float stripLength() const=0; 00123 00127 virtual float localStripLength(const LocalPoint& ) const=0; 00128 00129 00130 // ========================================================= 00131 // Topology interface (not already implemented for 00132 // StripTopology interface) 00133 // ========================================================= 00134 00135 virtual MeasurementPoint measurementPosition( const LocalPoint& ) const=0; 00136 00137 virtual MeasurementError measurementError( const LocalPoint&, const LocalError& ) const=0; 00138 00146 virtual int channel( const LocalPoint& ) const=0; 00147 00148 00149 // ========================================================= 00150 // RadialStripTopology interface itself 00151 // ========================================================= 00152 00156 virtual float angularWidth() const=0; 00157 00161 virtual float phiPitch(void) const=0; 00162 00166 virtual float detHeight() const=0; 00167 00171 virtual float yExtentOfStripPlane() const=0; // same as detHeight() 00172 00178 virtual float centreToIntersection() const=0; 00184 virtual float originToIntersection() const=0; 00197 virtual float phiOfOneEdge() const=0; 00198 00203 virtual float xOfStrip(int strip, float y) const=0; 00204 00208 virtual int nearestStrip(const LocalPoint&) const=0; 00209 00213 virtual float yAxisOrientation() const=0; 00214 00218 virtual float yCentreOfStripPlane() const=0; 00219 00223 virtual float yDistanceToIntersection( float y ) const=0; 00224 00225 friend std::ostream & operator<<(std::ostream&, const RadialStripTopology& ); 00226 00227 00228 }; 00229 00230 #endif 00231 00232