Go to the documentation of this file.00001 #ifndef RecoMuon_GlobalTrackingTools_DirectTrackerNavigation_H
00002 #define RecoMuon_GlobalTrackingTools_DirectTrackerNavigation_H
00003
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
00018
00019 class DetLayer;
00020 class BarrelDetLayer;
00021 class ForwardDetLayer;
00022 class FreeTrajectoryState;
00023
00024
00025
00026
00027
00028 class DirectTrackerNavigation {
00029
00030 public:
00031
00033 DirectTrackerNavigation(const edm::ESHandle<GeometricSearchTracker>&,
00034 bool outOnly = true);
00035
00037 virtual ~DirectTrackerNavigation() {}
00038
00040 DirectTrackerNavigation* clone() const {
00041 return new DirectTrackerNavigation(*this);
00042 }
00043
00045 std::vector<const DetLayer*>
00046 compatibleLayers(const FreeTrajectoryState& fts,
00047 PropagationDirection timeDirection) const;
00048
00049 private:
00050
00051 void inOutTOB(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00052
00053 void inOutTIB(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00054
00055 void inOutPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00056
00057 void inOutFTEC(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00058
00059 void inOutFTID(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00060
00061 void inOutFPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00062
00063 void inOutBTEC(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00064
00065 void inOutBTID(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00066
00067 void inOutBPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00068
00069 bool checkCompatible(const FreeTrajectoryState&, const BarrelDetLayer*) const;
00070
00071 bool checkCompatible(const FreeTrajectoryState&, const ForwardDetLayer*) const;
00072
00073 bool outward(const FreeTrajectoryState&) const;
00074
00075 float calculateEta(float r, float z) const;
00076
00077 private:
00078
00079 edm::ESHandle<GeometricSearchTracker> theGeometricSearchTracker;
00080
00081 bool theOutLayerOnlyFlag;
00082
00083 float theEpsilon;
00084
00085 };
00086 #endif