CMS 3D CMS Logo

SimpleNavigableLayer.h
Go to the documentation of this file.
1 #ifndef TkNavigation_SimpleNavigableLayer_H
2 #define TkNavigation_SimpleNavigableLayer_H
3 
7 
11 
12 #include <vector>
13 
14 class GtfPropagator;
15 
20 public:
21  typedef std::vector<const DetLayer*> DLC;
22  typedef std::vector<const BarrelDetLayer*> BDLC;
23  typedef std::vector<const ForwardDetLayer*> FDLC;
24 
25  SimpleNavigableLayer(const MagneticField* field, float eps, bool checkCrossingSide = true)
26  : theField(field), theEpsilon(eps), theCheckCrossingSide(checkCrossingSide), theSelfSearch(false) {}
27 
28  virtual void setInwardLinks(const BDLC&, const FDLC&, TkLayerLess sorter = TkLayerLess(outsideIn)) = 0;
29 
30  virtual void setAdditionalLink(const DetLayer*, NavigationDirection direction = insideOut) = 0;
31 
32  void setCheckCrossingSide(bool docheck) { theCheckCrossingSide = docheck; }
33 
35  std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts,
36  PropagationDirection timeDirection,
37  int& counter) const final;
38 
39 protected:
41  float theEpsilon;
43 
44 public:
46 
47 protected:
48  typedef BDLC::iterator BDLI;
49  typedef FDLC::iterator FDLI;
50  typedef BDLC::const_iterator ConstBDLI;
51  typedef FDLC::const_iterator ConstFDLI;
53 
54  bool wellInside(const FreeTrajectoryState& fts,
56  const BarrelDetLayer* bl,
57  DLC& result) const dso_internal;
58 
59  bool wellInside(const FreeTrajectoryState& fts,
61  const ForwardDetLayer* bl,
62  DLC& result) const dso_internal;
63 
64  bool wellInside(const FreeTrajectoryState& fts,
66  ConstBDLI begin,
67  ConstBDLI end,
68  DLC& result) const dso_internal;
69 
70  bool wellInside(const FreeTrajectoryState& fts,
72  const DLC& layers,
73  DLC& result) const dso_internal;
74 
75  bool wellInside(const FreeTrajectoryState& fts,
77  ConstFDLI begin,
78  ConstFDLI end,
79  DLC& result) const dso_internal;
80 
82  AnalyticalPropagator aPropagator(theField);
83  aPropagator.setPropagationDirection(dir);
84  return aPropagator;
85  }
86 
87  TSOS crossingState(const FreeTrajectoryState& fts, PropagationDirection dir) const dso_internal;
88 };
89 
90 #endif // SimpleNavigableLayer_H
TrajectoryStateOnSurface TSOS
virtual void setPropagationDirection(PropagationDirection dir)
Definition: Propagator.h:130
PropagationDirection
SimpleNavigableLayer(const MagneticField *field, float eps, bool checkCrossingSide=true)
AnalyticalPropagator propagator(PropagationDirection dir) const
std::vector< const ForwardDetLayer * > FDLC
FDLC::const_iterator ConstFDLI
std::vector< const DetLayer * > DLC
#define dso_internal
Definition: Visibility.h:13
#define end
Definition: vmac.h:39
virtual std::vector< const DetLayer * > compatibleLayers(NavigationDirection direction) const =0
#define dso_hidden
Definition: Visibility.h:12
void setCheckCrossingSide(bool docheck)
#define begin
Definition: vmac.h:32
const MagneticField * theField
BDLC::const_iterator ConstBDLI
std::vector< const BarrelDetLayer * > BDLC