CMS 3D CMS Logo

NavigableLayer.h
Go to the documentation of this file.
1 #ifndef DetLayers_NavigableLayer_h
2 #define DetLayers_NavigableLayer_h
3 
7 
8 #include <vector>
9 
11 
12 
13 class DetLayer;
15 class NavigationSchool;
16 
26 public:
27 
28  virtual ~NavigableLayer() {}
29 
30  virtual std::vector<const DetLayer*>
31  nextLayers( NavigationDirection direction) const = 0;
32 
33  virtual std::vector<const DetLayer*>
34  nextLayers( const FreeTrajectoryState& fts,
35  PropagationDirection timeDirection) const = 0;
36 
37  virtual std::vector<const DetLayer*>
38  compatibleLayers( NavigationDirection direction) const = 0;
39 
40  virtual std::vector<const DetLayer*>
42  PropagationDirection timeDirection) const {int counter =0; return compatibleLayers(fts,timeDirection,counter);};
43 
44  virtual std::vector<const DetLayer*>
46  PropagationDirection timeDirection,
47  int& counter)const {
48  edm::LogWarning("DetLayers") << "compatibleLayers(fts,dir,counter) not implemented. returning empty vector";
49  return std::vector<const DetLayer*>() ;
50  }
51 
52  virtual DetLayer const* detLayer() const = 0;
53  virtual void setDetLayer( DetLayer const* dl) = 0;
54 
55  void setSchool(NavigationSchool const * sh) {school = sh;}
56 
57 protected :
58 
59  NavigationSchool const * school=nullptr;
60 
61 };
62 
63 #endif
PropagationDirection
virtual std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
void setSchool(NavigationSchool const *sh)
virtual void setDetLayer(DetLayer const *dl)=0
virtual ~NavigableLayer()
virtual std::vector< const DetLayer * > compatibleLayers(NavigationDirection direction) const =0
NavigationSchool const * school
virtual std::vector< const DetLayer * > nextLayers(NavigationDirection direction) const =0
virtual DetLayer const * detLayer() const =0
virtual std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection, int &counter) const