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
00016
00017
00018 typedef ConstReferenceCountingPointer<Plane> PlanePointer;
00019
00020
00021
00022 NavPlane( PlanePointer plane) : theSurfaceP(plane) {}
00023
00024
00025
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