CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/Geometry/CSCGeometry/interface/OffsetRadialStripTopology.h

Go to the documentation of this file.
00001 #ifndef ABS_OFFSET_RADIAL_STRIP_TOPOLOGY_H
00002 #define ABS_OFFSET_RADIAL_STRIP_TOPOLOGY_H
00003 
00014 #include "Geometry/CommonTopologies/interface/RadialStripTopology.h"
00015 #include <iosfwd>
00016 
00017 class OffsetRadialStripTopology : public RadialStripTopology
00018 {
00019 public:
00020 
00025   OffsetRadialStripTopology( int numberOfStrips, float stripPhiPitch,
00026      float detectorHeight, float radialDistance, float stripOffset, float yCentre);
00027 
00028   virtual ~OffsetRadialStripTopology(){};
00029 
00033   virtual float stripOffset( void ) const { return theStripOffset; }
00034 
00037   virtual LocalPoint localPosition(float strip) const {
00038     // Pass through to base class since otherwise it is shadowed by the localPosition(const MP&).
00039     // Note that base class version is OK because it uses stripAngle() which is overridden in ORST!
00040     // Also note that xOfStrip from base class RST also works for ORST for the same reason.
00041     return RadialStripTopology::localPosition( strip );
00042   }
00043 
00061   virtual LocalPoint localPosition(const MeasurementPoint&) const;
00062 
00066   virtual MeasurementPoint measurementPosition( const LocalPoint& ) const;
00067 
00074   virtual float strip(const LocalPoint&) const;
00075 
00079   float stripAngle(float strip) const;
00080 
00085   virtual int channel(int strip) const = 0;
00086   virtual int channel(const LocalPoint& lp) const = 0;
00087 
00088   friend std::ostream & operator<<(std::ostream &, const OffsetRadialStripTopology &);
00089 
00090  private:
00095   LocalPoint toLocal(float xprime, float yprime) const;
00100   LocalPoint toPrime(const LocalPoint&) const;
00101 
00102   float theStripOffset; // fraction of a strip offset from sym about y
00103   float theCosOff; // cosine of angular offset
00104   float theSinOff; // sine of angular offset
00105 };
00106 
00107 #endif
00108