CMS 3D CMS Logo

NavPlane.h
Go to the documentation of this file.
1 #ifndef NavPlane_H
2 #define NavPlane_H
3 
8 
9 #include <vector>
10 class Bounds;
11 
12 class NavPlane final : public NavSurface {
13 public:
14 
15 /* NavPlane( const PositionType& pos, const RotationType& rot) : */
16 /* Surface( pos, rot), Plane( pos, rot), NavSurface( pos, rot) {} */
17 
19 
20  // NavPlane( const Plane* plane) : theSurfaceP(plane) {}
21 
22  NavPlane( PlanePointer plane) : theSurfaceP(plane) {}
23 
24  // FIXME: restore covariant return type when gcc version upgraded
25  //virtual const Plane& surface() const {return *theSurfaceP;}
26  virtual const Surface& surface() const {return *theSurfaceP;}
27 
29  SurfaceOrientation::Side side) const{
30  return theImpl.nextVolume( point,side);
31 
32  }
33 
35  propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const;
36 
38  propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const;
39 
40  virtual const Bounds* bounds( const NavVolume* vol) { return theImpl.bounds(vol);}
41 
42  virtual void addVolume( const NavVolume* vol, const Bounds* bounds,
44  theImpl.addVolume( vol, bounds, side);
45  }
46 
47  virtual std::pair<bool,double>
49 
50 private:
51 
52  PlanePointer theSurfaceP;
54 
55 };
56 
57 #endif
NavPlane(PlanePointer plane)
Definition: NavPlane.h:22
virtual TrajectoryStateOnSurface propagate(const Propagator &prop, const TrajectoryStateOnSurface &startingState) const
hook for double dispatch to avoid propagation to generic surface.
Definition: NavPlane.cc:8
virtual NavSurface::TSOSwithPath propagateWithPath(const Propagator &prop, const TrajectoryStateOnSurface &startingState) const
hook for double dispatch to avoid propagation to generic surface.
Definition: NavPlane.cc:15
virtual const Bounds * bounds(const NavVolume *vol)
Bounds corresponding to a NavVolume if present.
Definition: NavPlane.h:40
LinearSearchNavSurfaceImpl theImpl
Definition: NavPlane.h:53
const Bounds * bounds(const NavVolume *vol)
virtual void addVolume(const NavVolume *vol, const Bounds *bounds, SurfaceOrientation::Side side)
NavVolumes are supposed to call this method to "register" with the NavSurface.
Definition: NavPlane.h:42
virtual const NavVolume * nextVolume(const NavSurface::LocalPoint &point, SurfaceOrientation::Side side) const
Definition: NavPlane.h:28
virtual std::pair< bool, double > distanceAlongLine(const NavSurface::GlobalPoint &pos, const NavSurface::GlobalVector &dir) const
Definition: NavPlane.cc:22
const NavVolume * nextVolume(const NavSurface::LocalPoint &point, SurfaceOrientation::Side side) const
PlanePointer theSurfaceP
Definition: NavPlane.h:52
virtual const Surface & surface() const
Access to actual surface.
Definition: NavPlane.h:26
Definition: Bounds.h:22
dbl *** dir
Definition: mlp_gen.cc:35
std::pair< TrajectoryStateOnSurface, double > TSOSwithPath
Definition: NavSurface.h:26
ConstReferenceCountingPointer< Plane > PlanePointer
Definition: NavPlane.h:18
*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
void addVolume(const NavVolume *vol, const Bounds *bounds, SurfaceOrientation::Side side)