CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
NavSurface.h
Go to the documentation of this file.
1 #ifndef NavSurface_H
2 #define NavSurface_H
3 
5 
6 #include <utility>
7 
8 class NavVolume;
10 class Propagator;
11 class Bounds;
12 
13 class NavSurface : public ReferenceCountedInConditions // : public virtual Surface
14 {
15 public:
16 
17  // NavSurface( const PositionType& pos, const RotationType& rot) : Surface(pos,rot) {}
18 
23  typedef std::pair<TrajectoryStateOnSurface,double> TSOSwithPath;
24 
25  virtual ~NavSurface() {}
26 
28  virtual const Surface& surface() const = 0;
29 
30  virtual const NavVolume* nextVolume( const LocalPoint& point,
31  SurfaceOrientation::Side side) const = 0;
32 
35  propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0;
36 
38  virtual TSOSwithPath
39  propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0;
40 
42  virtual const Bounds* bounds( const NavVolume* vol) = 0;
43 
45 // FIXME: should not be public...
46  virtual void addVolume( const NavVolume* vol, const Bounds* bounds,
47  SurfaceOrientation::Side side) = 0;
48 
52  virtual std::pair<bool,double>
53  distanceAlongLine( const GlobalPoint& pos, const GlobalVector& dir) const = 0;
54 
56  LocalPoint toLocal( const GlobalPoint& p) const {return surface().toLocal(p);}
57  LocalVector toLocal( const GlobalVector& p) const {return surface().toLocal(p);}
58  GlobalPoint toGlobal( const LocalPoint& p) const {return surface().toGlobal(p);}
59  GlobalVector toGlobal( const LocalVector& p) const {return surface().toGlobal(p);}
60 
61 
62 };
63 
64 #endif
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:78
Surface::GlobalVector GlobalVector
Definition: NavSurface.h:22
virtual const Surface & surface() const =0
Access to actual surface.
Surface::LocalVector LocalVector
Definition: NavSurface.h:20
virtual std::pair< bool, double > distanceAlongLine(const GlobalPoint &pos, const GlobalVector &dir) const =0
virtual ~NavSurface()
Definition: NavSurface.h:25
LocalVector toLocal(const GlobalVector &p) const
Definition: NavSurface.h:57
GlobalPoint toGlobal(const LocalPoint &p) const
Definition: NavSurface.h:58
LocalPoint toLocal(const GlobalPoint &gp) const
Surface::LocalPoint LocalPoint
Definition: NavSurface.h:19
GlobalVector toGlobal(const LocalVector &p) const
Definition: NavSurface.h:59
virtual const Bounds * bounds(const NavVolume *vol)=0
Bounds corresponding to a NavVolume if present.
Surface::GlobalPoint GlobalPoint
Definition: NavSurface.h:21
LocalPoint toLocal(const GlobalPoint &p) const
Forwarding of part of surface interface for convenience.
Definition: NavSurface.h:56
virtual void addVolume(const NavVolume *vol, const Bounds *bounds, SurfaceOrientation::Side side)=0
NavVolumes are supposed to call this method to &quot;register&quot; with the NavSurface.
virtual TSOSwithPath propagateWithPath(const Propagator &prop, const TrajectoryStateOnSurface &startingState) const =0
hook for double dispatch to avoid propagation to generic surface.
virtual TrajectoryStateOnSurface propagate(const Propagator &prop, const TrajectoryStateOnSurface &startingState) const =0
hook for double dispatch to avoid propagation to generic surface.
Definition: Bounds.h:18
dbl *** dir
Definition: mlp_gen.cc:35
std::pair< TrajectoryStateOnSurface, double > TSOSwithPath
Definition: NavSurface.h:23
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
virtual const NavVolume * nextVolume(const LocalPoint &point, SurfaceOrientation::Side side) const =0