00001 #ifndef RecoMuon_GlobalTrackingTools_StateSegmentMatcher_h 00002 #define RecoMuon_GlobalTrackingTools_StateSegmentMatcher_h 00003 00018 #include "DataFormats/DTRecHit/interface/DTRecSegment4D.h" 00019 #include "RecoMuon/GlobalTrackingTools/interface/ChamberSegmentUtility.h" 00020 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00021 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00022 #include "DataFormats/GeometrySurface/interface/LocalError.h" 00023 #include "DataFormats/GeometryVector/interface/LocalPoint.h" 00024 00025 00026 class Tsos4D { 00027 public: 00028 00029 Tsos4D(TrajectoryStateOnSurface* ); 00030 00031 // Returns the 4d vector 00032 AlgebraicVector4 paramVector() const; 00033 00034 // Returns the 4x4 covariance matrix 00035 AlgebraicSymMatrix44 errorMatrix() const; 00036 00037 private: 00038 AlgebraicVector4 tsos_4d; 00039 AlgebraicSymMatrix44 tsosErr_44; 00040 00041 }; 00042 00043 00044 00045 class Tsos2DPhi { 00046 public: 00047 // Constructor of the class 00048 Tsos2DPhi(TrajectoryStateOnSurface* ); 00049 00050 // Returns the 2d vector 00051 AlgebraicVector2 paramVector() const; 00052 00053 // Returns the 2x2 covariance matrix 00054 AlgebraicSymMatrix22 errorMatrix() const; 00055 00056 private: 00057 AlgebraicVector2 tsos_2d_phi; 00058 AlgebraicSymMatrix22 tsosErr_22_phi; 00059 }; 00060 00061 00062 00063 class Tsos2DZed { 00064 public: 00065 00066 Tsos2DZed(TrajectoryStateOnSurface* ); 00067 00068 // Returns the 2d vector 00069 AlgebraicVector2 paramVector() const; 00070 00071 // Returns the 2x2 covariance matrix 00072 AlgebraicSymMatrix22 errorMatrix() const; 00073 00074 private: 00075 AlgebraicVector2 tsos_2d_zed; 00076 AlgebraicSymMatrix22 tsosErr_22_zed; 00077 }; 00078 00079 00080 00081 class StateSegmentMatcher { 00082 00083 public: 00084 00085 // Perform the matching between a track state and a CSC segment 00086 StateSegmentMatcher(TrajectoryStateOnSurface*, CSCSegment*); 00087 00088 // Perform the matching between a track state and a DT segment 00089 StateSegmentMatcher(TrajectoryStateOnSurface*, DTRecSegment4D*); 00090 00091 // Returns the estimator value 00092 double value(); 00093 00094 private: 00095 00096 AlgebraicVector4 v1, v2; 00097 AlgebraicSymMatrix44 m1, m2; 00098 AlgebraicVector2 v1_2d, v2_2d; 00099 AlgebraicSymMatrix22 m1_2d, m2_2d; 00100 bool match2D; 00101 double estValue; 00102 }; 00103 00104 00105 #endif 00106 00107