Go to the documentation of this file.00001 #ifndef NavCone_H
00002 #define NavCone_H
00003
00004 #include "DataFormats/GeometrySurface/interface/Cone.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 NavCone : public NavSurface {
00013 public:
00014
00015
00016
00017
00018
00019 NavCone( const Cone* cone) : theSurfaceP(cone) {}
00020
00021
00022
00023 virtual const Surface& surface() const {return *theSurfaceP;}
00024
00025 virtual const NavVolume* nextVolume( const NavSurface::LocalPoint& point,
00026 SurfaceOrientation::Side side) const {
00027 return theImpl.nextVolume( point,side);
00028 }
00029
00030 virtual TrajectoryStateOnSurface
00031 propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const;
00032
00033 virtual NavSurface::TSOSwithPath
00034 propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const;
00035
00036 virtual const Bounds* bounds( const NavVolume* vol) { return theImpl.bounds(vol);}
00037
00038 virtual void addVolume( const NavVolume* vol, const Bounds* bounds,
00039 SurfaceOrientation::Side side) {
00040 theImpl.addVolume( vol, bounds, side);
00041 }
00042
00043 virtual std::pair<bool,double>
00044 distanceAlongLine( const NavSurface::GlobalPoint& pos, const NavSurface::GlobalVector& dir) const;
00045
00046 private:
00047
00048 ConstReferenceCountingPointer<Cone> theSurfaceP;
00049 LinearSearchNavSurfaceImpl theImpl;
00050
00051 };
00052
00053 #endif