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