00001 #ifndef Navigation_MuonNavigableLayer_H 00002 #define Navigation_MuonNavigableLayer_H 00003 00019 #include "RecoMuon/Navigation/interface/MuonDetLayerMap.h" 00020 #include "RecoMuon/Navigation/interface/MuonEtaRange.h" 00021 00022 class DetLayer; 00023 class BarrelDetLayer; 00024 00025 #include "TrackingTools/DetLayers/interface/NavigableLayer.h" 00026 00027 00028 class MuonNavigableLayer : public NavigableLayer { 00029 00030 public: 00031 00033 virtual std::vector<const DetLayer*> nextLayers(NavigationDirection dir) const=0; 00034 00036 virtual std::vector<const DetLayer*> nextLayers(const FreeTrajectoryState& fts, 00037 PropagationDirection dir) const=0; 00038 00039 virtual std::vector<const DetLayer*> compatibleLayers(NavigationDirection dir) const=0; 00040 00042 virtual std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts, 00043 PropagationDirection dir) const=0; 00044 00046 virtual DetLayer* detLayer() const=0; 00047 00049 virtual void setDetLayer(DetLayer*)=0; 00050 00051 MuonEtaRange trackingRange(const FreeTrajectoryState& fts) const; 00052 00053 bool isInsideOut(const FreeTrajectoryState& fts) const; 00054 00055 }; 00056 #endif