CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Geometry/CommonTopologies/interface/TkRadialStripTopology.h

Go to the documentation of this file.
00001 #ifndef _TkRADIAL_STRIP_TOPOLOGY_H_
00002 #define _TkRADIAL_STRIP_TOPOLOGY_H_
00003 
00004 #include "Geometry/CommonTopologies/interface/RadialStripTopology.h"
00005 
00028 class TkRadialStripTopology GCC11_FINAL : public RadialStripTopology {
00029  public:
00030 
00045   TkRadialStripTopology( int ns, float aw, float dh, float r, int yAx = 1, float yMid = 0.);
00046 
00050   ~TkRadialStripTopology(){}
00051 
00052   // =========================================================
00053   // StripTopology interface - implement pure methods
00054   // =========================================================
00055 
00060   LocalPoint localPosition(float strip) const;
00061 
00075   LocalPoint localPosition(const MeasurementPoint&) const;
00076 
00083   LocalError localError(float strip, float stripErr2) const;
00084 
00090   LocalError localError(const MeasurementPoint&, const MeasurementError&) const;
00091 
00099   float strip(const LocalPoint&) const;
00100 
00101   // the number of strip span by the segment between the two points..
00102   float coveredStrips(const LocalPoint& lp1, const LocalPoint& lp2)  const ; 
00103 
00104 
00109   float localPitch(const LocalPoint&) const;
00110 
00122   float stripAngle(float strip) const;
00123 
00127   int nstrips() const { return theNumberOfStrips; }
00128 
00132   float stripLength() const { return theDetHeight; }
00133 
00137   float localStripLength(const LocalPoint& ) const;
00138 
00139 
00140   // =========================================================
00141   // Topology interface (not already implemented for 
00142   // StripTopology interface)
00143   // =========================================================
00144 
00145   MeasurementPoint measurementPosition( const LocalPoint& ) const;
00146 
00147   MeasurementError measurementError( const LocalPoint&, const LocalError& ) const;
00148 
00156   int channel( const LocalPoint& ) const;
00157 
00158 
00159   // =========================================================
00160   // RadialStripTopology interface itself
00161   // =========================================================
00162 
00166   float angularWidth() const { return theAngularWidth;}
00167 
00171   float phiPitch(void) const { return angularWidth(); }
00172 
00176   float detHeight() const { return theDetHeight;}
00177 
00181   float yExtentOfStripPlane() const { return theDetHeight; } // same as detHeight()
00182 
00188   float centreToIntersection() const { return theCentreToIntersection; }
00189 
00195   float originToIntersection() const { return (theCentreToIntersection - yCentre); }
00196 
00209   float phiOfOneEdge() const { return thePhiOfOneEdge; }
00210 
00215   float xOfStrip(int strip, float y) const;
00216  
00220   int nearestStrip(const LocalPoint&) const;
00221 
00225   float yAxisOrientation() const { return theYAxisOrientation; }
00226 
00230   float yCentreOfStripPlane() const { return yCentre; }
00231 
00235   float yDistanceToIntersection( float y ) const;
00236 
00237  private:
00238 
00239   int   theNumberOfStrips; // total no. of strips in plane of strips
00240   float theAngularWidth;   // angle subtended by each strip = phi pitch
00241   float theAWidthInverse;   // inverse of above
00242   float theTanAW;          // its tangent  
00243   float theDetHeight;      // length of long symmetry axis = twice the apothem of the enclosing trapezoid
00244   float theCentreToIntersection;  // distance centre of detector face to intersection of edge strips (projected)
00245   float thePhiOfOneEdge;   // local 'phi' of one edge of plane of strips (I choose it negative!)
00246   float theTanOfOneEdge;   // the positive tangent of the above...
00247   float theYAxisOrientation; // 1 means y axis going from smaller to larger side, -1 means opposite direction
00248   float yCentre; // Non-zero if offset in local y between midpoint of detector (strip plane) extent and local origin.
00249 };
00250 
00251 #endif
00252 
00253