CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/TrackPropagation/NavGeometry/interface/NavSurface.h

Go to the documentation of this file.
00001 #ifndef NavSurface_H
00002 #define NavSurface_H
00003 
00004 #include "DataFormats/GeometrySurface/interface/Surface.h"
00005 
00006 #include <utility>
00007 
00008 #include "FWCore/Utilities/interface/GCC11Compatibility.h"
00009 
00010 
00011 class NavVolume;
00012 class TrajectoryStateOnSurface;
00013 class Propagator;
00014 class Bounds;
00015 
00016 class NavSurface : public ReferenceCountedInConditions // : public virtual Surface 
00017 {
00018 public:
00019 
00020   // NavSurface( const PositionType& pos, const RotationType& rot) : Surface(pos,rot) {}
00021 
00022     typedef Surface::LocalPoint           LocalPoint;
00023     typedef Surface::LocalVector          LocalVector;
00024     typedef Surface::GlobalPoint          GlobalPoint;
00025     typedef Surface::GlobalVector         GlobalVector;
00026     typedef std::pair<TrajectoryStateOnSurface,double> TSOSwithPath;
00027 
00028     virtual ~NavSurface() {}
00029 
00031     virtual const Surface& surface() const = 0; 
00032 
00033     virtual const NavVolume* nextVolume( const LocalPoint& point, 
00034                                          SurfaceOrientation::Side side) const = 0;
00035 
00037     virtual TrajectoryStateOnSurface 
00038     propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0;
00039 
00041     virtual TSOSwithPath 
00042     propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0;
00043 
00045     virtual const Bounds* bounds( const NavVolume* vol) = 0;
00046 
00048 // FIXME: should not be public...
00049     virtual void addVolume( const NavVolume* vol, const Bounds* bounds, 
00050                             SurfaceOrientation::Side side) = 0;
00051 
00055     virtual std::pair<bool,double> 
00056     distanceAlongLine( const GlobalPoint& pos, const GlobalVector& dir) const = 0;
00057 
00059     LocalPoint  toLocal( const GlobalPoint& p)   const {return surface().toLocal(p);}
00060     LocalVector toLocal( const GlobalVector& p)  const {return surface().toLocal(p);}
00061     GlobalPoint  toGlobal( const LocalPoint& p)  const {return surface().toGlobal(p);}
00062     GlobalVector toGlobal( const LocalVector& p) const {return surface().toGlobal(p);}
00063 
00064 
00065 };
00066 
00067 #endif