CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/TrackPropagation/NavGeometry/interface/NavCone.h

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 /*     NavCone( const PositionType& pos, const RotationType& rot,  */
00016 /*           const PositionType& vert, Geom::Theta<Scalar> angle) : */
00017 /*      Surface( pos, rot), Cone( pos, rot, vert, angle), NavSurface( pos, rot) {} */
00018 
00019   NavCone( const Cone* cone) : theSurfaceP(cone) {}
00020 
00021   // FIXME: restore covariant return type when gcc version upgraded
00022   //virtual const Cone& surface() const {return *theSurfaceP;} 
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