CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
22  typedef std::vector<const DetLayer*> DLC;
23  typedef std::vector<const BarrelDetLayer*> BDLC;
24  typedef std::vector<const ForwardDetLayer*> FDLC;
25 
26  SimpleNavigableLayer( const MagneticField* field,float eps,bool checkCrossingSide=true) :
27  theField(field), theEpsilon(eps),theCheckCrossingSide(checkCrossingSide),theSelfSearch(false) {}
28 
29  virtual void setInwardLinks(const BDLC&, const FDLC&, TkLayerLess sorter = TkLayerLess(outsideIn)) = 0;
30 
31  virtual void setAdditionalLink(const DetLayer*, NavigationDirection direction=insideOut) = 0;
32 
33  void setCheckCrossingSide(bool docheck) {theCheckCrossingSide = docheck;}
34 
35 
36  virtual std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts,
37  PropagationDirection timeDirection,
38  int& counter) const final;
39 
40 protected:
41 
43  float theEpsilon;
45 public:
47 protected:
48 
49  typedef BDLC::iterator BDLI;
50  typedef FDLC::iterator FDLI;
51  typedef BDLC::const_iterator ConstBDLI;
52  typedef FDLC::const_iterator ConstFDLI;
54 
55 
56  bool wellInside( const FreeTrajectoryState& fts, PropagationDirection dir,
57  const BarrelDetLayer* bl, DLC& result) const dso_internal;
58 
59  bool wellInside( const FreeTrajectoryState& fts, PropagationDirection dir,
60  const ForwardDetLayer* bl, DLC& result) const dso_internal;
61 
62  bool wellInside( const FreeTrajectoryState& fts, PropagationDirection dir,
64 
65  bool wellInside( const FreeTrajectoryState& fts, PropagationDirection dir,
66  const DLC& layers, DLC& result) const dso_internal;
67 
68  bool wellInside( const FreeTrajectoryState& fts, PropagationDirection dir,
70 
72  AnalyticalPropagator aPropagator(theField);
73  aPropagator.setPropagationDirection(dir);
74  return aPropagator;
75  }
76 
77  TSOS crossingState(const FreeTrajectoryState& fts,PropagationDirection dir) const dso_internal;
78 
79 };
80 
81 #endif // SimpleNavigableLayer_H
TrajectoryStateOnSurface TSOS
#define dso_hidden
virtual void setPropagationDirection(PropagationDirection dir)
Definition: Propagator.h:140
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
PropagationDirection
virtual std::vector< const DetLayer * > compatibleLayers(NavigationDirection direction) const =0
SimpleNavigableLayer(const MagneticField *field, float eps, bool checkCrossingSide=true)
tuple result
Definition: mps_fire.py:84
AnalyticalPropagator propagator(PropagationDirection dir) const
std::vector< const ForwardDetLayer * > FDLC
FDLC::const_iterator ConstFDLI
std::vector< const DetLayer * > DLC
#define end
Definition: vmac.h:37
#define dso_internal
void setCheckCrossingSide(bool docheck)
#define begin
Definition: vmac.h:30
static std::atomic< unsigned int > counter
dbl *** dir
Definition: mlp_gen.cc:35
volatile std::atomic< bool > shutdown_flag false
const MagneticField * theField
BDLC::const_iterator ConstBDLI
std::vector< const BarrelDetLayer * > BDLC