CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/TrackingTools/DetLayers/interface/NavigableLayer.h

Go to the documentation of this file.
00001 #ifndef DetLayers_NavigableLayer_h
00002 #define DetLayers_NavigableLayer_h
00003 
00004 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00005 #include "TrackingTools/DetLayers/interface/NavigationDirection.h"
00006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00007 
00008 #include <vector>
00009 
00010 class DetLayer;
00011 class FreeTrajectoryState;
00012 
00021 class NavigableLayer  {
00022 public:
00023 
00024   virtual ~NavigableLayer() {}
00025 
00026   virtual std::vector<const DetLayer*> 
00027   nextLayers( NavigationDirection direction) const = 0;
00028 
00029   virtual std::vector<const DetLayer*> 
00030   nextLayers( const FreeTrajectoryState& fts, 
00031               PropagationDirection timeDirection) const = 0;
00032 
00033   virtual std::vector<const DetLayer*> 
00034   compatibleLayers( NavigationDirection direction) const = 0;
00035 
00036   virtual std::vector<const DetLayer*> 
00037   compatibleLayers( const FreeTrajectoryState& fts, 
00038                     PropagationDirection timeDirection) const {int counter =0; return compatibleLayers(fts,timeDirection,counter);};
00039 
00040   virtual std::vector<const DetLayer*> 
00041   compatibleLayers( const FreeTrajectoryState& fts, 
00042                     PropagationDirection timeDirection,
00043                     int& counter)const {
00044     edm::LogWarning("DetLayers") << "compatibleLayers(fts,dir,counter) not implemented. returning empty vector";
00045     return  std::vector<const DetLayer*>() ;
00046   }
00047 
00048   virtual DetLayer* detLayer() const = 0;
00049   virtual void   setDetLayer( DetLayer* dl) = 0;
00050 
00051 };
00052 
00053 #endif