CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/TrackingTools/DetLayers/interface/DetLayer.h

Go to the documentation of this file.
00001 #ifndef DetLayers_DetLayer_h
00002 #define DetLayers_DetLayer_h
00003 
00018 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
00019 
00020 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00021 #include "TrackingTools/DetLayers/interface/NavigableLayer.h"
00022 #include "TrackingTools/DetLayers/interface/NavigationDirection.h"
00023 
00024 #include <vector>
00025 
00026 class DetLayer : public  virtual GeometricSearchDet {  
00027  public:
00028 
00029   typedef GeomDetEnumerators::SubDetector SubDetector;
00030   typedef GeomDetEnumerators::Location Location;
00031 
00032   DetLayer() : theNavigableLayer(0){};
00033 
00034   virtual ~DetLayer();
00035 
00036   // Extension of the interface 
00037 
00039   virtual SubDetector subDetector() const = 0;
00040 
00042   virtual Location location() const = 0;
00043 
00045   NavigableLayer* navigableLayer() const { return theNavigableLayer;}
00046 
00048   virtual void setNavigableLayer( NavigableLayer* nlp);
00049 
00052   virtual std::vector<const DetLayer*> 
00053   nextLayers( NavigationDirection direction) const;
00054 
00057   virtual std::vector<const DetLayer*> 
00058   nextLayers( const FreeTrajectoryState& fts, 
00059               PropagationDirection timeDirection) const;
00060 
00063   std::vector<const DetLayer*> 
00064   compatibleLayers( NavigationDirection direction ) const;
00065 
00068   std::vector<const DetLayer*> 
00069   compatibleLayers(const FreeTrajectoryState& fts, 
00070                    PropagationDirection timeDirection) const;
00071 
00072 
00076   std::vector<const DetLayer*> 
00077   compatibleLayers(const FreeTrajectoryState& fts, 
00078                    PropagationDirection timeDirection,
00079                    int& counter) const;
00080 
00081   
00082  private:
00083   NavigableLayer* theNavigableLayer;
00084 
00085 };
00086 
00087 #endif