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
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
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