CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/TrackPropagation/NavGeometry/interface/NavVolume.h

Go to the documentation of this file.
00001 #ifndef NavVolume_H
00002 #define NavVolume_H
00003 
00004 #include "MagneticField/VolumeGeometry/interface/MagVolume.h"
00005 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00006 #include "DetectorDescription/Core/interface/DDSolidShapes.h"
00007 
00008 #include  "TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h"
00009 #include  "TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h"
00010 
00011 #include <vector>
00012 
00013 class NavSurface;
00014 class Bounds;
00015 class TrajectoryStateOnSurface;
00016 
00017 class NavVolume : public MagVolume {
00018 public:
00019 
00020   NavVolume( const PositionType& pos, const RotationType& rot, 
00021              DDSolidShape shape, const MagneticFieldProvider<float> * mfp) :
00022     MagVolume(pos,rot,shape,mfp) {}
00023 
00024   typedef std::vector<SurfaceAndBounds>                         Container;
00026 
00027 
00028   virtual ~NavVolume() {} 
00029 
00030   virtual Container nextSurface( const LocalPoint& pos, const LocalVector& mom, double charge, 
00031                                  PropagationDirection propDir = alongMomentum) const = 0;
00032 
00034   virtual Container nextSurface( const LocalPoint& pos, const LocalVector& mom, double charge, 
00035                                  PropagationDirection propDir,
00036                                  ConstReferenceCountingPointer<Surface> NotThisSurfaceP) const = 0;
00037   
00038   virtual VolumeCrossReturnType crossToNextVolume( const TrajectoryStateOnSurface& currentState, 
00039                                                    const Propagator& prop) const = 0;
00040 
00041   virtual bool isIron() const = 0;
00042 
00043 };
00044 
00045 #endif
00046