CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/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   // https://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   virtual float pitch() const = 0;
00039   virtual float localPitch( const LocalPoint& ) const = 0; 
00040 
00042   virtual float localPitch( const LocalPoint& lp, const Topology::LocalTrackAngles &/*ltp*/ ) const {
00043     return localPitch(lp);
00044   }
00045   virtual float stripAngle( float strip ) const = 0;
00046 
00047   virtual int nstrips() const = 0;
00048 
00049   virtual float stripLength() const = 0;
00050   virtual float localStripLength(const LocalPoint& aLP) const = 0;
00051 
00053   virtual float localStripLength( const LocalPoint& lp, const Topology::LocalTrackAngles &/*ltp*/ ) const {
00054     return localStripLength(lp);
00055   }
00056 
00057 };
00058 
00059 #endif