CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/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 #include "FWCore/Utilities/interface/GCC11Compatibility.h"
00014 
00015 
00016 class NavSurface;
00017 class Bounds;
00018 class TrajectoryStateOnSurface;
00019 
00020 class NavVolume : public MagVolume {
00021 public:
00022 
00023   NavVolume( const PositionType& pos, const RotationType& rot, 
00024              DDSolidShape shape, const MagneticFieldProvider<float> * mfp) :
00025     MagVolume(pos,rot,shape,mfp) {}
00026 
00027   typedef std::vector<SurfaceAndBounds>                         Container;
00029 
00030 
00031   virtual ~NavVolume() {} 
00032 
00033   virtual Container nextSurface( const LocalPoint& pos, const LocalVector& mom, double charge, 
00034                                  PropagationDirection propDir = alongMomentum) const = 0;
00035 
00037   virtual Container nextSurface( const LocalPoint& pos, const LocalVector& mom, double charge, 
00038                                  PropagationDirection propDir,
00039                                  ConstReferenceCountingPointer<Surface> NotThisSurfaceP) const = 0;
00040   
00041   virtual VolumeCrossReturnType crossToNextVolume( const TrajectoryStateOnSurface& currentState, 
00042                                                    const Propagator& prop) const = 0;
00043 
00044   virtual bool isIron() const = 0;
00045 
00046 };
00047 
00048 #endif
00049