00001 #ifndef DTSLRECCLUSTER_H 00002 #define DTSLRECCLUSTER_H 00003 00017 /* Base Class Headers */ 00018 #include "DataFormats/TrackingRecHit/interface/RecHit1D.h" 00019 00020 /* Collaborating Class Declarations */ 00021 #include "DataFormats/MuonDetId/interface/DTSuperLayerId.h" 00022 #include "DataFormats/DTRecHit/interface/DTRecHit1DPair.h" 00023 00024 /* C++ Headers */ 00025 #include <iosfwd> 00026 00027 /* ====================================================================== */ 00028 00029 /* Class DTSLRecCluster Interface */ 00030 00031 class DTSLRecCluster : public RecHit1D { 00032 00033 public: 00034 00035 /* Constructor */ 00036 DTSLRecCluster() {} 00037 00039 DTSLRecCluster(const DTSuperLayerId id, const std::vector<DTRecHit1DPair>& pair) ; 00040 00042 DTSLRecCluster(const DTSuperLayerId id, 00043 const LocalPoint&, 00044 const LocalError&, 00045 const std::vector<DTRecHit1DPair>& pair) ; 00046 00047 /* Destructor */ 00048 virtual ~DTSLRecCluster() {} 00049 00050 /* Operations */ 00052 virtual DTSLRecCluster* clone() const { return new DTSLRecCluster(*this); } 00053 00055 DTSuperLayerId superLayerId() const { return theSlid; } 00056 00058 virtual AlgebraicVector parameters() const { 00059 return param( localPosition()); 00060 } 00061 00062 // The parameter error matrix 00063 virtual AlgebraicSymMatrix parametersError() const { 00064 return parError( localPositionError()); 00065 } 00066 00070 virtual AlgebraicMatrix projectionMatrix() const { 00071 return theProjectionMatrix; 00072 } 00073 00075 virtual int dimension() const { return 2;} 00076 virtual LocalPoint localPosition() const { return thePos; } 00077 virtual LocalError localPositionError() const { return thePosError; } 00078 00080 virtual std::vector<const TrackingRecHit*> recHits() const ; 00081 00082 virtual std::vector<TrackingRecHit*> recHits() ; 00083 00085 std::vector<DTRecHit1DPair> specificRecHits() const { return thePairs; } 00086 00087 int nHits() const { return thePairs.size() ; } 00088 00089 private: 00090 DTSuperLayerId theSlid; 00091 00092 LocalPoint thePos; 00093 LocalError thePosError; 00094 00095 std::vector<DTRecHit1DPair> thePairs; 00096 00097 private: 00098 static const AlgebraicMatrix theProjectionMatrix; 00099 00100 AlgebraicVector param( const LocalPoint& lp) const { 00101 AlgebraicVector result(1); 00102 result[1]=lp.x(); 00103 return result; 00104 } 00105 00106 AlgebraicSymMatrix parError( const LocalError& le) const { 00107 AlgebraicSymMatrix m(1); 00108 m[0][0]=le.xx(); 00109 return m; 00110 } 00111 00112 protected: 00113 00114 }; 00115 std::ostream& operator<<(std::ostream& os, const DTSLRecCluster& seg); 00116 #endif // DTSLRECCLUSTER_H 00117