CMS 3D CMS Logo

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

Go to the documentation of this file.
00001 #ifndef Geometry_CommonTopologies_StripTopology_H
00002 #define Geometry_CommonTopologies_StripTopology_H
00003 
00004 #include "Geometry/CommonTopologies/interface/Topology.h"
00005 
00011 class StripTopology : public Topology {
00012 public:
00013 
00014   virtual ~StripTopology() {}
00015 
00016   // GF: I hate the stupid hiding feature of C++, see
00017   // http://www.parashift.com/c%2B%2B-faq-lite/strange-inheritance.html#faq-23.9
00018   using Topology::localPosition;
00019   virtual LocalPoint localPosition( float strip ) const = 0;
00021   virtual LocalPoint localPosition( float strip, const Topology::LocalTrackPred &/*trkPred*/) const { 
00022     return localPosition(strip); 
00023   }
00024   virtual LocalError localError( float strip, float stripErr2 ) const = 0;
00025 
00027   virtual LocalError localError( float strip, float stripErr2,
00028                                  const Topology::LocalTrackPred &/*trkPred*/) const {
00029     return localError(strip, stripErr2); 
00030   } 
00031   using Topology::localError; // see comment about hiding an C++ 'using' feature above
00032   virtual float strip( const LocalPoint& ) const = 0;
00033 
00035   virtual float strip( const LocalPoint& lp, const Topology::LocalTrackAngles &/*ltp*/ ) const {
00036     return strip(lp);
00037   }
00038 
00039   // the number of strip span by the segment between the two points..
00040   virtual float coveredStrips(const LocalPoint& lp1, const LocalPoint& lp2)  const {
00041     return (measurementPosition(lp1)-measurementPosition(lp2)).x();
00042   }  
00043 
00044   virtual float pitch() const = 0;
00045   virtual float localPitch( const LocalPoint& ) const = 0; 
00046 
00048   virtual float localPitch( const LocalPoint& lp, const Topology::LocalTrackAngles &/*ltp*/ ) const {
00049     return localPitch(lp);
00050   }
00051   virtual float stripAngle( float strip ) const = 0;
00052 
00053   virtual int nstrips() const = 0;
00054 
00055   virtual float stripLength() const = 0;
00056   virtual float localStripLength(const LocalPoint& aLP) const = 0;
00057 
00059   virtual float localStripLength( const LocalPoint& lp, const Topology::LocalTrackAngles &/*ltp*/ ) const {
00060     return localStripLength(lp);
00061   }
00062 
00063 };
00064 
00065 #endif