CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/TrackPropagation/NavGeometry/interface/NavPlane.h

Go to the documentation of this file.
00001 #ifndef NavPlane_H
00002 #define NavPlane_H
00003 
00004 #include "DataFormats/GeometrySurface/interface/Plane.h"
00005 #include "TrackPropagation/NavGeometry/interface/NavSurface.h"
00006 #include "TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h"
00007 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00008 
00009 #include <vector>
00010 class Bounds;
00011 
00012 class NavPlane : public NavSurface {
00013 public:
00014 
00015 /*     NavPlane( const PositionType& pos, const RotationType& rot) : */
00016 /*      Surface( pos, rot), Plane( pos, rot), NavSurface( pos, rot) {} */
00017 
00018     typedef ConstReferenceCountingPointer<Plane> PlanePointer;
00019 
00020     // NavPlane( const Plane* plane) : theSurfaceP(plane) {}
00021   
00022     NavPlane( PlanePointer plane) : theSurfaceP(plane) {}
00023 
00024     // FIXME: restore covariant return type when gcc version upgraded
00025     //virtual const Plane& surface() const {return *theSurfaceP;} 
00026     virtual const Surface& surface() const {return *theSurfaceP;} 
00027 
00028     virtual const NavVolume* nextVolume( const NavSurface::LocalPoint& point, 
00029                                          SurfaceOrientation::Side side) const{
00030         return theImpl.nextVolume( point,side);
00031 
00032     }
00033 
00034     virtual TrajectoryStateOnSurface 
00035     propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const;
00036 
00037     virtual NavSurface::TSOSwithPath 
00038     propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const;
00039 
00040     virtual const Bounds* bounds( const NavVolume* vol) { return theImpl.bounds(vol);}
00041 
00042     virtual void addVolume( const NavVolume* vol, const Bounds* bounds, 
00043                             SurfaceOrientation::Side side) {
00044         theImpl.addVolume( vol, bounds, side);
00045     }
00046 
00047     virtual std::pair<bool,double> 
00048     distanceAlongLine( const NavSurface::GlobalPoint& pos, const NavSurface::GlobalVector& dir) const;
00049 
00050 private:
00051 
00052   PlanePointer theSurfaceP;
00053   LinearSearchNavSurfaceImpl theImpl;
00054 
00055 };
00056 
00057 #endif