00001 #ifndef TkNavigation_SimpleForwardNavigableLayer_H
00002 #define TkNavigation_SimpleForwardNavigableLayer_H
00003
00004 #include "RecoTracker/TkNavigation/interface/SimpleNavigableLayer.h"
00005
00009 class SimpleForwardNavigableLayer : public SimpleNavigableLayer {
00010
00011 public:
00012
00013 SimpleForwardNavigableLayer( ForwardDetLayer* detLayer,
00014 const BDLC& outerBL,
00015 const FDLC& outerFL,
00016 const MagneticField* field,
00017 float epsilon,
00018 bool checkCrossingSide=true);
00019
00020 SimpleForwardNavigableLayer( ForwardDetLayer* detLayer,
00021 const BDLC& outerBL,
00022 const BDLC& allOuterBL,
00023 const BDLC& innerBL,
00024 const BDLC& allInnerBL,
00025 const FDLC& outerFL,
00026 const FDLC& allOuterFL,
00027 const FDLC& innerFL,
00028 const FDLC& allInnerFL,
00029 const MagneticField* field,
00030 float epsilon,
00031 bool checkCrossingSide=true);
00032
00033
00034 virtual std::vector<const DetLayer*>
00035 nextLayers( NavigationDirection direction) const;
00036
00037 virtual std::vector<const DetLayer*>
00038 nextLayers( const FreeTrajectoryState& fts,
00039 PropagationDirection timeDirection) const;
00040
00041 virtual std::vector<const DetLayer*>
00042 compatibleLayers( NavigationDirection direction) const;
00043
00044 virtual std::vector<const DetLayer*>
00045 compatibleLayers( const FreeTrajectoryState& fts,
00046 PropagationDirection timeDirection) const;
00047
00048 virtual void setAdditionalLink(DetLayer*, NavigationDirection direction=insideOut);
00049
00050 virtual DetLayer* detLayer() const;
00051 virtual void setDetLayer( DetLayer* dl);
00052
00053 virtual void setInwardLinks( const BDLC&, const FDLC&, TkLayerLess sorter = TkLayerLess(outsideIn));
00054
00055 private:
00056 bool areAllReachableLayersSet;
00057
00058 ForwardDetLayer* theDetLayer;
00059 BDLC theOuterBarrelLayers;
00060 BDLC theAllOuterBarrelLayers;
00061 BDLC theInnerBarrelLayers;
00062 BDLC theAllInnerBarrelLayers;
00063 FDLC theOuterForwardLayers;
00064 FDLC theAllOuterForwardLayers;
00065 FDLC theInnerForwardLayers;
00066 FDLC theAllInnerForwardLayers;
00067 DLC theOuterLayers;
00068 DLC theInnerLayers;
00069 DLC theAllOuterLayers;
00070 DLC theAllInnerLayers;
00071
00072 };
00073
00074 #endif // SimpleForwardNavigableLayer_H
00075
00076
00077