00001 #ifndef TrackReco_Track_h 00002 #define TrackReco_Track_h 00003 00020 #include "DataFormats/TrackReco/interface/TrackBase.h" 00021 #include "DataFormats/TrackReco/interface/TrackExtra.h" 00022 #include "DataFormats/TrackReco/interface/TrackExtraFwd.h" 00023 #include "DataFormats/TrackingRecHit/interface/TrackingRecHitFwd.h" 00024 00025 namespace reco { 00026 00027 class Track : public TrackBase { 00028 public: 00030 Track() { } 00032 virtual ~Track(); 00034 Track( double chi2, double ndof, const Point & referencePoint, 00035 const Vector & momentum, int charge, const CovarianceMatrix &, 00036 TrackAlgorithm=undefAlgorithm, TrackQuality quality=undefQuality); 00038 bool outerOk() const { return extra_->outerOk(); } 00040 bool innerOk() const { return extra_->innerOk(); } 00042 const math::XYZPoint & innerPosition() const { return extra_->innerPosition(); } 00043 00045 const math::XYZVector & innerMomentum() const { return extra_->innerMomentum(); } 00047 const math::XYZPoint & outerPosition() const { return extra_->outerPosition(); } 00049 const math::XYZVector & outerMomentum() const { return extra_->outerMomentum(); } 00051 CovarianceMatrix outerStateCovariance() const { return extra_->outerStateCovariance(); } 00053 CovarianceMatrix innerStateCovariance() const { return extra_->innerStateCovariance(); } 00055 CovarianceMatrix & fillOuter( CovarianceMatrix & v ) const { return extra_->fillOuter( v ); } 00057 CovarianceMatrix & fillInner( CovarianceMatrix & v ) const { return extra_->fillInner( v ); } 00059 unsigned int outerDetId() const { return extra_->outerDetId(); } 00061 unsigned int innerDetId() const { return extra_->innerDetId(); } 00063 trackingRecHit_iterator recHitsBegin() const { return extra_->recHitsBegin(); } 00065 trackingRecHit_iterator recHitsEnd() const { return extra_->recHitsEnd(); } 00067 TrackingRecHitRef recHit( size_t i ) const { return extra_->recHit( i ); } 00069 size_t recHitsSize() const { return extra_->recHitsSize(); } 00071 double outerPx() const { return extra_->outerPx(); } 00073 double outerPy() const { return extra_->outerPy(); } 00075 double outerPz() const { return extra_->outerPz(); } 00077 double outerX() const { return extra_->outerX(); } 00079 double outerY() const { return extra_->outerY(); } 00081 double outerZ() const { return extra_->outerZ(); } 00083 double outerP() const { return extra_->outerP(); } 00085 double outerPt() const { return extra_->outerPt(); } 00087 double outerPhi() const { return extra_->outerPhi(); } 00089 double outerEta() const { return extra_->outerEta(); } 00091 double outerTheta() const { return extra_->outerTheta(); } 00093 double outerRadius() const { return extra_->outerRadius(); } 00095 void setExtra( const TrackExtraRef & ref ) { extra_ = ref; } 00097 const TrackExtraRef & extra() const { return extra_; } 00098 00100 unsigned short found() const { return numberOfValidHits(); } 00102 unsigned short lost() const {return numberOfLostHits(); } 00103 00105 PropagationDirection seedDirection() const {return extra_->seedDirection();} 00106 00112 edm::RefToBase<TrajectorySeed> seedRef() const { return extra_->seedRef(); } 00113 00117 const TrackResiduals &residuals () const { return extra_->residuals(); } 00120 double residualX (int position) const; 00121 double residualY (int position) const; 00122 00123 private: 00125 TrackExtraRef extra_; 00126 00127 }; 00128 00129 } 00130 00131 #endif