CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch2/src/RecoMuon/Navigation/interface/MuonForwardNavigableLayer.h

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