CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/DataFormats/DTRecHit/interface/DTSLRecCluster.h

Go to the documentation of this file.
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