File indexing completed on 2024-04-06 12:26:54
0001 #ifndef RecoMuon_GlobalTrackingTools_DirectTrackerNavigation_H
0002 #define RecoMuon_GlobalTrackingTools_DirectTrackerNavigation_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "FWCore/Framework/interface/ESHandle.h"
0015 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
0016
0017 class DetLayer;
0018 class BarrelDetLayer;
0019 class ForwardDetLayer;
0020 class FreeTrajectoryState;
0021
0022
0023
0024
0025
0026 class DirectTrackerNavigation {
0027 public:
0028
0029 DirectTrackerNavigation(const edm::ESHandle<GeometricSearchTracker>&, bool outOnly = true);
0030
0031
0032 std::vector<const DetLayer*> compatibleLayers(const FreeTrajectoryState& fts,
0033 PropagationDirection timeDirection) const;
0034
0035 private:
0036 void inOutTOB(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0037
0038 void inOutTIB(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0039
0040 void inOutPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0041
0042 void inOutFTEC(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0043
0044 void inOutFTID(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0045
0046 void inOutFPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0047
0048 void inOutBTEC(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0049
0050 void inOutBTID(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0051
0052 void inOutBPx(const FreeTrajectoryState&, std::vector<const DetLayer*>&) const;
0053
0054 bool checkCompatible(const FreeTrajectoryState&, const BarrelDetLayer*) const;
0055
0056 bool checkCompatible(const FreeTrajectoryState&, const ForwardDetLayer*) const;
0057
0058 bool outward(const FreeTrajectoryState&) const;
0059
0060 float calculateEta(float r, float z) const;
0061
0062 private:
0063 edm::ESHandle<GeometricSearchTracker> theGeometricSearchTracker;
0064
0065 bool theOutLayerOnlyFlag;
0066
0067 float theEpsilon;
0068 };
0069 #endif