CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/RecoMuon/Navigation/interface/MuonBarrelNavigableLayer.h

Go to the documentation of this file.
00001 #ifndef Navigation_MuonBarrelNavigableLayer_H
00002 #define Navigation_MuonBarrelNavigableLayer_H
00003 
00022 /* Collaborating Class Declarations */
00023 #include "RecoMuon/Navigation/interface/MuonDetLayerMap.h"
00024 #include "RecoMuon/Navigation/interface/MuonEtaRange.h"
00025 
00026 class DetLayer;
00027 class BarrelDetLayer;
00028 
00029 /* Base Class Headers */
00030 #include "RecoMuon/Navigation/interface/MuonNavigableLayer.h"
00031 /* C++ Headers */
00032 
00033 /* ====================================================================== */
00034 
00035 /* Class MuonBarrelNavigableLayer Interface */
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