CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/DataFormats/TrackingRecHit/interface/TrackingRecHit.h

Go to the documentation of this file.
00001 #ifndef TrackingRecHit_h
00002 #define TrackingRecHit_h
00003 
00004 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00005 #include "DataFormats/DetId/interface/DetId.h"
00006 #include "DataFormats/GeometrySurface/interface/LocalError.h"
00007 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
00008 #include "DataFormats/TrackingRecHit/interface/KfComponentsHolder.h"
00009 
00010 class TrackingRecHit {
00011 public:
00012 
00013   friend class MuonTransientTrackingRecHit;
00014 
00015   typedef unsigned int id_type;
00016   
00024   enum Type { valid = 0, missing = 1, inactive = 2, bad = 3 };
00026   enum SharedInputType {all, some};
00027   
00028   explicit TrackingRecHit(DetId id, Type type=valid ) : m_id(id), m_status(type) {}
00029   explicit TrackingRecHit(id_type id=0, Type type=valid ) : m_id(id), m_status(type) {}
00030   
00031   virtual ~TrackingRecHit() {}
00032   
00033   virtual TrackingRecHit * clone() const = 0;
00034   
00035   virtual AlgebraicVector parameters() const = 0;
00036   
00037   virtual AlgebraicSymMatrix parametersError() const = 0;
00038   
00039   virtual AlgebraicMatrix projectionMatrix() const = 0;
00040 
00041   virtual void getKfComponents( KfComponentsHolder & holder ) const ; 
00042  
00043   virtual int dimension() const = 0;
00044   
00046   virtual std::vector<const TrackingRecHit*> recHits() const = 0;
00047   virtual void recHitsV(std::vector<const TrackingRecHit*> & ) const;
00048   
00050   virtual std::vector<TrackingRecHit*> recHits() = 0;
00051   virtual void recHitsV(std::vector<TrackingRecHit*> & );
00052   
00053   DetId geographicalId() const {return m_id;}
00054   
00055   virtual LocalPoint localPosition() const = 0;
00056   
00057   virtual LocalError localPositionError() const = 0;
00058   
00059   virtual float weight() const {return 1.;}
00060   
00061   Type type() const { return Type(m_status); }
00062   Type getType() const { return Type(m_status); }
00063   bool isValid() const {return getType()==valid;}
00064   
00070   virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const;
00071 
00072 protected:
00073   // used by muon...
00074   void setId(id_type iid) { m_id=iid;}
00075   inline void setType(Type ttype) { m_status=ttype;}
00076 
00077 private:
00078   
00079   id_type m_id;
00080   int m_status;
00081     
00082 };
00083 
00084 #endif