00001 #ifndef Navigation_MuonBarrelNavigableLayer_H
00002 #define Navigation_MuonBarrelNavigableLayer_H
00003
00022
00023 #include "RecoMuon/Navigation/interface/MuonDetLayerMap.h"
00024 #include "RecoMuon/Navigation/interface/MuonEtaRange.h"
00025
00026 class DetLayer;
00027 class BarrelDetLayer;
00028
00029
00030 #include "RecoMuon/Navigation/interface/MuonNavigableLayer.h"
00031
00032
00033
00034
00035
00036
00037 class MuonBarrelNavigableLayer : public MuonNavigableLayer {
00038
00039 public:
00040
00042 MuonBarrelNavigableLayer(BarrelDetLayer* bdl,
00043 const MapB& outerBarrel,
00044 const MapB& innerBarrel,
00045 const MapE& outerBackward,
00046 const MapE& outerForward,
00047 const MapE& innerBackward,
00048 const MapE& innerForward) :
00049 theDetLayer(bdl),
00050 theOuterBarrelLayers(outerBarrel),
00051 theInnerBarrelLayers(innerBarrel),
00052 theOuterBackwardLayers(outerBackward),
00053 theInnerBackwardLayers(innerBackward),
00054 theOuterForwardLayers(outerForward),
00055 theInnerForwardLayers(innerForward) {}
00056
00057 MuonBarrelNavigableLayer(BarrelDetLayer* bdl,
00058 const MapB& outerBarrel,
00059 const MapB& innerBarrel,
00060 const MapE& outerBackward,
00061 const MapE& outerForward,
00062 const MapE& innerBackward,
00063 const MapE& innerForward,
00064 const MapB& allOuterBarrel,
00065 const MapB& allInnerBarrel,
00066 const MapE& allOuterBackward,
00067 const MapE& allOuterForward,
00068 const MapE& allInnerBackward,
00069 const MapE& allInnerForward) :
00070 theDetLayer(bdl),
00071 theOuterBarrelLayers(outerBarrel),
00072 theInnerBarrelLayers(innerBarrel),
00073 theOuterBackwardLayers(outerBackward),
00074 theInnerBackwardLayers(innerBackward),
00075 theOuterForwardLayers(outerForward),
00076 theInnerForwardLayers(innerForward),
00077 theAllOuterBarrelLayers(allOuterBarrel),
00078 theAllInnerBarrelLayers(allInnerBarrel),
00079 theAllOuterBackwardLayers(allOuterBackward),
00080 theAllInnerBackwardLayers(allInnerBackward),
00081 theAllOuterForwardLayers(allOuterForward),
00082 theAllInnerForwardLayers(allInnerForward) {}
00083
00085 MuonBarrelNavigableLayer(BarrelDetLayer* bdl,
00086 const MapB& outerBarrel,
00087 const MapE& outerBackward,
00088 const MapE& outerForward) :
00089 theDetLayer(bdl),
00090 theOuterBarrelLayers(outerBarrel),
00091 theOuterBackwardLayers(outerBackward),
00092 theOuterForwardLayers(outerForward) { }
00093
00094 MuonBarrelNavigableLayer(BarrelDetLayer* bdl,
00095 const MapB& outerBarrel,
00096 const MapE& outerBackward,
00097 const MapE& outerForward,
00098 const MapB& allOuterBarrel,
00099 const MapE& allOuterBackward,
00100 const MapE& allOuterForward) :
00101 theDetLayer(bdl),
00102 theOuterBarrelLayers(outerBarrel),
00103 theOuterBackwardLayers(outerBackward),
00104 theOuterForwardLayers(outerForward),
00105 theAllOuterBarrelLayers(allOuterBarrel),
00106 theAllOuterBackwardLayers(allOuterBackward),
00107 theAllOuterForwardLayers(allOuterForward) {}
00108
00110 virtual std::vector<const DetLayer*> nextLayers(NavigationDirection dir) const;
00111
00113 virtual std::vector<const DetLayer*> nextLayers(const FreeTrajectoryState& fts,
00114 PropagationDirection dir) const;
00115
00116 virtual std::vector<const DetLayer*> compatibleLayers(NavigationDirection dir) const;
00117
00119 virtual std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts,
00120 PropagationDirection dir) const;
00121
00123 virtual DetLayer* detLayer() const;
00124
00126 virtual void setDetLayer(DetLayer*);
00127
00128 MapB getOuterBarrelLayers() const { return theOuterBarrelLayers; }
00129 MapB getInnerBarrelLayers() const { return theInnerBarrelLayers; }
00130 MapE getOuterBackwardLayers() const { return theOuterBackwardLayers; }
00131 MapE getInnerBackwardLayers() const { return theInnerBackwardLayers; }
00132 MapE getOuterForwardLayers() const { return theOuterForwardLayers; }
00133 MapE getInnerForwardLayers() const { return theInnerForwardLayers; }
00134
00135 MapB getAllOuterBarrelLayers() const { return theAllOuterBarrelLayers; }
00136 MapB getAllInnerBarrelLayers() const { return theAllInnerBarrelLayers; }
00137 MapE getAllOuterBackwardLayers() const { return theAllOuterBackwardLayers; }
00138 MapE getAllInnerBackwardLayers() const { return theAllInnerBackwardLayers; }
00139 MapE getAllOuterForwardLayers() const { return theAllOuterForwardLayers; }
00140 MapE getAllInnerForwardLayers() const { return theAllInnerForwardLayers; }
00141
00143 void setInwardLinks(const MapB&);
00144 void setInwardCompatibleLinks(const MapB&);
00145
00146 private:
00147
00148 void pushResult(std::vector<const DetLayer*>& result,
00149 const MapB& map) const;
00150
00151 void pushResult(std::vector<const DetLayer*>& result,
00152 const MapE& map) const;
00153
00154 void pushResult(std::vector<const DetLayer*>& result,
00155 const MapB& map, const
00156 FreeTrajectoryState& fts) const;
00157
00158 void pushResult(std::vector<const DetLayer*>& result,
00159 const MapE& map, const
00160 FreeTrajectoryState& fts) const;
00161 void pushCompatibleResult(std::vector<const DetLayer*>& result,
00162 const MapB& map, const
00163 FreeTrajectoryState& fts) const;
00164
00165 void pushCompatibleResult(std::vector<const DetLayer*>& result,
00166 const MapE& map, const
00167 FreeTrajectoryState& fts) const;
00168
00169 private:
00170
00171 BarrelDetLayer* theDetLayer;
00172 MapB theOuterBarrelLayers;
00173 MapB theInnerBarrelLayers;
00174 MapE theOuterBackwardLayers;
00175 MapE theInnerBackwardLayers;
00176 MapE theOuterForwardLayers;
00177 MapE theInnerForwardLayers;
00178 MapB theAllOuterBarrelLayers;
00179 MapB theAllInnerBarrelLayers;
00180 MapE theAllOuterBackwardLayers;
00181 MapE theAllInnerBackwardLayers;
00182 MapE theAllOuterForwardLayers;
00183 MapE theAllInnerForwardLayers;
00184
00185 };
00186 #endif