00001 #ifndef TrackingRecHit_RecHit1D_H 00002 #define TrackingRecHit_RecHit1D_H 00003 00017 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" 00018 #include "DataFormats/GeometrySurface/interface/LocalError.h" 00019 #include "DataFormats/GeometryVector/interface/LocalPoint.h" 00020 00021 00022 class RecHit1D : public TrackingRecHit { 00023 public: 00024 00025 RecHit1D(DetId id) : TrackingRecHit(id) {} 00026 RecHit1D(TrackingRecHit::id_type id=0) : TrackingRecHit(id) {} 00027 00029 virtual ~RecHit1D() {} 00030 00031 00033 virtual AlgebraicVector parameters() const; 00034 00035 00037 virtual AlgebraicSymMatrix parametersError() const; 00038 00039 00041 virtual AlgebraicMatrix projectionMatrix() const { 00042 if ( !isInitialized) initialize(); 00043 return theProjectionMatrix; 00044 } 00045 00046 00048 virtual int dimension() const { 00049 return 1; 00050 } 00051 00052 00054 virtual LocalPoint localPosition() const = 0; 00055 00056 00058 virtual LocalError localPositionError() const = 0; 00059 00060 00061 private: 00062 00063 static bool isInitialized; 00064 00065 static AlgebraicMatrix theProjectionMatrix; 00066 00067 void initialize() const; 00068 00069 }; 00070 #endif 00071 00072 00073 00074 00075