Go to the documentation of this file.00001 #ifndef Navigation_MuonForwardNavigableLayer_H
00002 #define Navigation_MuonForwardNavigableLayer_H
00003
00019
00020 #include "RecoMuon/Navigation/interface/MuonDetLayerMap.h"
00021 #include "RecoMuon/Navigation/interface/MuonEtaRange.h"
00022
00023 class DetLayer;
00024 class ForwardDetLayer;
00025
00026
00027 #include "RecoMuon/Navigation/interface/MuonNavigableLayer.h"
00028
00029
00030
00031
00032
00033
00034
00035 class MuonForwardNavigableLayer : public MuonNavigableLayer {
00036
00037 public:
00038
00039 MuonForwardNavigableLayer(ForwardDetLayer* fdl,
00040 const MapB& innerBarrel,
00041 const MapE& outerEndcap,
00042 const MapE& innerEndcap,
00043 const MapB& allInnerBarrel,
00044 const MapE& allOuterEndcap,
00045 const MapE& allInnerEndcap) :
00046 theDetLayer(fdl),
00047 theInnerBarrelLayers(innerBarrel),
00048 theOuterEndcapLayers(outerEndcap),
00049 theInnerEndcapLayers(innerEndcap),
00050 theAllInnerBarrelLayers(allInnerBarrel),
00051 theAllOuterEndcapLayers(allOuterEndcap),
00052 theAllInnerEndcapLayers(allInnerEndcap) {}
00053
00055 MuonForwardNavigableLayer(ForwardDetLayer* fdl,
00056 const MapE& outerEndcap) :
00057 theDetLayer(fdl),
00058 theOuterEndcapLayers(outerEndcap) {}
00060 MuonForwardNavigableLayer(ForwardDetLayer* fdl,
00061 const MapE& outerEndcap,
00062 const MapE& allOuterEndcap) :
00063 theDetLayer(fdl),
00064 theOuterEndcapLayers(outerEndcap),
00065 theAllOuterEndcapLayers(allOuterEndcap) {}
00066
00067
00069 virtual std::vector<const DetLayer*> nextLayers(NavigationDirection dir) const;
00070
00072 virtual std::vector<const DetLayer*> nextLayers(const FreeTrajectoryState& fts,
00073 PropagationDirection dir) const;
00074
00075 virtual std::vector<const DetLayer*> compatibleLayers(NavigationDirection dir) const;
00076
00078 virtual std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts,
00079 PropagationDirection dir) const;
00081 virtual DetLayer* detLayer() const;
00082
00084 virtual void setDetLayer(DetLayer*);
00085
00087 MapE getOuterEndcapLayers() const { return theOuterEndcapLayers; }
00088 MapE getInnerEndcapLayers() const { return theInnerEndcapLayers; }
00089 MapB getInnerBarrelLayers() const { return theInnerBarrelLayers; }
00090
00091 MapE getAllOuterEndcapLayers() const { return theAllOuterEndcapLayers; }
00092 MapE getAllInnerEndcapLayers() const { return theAllInnerEndcapLayers; }
00093 MapB getAllInnerBarrelLayers() const { return theAllInnerBarrelLayers; }
00094
00096 void setInwardLinks(const MapB&, const MapE&);
00097 void setInwardCompatibleLinks(const MapB&, const MapE&);
00098
00099 private:
00100
00101 void pushResult(std::vector<const DetLayer*>& result,
00102 const MapB& map) const;
00103
00104 void pushResult(std::vector<const DetLayer*>& result,
00105 const MapE& map) const;
00106
00107 void pushResult(std::vector<const DetLayer*>& result,
00108 const MapB& map,
00109 const FreeTrajectoryState& fts) const;
00110
00111 void pushResult(std::vector<const DetLayer*>& result,
00112 const MapE& map, const
00113 FreeTrajectoryState& fts) const;
00114
00115 void pushCompatibleResult(std::vector<const DetLayer*>& result,
00116 const MapB& map, const
00117 FreeTrajectoryState& fts) const;
00118
00119 void pushCompatibleResult(std::vector<const DetLayer*>& result,
00120 const MapE& map, const
00121 FreeTrajectoryState& fts) const;
00122
00123
00124 private:
00125
00126 ForwardDetLayer* theDetLayer;
00127 MapB theInnerBarrelLayers;
00128 MapE theOuterEndcapLayers;
00129 MapE theInnerEndcapLayers;
00130 MapB theAllInnerBarrelLayers;
00131 MapE theAllOuterEndcapLayers;
00132 MapE theAllInnerEndcapLayers;
00133
00134 };
00135 #endif