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