00001 #ifndef LinearSearchNavSurfaceImpl_H 00002 #define LinearSearchNavSurfaceImpl_H 00003 00004 #include "TrackPropagation/NavGeometry/interface/NavSurface.h" 00005 #include <vector> 00006 00007 class NavVolume; 00008 class Bounds; 00009 00010 class LinearSearchNavSurfaceImpl { 00011 public: 00012 00013 const NavVolume* nextVolume( const NavSurface::LocalPoint& point, 00014 SurfaceOrientation::Side side) const; 00015 00016 const Bounds* bounds( const NavVolume* vol); 00017 00018 void addVolume( const NavVolume* vol, const Bounds* bounds, 00019 SurfaceOrientation::Side side); 00020 00021 private: 00022 00023 typedef std::pair< const NavVolume*, const Bounds*> VolumeAndBounds; 00024 typedef std::vector< VolumeAndBounds> VolumeContainer; 00025 00026 VolumeContainer thePosVolumes; 00027 VolumeContainer theNegVolumes; 00028 00029 const NavVolume* findVolume( const NavSurface::LocalPoint& point, 00030 const VolumeContainer& volumes) const; 00031 00032 }; 00033 00034 #endif