CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/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 #include "FWCore/Utilities/interface/GCC11Compatibility.h"
00011 
00012 
00013 class DetLayer;
00014 class FreeTrajectoryState;
00015 
00024 class NavigableLayer  {
00025 public:
00026 
00027   virtual ~NavigableLayer() {}
00028 
00029   virtual std::vector<const DetLayer*> 
00030   nextLayers( NavigationDirection direction) const = 0;
00031 
00032   virtual std::vector<const DetLayer*> 
00033   nextLayers( const FreeTrajectoryState& fts, 
00034               PropagationDirection timeDirection) const = 0;
00035 
00036   virtual std::vector<const DetLayer*> 
00037   compatibleLayers( NavigationDirection direction) const = 0;
00038 
00039   virtual std::vector<const DetLayer*> 
00040   compatibleLayers( const FreeTrajectoryState& fts, 
00041                     PropagationDirection timeDirection) const {int counter =0; return compatibleLayers(fts,timeDirection,counter);};
00042 
00043   virtual std::vector<const DetLayer*> 
00044   compatibleLayers( const FreeTrajectoryState& fts, 
00045                     PropagationDirection timeDirection,
00046                     int& counter)const {
00047     edm::LogWarning("DetLayers") << "compatibleLayers(fts,dir,counter) not implemented. returning empty vector";
00048     return  std::vector<const DetLayer*>() ;
00049   }
00050 
00051   virtual DetLayer* detLayer() const = 0;
00052   virtual void   setDetLayer( DetLayer* dl) = 0;
00053 
00054 };
00055 
00056 #endif