Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:25:46

0001 #ifndef RecoMuon_GlobalTrackingTools_DirectTrackerNavigation_H
0002 #define RecoMuon_GlobalTrackingTools_DirectTrackerNavigation_H
0003 
0004 /** \file DirectTrackerNavigation
0005  *
0006  *  Find all DetLayers compatible with a given 
0007  *  Free Trajectory State by checking the eta range
0008  *
0009  *
0010  *
0011  *  \author Chang Liu  -  Purdue University
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 //              -- Class Interface --
0024 //              ---------------------
0025 
0026 class DirectTrackerNavigation {
0027 public:
0028   /// constructor
0029   DirectTrackerNavigation(const edm::ESHandle<GeometricSearchTracker>&, bool outOnly = true);
0030 
0031   /// find compatible layers for a given trajectory state
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