CMS 3D CMS Logo

NavSurface.h
Go to the documentation of this file.
1 #ifndef NavSurface_H
2 #define NavSurface_H
3 
5 
6 #include <utility>
7 
9 
10 
11 class NavVolume;
13 class Propagator;
14 class Bounds;
15 
16 class NavSurface : public ReferenceCountedInConditions // : public virtual Surface
17 {
18 public:
19 
20  // NavSurface( const PositionType& pos, const RotationType& rot) : Surface(pos,rot) {}
21 
26  typedef std::pair<TrajectoryStateOnSurface,double> TSOSwithPath;
27 
28  ~NavSurface() override {}
29 
31  virtual const Surface& surface() const = 0;
32 
33  virtual const NavVolume* nextVolume( const LocalPoint& point,
34  SurfaceOrientation::Side side) const = 0;
35 
38  propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0;
39 
41  virtual TSOSwithPath
42  propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0;
43 
45  virtual const Bounds* bounds( const NavVolume* vol) = 0;
46 
48 // FIXME: should not be public...
49  virtual void addVolume( const NavVolume* vol, const Bounds* bounds,
50  SurfaceOrientation::Side side) = 0;
51 
55  virtual std::pair<bool,double>
56  distanceAlongLine( const GlobalPoint& pos, const GlobalVector& dir) const = 0;
57 
59  LocalPoint toLocal( const GlobalPoint& p) const {return surface().toLocal(p);}
60  LocalVector toLocal( const GlobalVector& p) const {return surface().toLocal(p);}
61  GlobalPoint toGlobal( const LocalPoint& p) const {return surface().toGlobal(p);}
62  GlobalVector toGlobal( const LocalVector& p) const {return surface().toGlobal(p);}
63 
64 
65 };
66 
67 #endif
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:106
Surface::GlobalVector GlobalVector
Definition: NavSurface.h:25
virtual std::pair< bool, double > distanceAlongLine(const GlobalPoint &pos, const GlobalVector &dir) const =0
virtual const NavVolume * nextVolume(const LocalPoint &point, SurfaceOrientation::Side side) const =0
Surface::LocalVector LocalVector
Definition: NavSurface.h:23
~NavSurface() override
Definition: NavSurface.h:28
LocalVector toLocal(const GlobalVector &p) const
Definition: NavSurface.h:60
virtual const Surface & surface() const =0
Access to actual surface.
GlobalPoint toGlobal(const LocalPoint &p) const
Definition: NavSurface.h:61
LocalPoint toLocal(const GlobalPoint &gp) const
Surface::LocalPoint LocalPoint
Definition: NavSurface.h:22
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.
GlobalVector toGlobal(const LocalVector &p) const
Definition: NavSurface.h:62
virtual const Bounds * bounds(const NavVolume *vol)=0
Bounds corresponding to a NavVolume if present.
Surface::GlobalPoint GlobalPoint
Definition: NavSurface.h:24
LocalPoint toLocal(const GlobalPoint &p) const
Forwarding of part of surface interface for convenience.
Definition: NavSurface.h:59
virtual void addVolume(const NavVolume *vol, const Bounds *bounds, SurfaceOrientation::Side side)=0
NavVolumes are supposed to call this method to "register" with the NavSurface.
Definition: Bounds.h:22
dbl *** dir
Definition: mlp_gen.cc:35
std::pair< TrajectoryStateOnSurface, double > TSOSwithPath
Definition: NavSurface.h:26
*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