00001 #ifndef SurfaceAndBounds_H 00002 #define SurfaceAndBounds_H 00003 00004 #include "TrackPropagation/NavGeometry/interface/NavSurface.h" 00005 00006 class NavSurface; 00007 class Bounds; 00008 00009 class SurfaceAndBounds { 00010 00011 public: 00012 00013 00014 typedef SurfaceOrientation::GlobalFace GlobalFace; 00015 typedef SurfaceOrientation::Side Side; 00016 typedef ConstReferenceCountingPointer<NavSurface> NavSurfacePointer; 00017 00018 SurfaceAndBounds( const NavSurface* navsurf, const Bounds* bounds, Side side, GlobalFace face) : 00019 theNavSurfaceP(navsurf) , theBoundsP(bounds) , theSide(side) , theGlobalFace(face) { }; 00020 00021 // Default constructor needed in /usr/include/c++/3.2.3/bits/stl_map.h:225 --> to use SurfaceAndBounds in sorted container 00022 // SurfaceAndBounds() : theNavSurfaceP(0) , theBoundsP(0) , 00023 // theSide(SurfaceOrientation::onSurface) , theGlobalFace(SurfaceOrientation::outer) {}; 00024 // 00025 SurfaceAndBounds() {}; 00026 00027 00029 const NavSurface& surface() const {return *theNavSurfaceP ;} 00030 00032 const Bounds& bounds() const {return *theBoundsP ;} 00033 00035 const SurfaceOrientation::Side side() const {return theSide;} 00036 00037 ~SurfaceAndBounds() {} 00038 00039 00040 private: 00041 00042 NavSurfacePointer theNavSurfaceP; 00043 const Bounds* theBoundsP; 00044 Side theSide; 00045 GlobalFace theGlobalFace; 00046 00047 }; 00048 00049 #endif