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
00036
00037
00039 std::vector<const DetLayer*>
00040 compatibleLayers(const FreeTrajectoryState& fts,
00041 PropagationDirection timeDirection) const;
00042
00043 private:
00044
00045 void inOutTOB(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00046
00047 void inOutTIB(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00048
00049 void inOutPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00050
00051 void inOutFTEC(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00052
00053 void inOutFTID(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00054
00055 void inOutFPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00056
00057 void inOutBTEC(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00058
00059 void inOutBTID(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00060
00061 void inOutBPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
00062
00063 bool checkCompatible(const FreeTrajectoryState&, const BarrelDetLayer*) const;
00064
00065 bool checkCompatible(const FreeTrajectoryState&, const ForwardDetLayer*) const;
00066
00067 bool outward(const FreeTrajectoryState&) const;
00068
00069 float calculateEta(float r, float z) const;
00070
00071 private:
00072
00073 edm::ESHandle<GeometricSearchTracker> theGeometricSearchTracker;
00074
00075 bool theOutLayerOnlyFlag;
00076
00077 float theEpsilon;
00078
00079 };
00080 #endif