CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoMuon/Navigation/interface/DirectMuonNavigation.h

Go to the documentation of this file.
00001 #ifndef CosmicMuonProducer_DirectMuonNavigation_H
00002 #define CosmicMuonProducer_DirectMuonNavigation_H
00003 
00013 #include "FWCore/Framework/interface/ESHandle.h"
00014 #include "DataFormats/GeometrySurface/interface/BoundCylinder.h"
00015 #include "TrackingTools/DetLayers/interface/DetLayer.h"
00016 #include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"
00017 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
00018 #include "FWCore/Framework/interface/EventSetup.h"
00019 #include "RecoMuon/DetLayers/interface/MuonDetLayerGeometry.h"
00020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00021 
00022 class DirectMuonNavigation{
00023 
00024   public:
00025 
00026     /* Constructor */ 
00027     DirectMuonNavigation(const edm::ESHandle<MuonDetLayerGeometry>&);
00028 
00029     DirectMuonNavigation(const edm::ESHandle<MuonDetLayerGeometry>&, const edm::ParameterSet&);
00030 
00031     DirectMuonNavigation* clone() const {
00032       return new DirectMuonNavigation(*this);
00033     }
00034 
00035     /* Destructor */ 
00036     ~DirectMuonNavigation() {}
00037 
00038     std::vector<const DetLayer*> 
00039       compatibleLayers( const FreeTrajectoryState& fts, 
00040                         PropagationDirection timeDirection) const;
00041 
00042 
00043     std::vector<const DetLayer*>
00044       compatibleEndcapLayers( const FreeTrajectoryState& fts,
00045                               PropagationDirection timeDirection) const;
00046 
00047   private:
00048 
00049     void inOutBarrel(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00050     void outInBarrel(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00051 
00052     void inOutForward(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00053     void outInForward(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const; 
00054 
00055     void inOutBackward(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00056     void outInBackward(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00057 
00058     bool checkCompatible(const FreeTrajectoryState& fts,const BarrelDetLayer*) const;
00059     bool checkCompatible(const FreeTrajectoryState& fts,const ForwardDetLayer*) const;
00060     bool outward(const FreeTrajectoryState& fts) const;
00061 
00062     edm::ESHandle<MuonDetLayerGeometry> theMuonDetLayerGeometry;
00063     float epsilon_;
00064     bool theEndcapFlag;
00065     bool theBarrelFlag;
00066 
00067 };
00068 #endif