CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
10 class DetLayer;
12 class NavigationSchool;
13 
23 public:
24  virtual ~NavigableLayer() {}
25 
26  virtual std::vector<const DetLayer*> nextLayers(NavigationDirection direction) const = 0;
27 
28  virtual std::vector<const DetLayer*> nextLayers(const FreeTrajectoryState& fts,
29  PropagationDirection timeDirection) const = 0;
30 
31  virtual std::vector<const DetLayer*> compatibleLayers(NavigationDirection direction) const = 0;
32 
33  virtual std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts,
34  PropagationDirection timeDirection) const {
35  int counter = 0;
36  return compatibleLayers(fts, timeDirection, counter);
37  };
38 
39  virtual std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts,
40  PropagationDirection timeDirection,
41  int& counter) const {
42  edm::LogWarning("DetLayers") << "compatibleLayers(fts,dir,counter) not implemented. returning empty vector";
43  return std::vector<const DetLayer*>();
44  }
45 
46  virtual DetLayer const* detLayer() const = 0;
47  virtual void setDetLayer(DetLayer const* dl) = 0;
48 
49  void setSchool(NavigationSchool const* sh) { school = sh; }
50 
51 protected:
52  NavigationSchool const* school = nullptr;
53 };
54 
55 #endif
virtual DetLayer const * detLayer() const =0
PropagationDirection
virtual std::vector< const DetLayer * > compatibleLayers(NavigationDirection direction) const =0
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()
NavigationSchool const * school
virtual std::vector< const DetLayer * > nextLayers(NavigationDirection direction) const =0
static std::atomic< unsigned int > counter
virtual std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection, int &counter) const
Log< level::Warning, false > LogWarning