00001 #ifndef TRKCOMPTRK_HH
00002 #define TRKCOMPTRK_HH
00003
00004 #include "TrkBase/TrkAbsFit.h"
00005 #include "GaudiKernel/DataObject.h"
00006 #include <memory>
00007
00008 #include <iosfwd>
00009 #include "CLHEP/Matrix/Vector.h"
00010 #include "CLHEP/Matrix/Matrix.h"
00011 #include "CLHEP/Matrix/SymMatrix.h"
00012
00013 using CLHEP::Hep3Vector;
00014 using CLHEP::HepMatrix;
00015 using CLHEP::HepSymMatrix;
00016 class IfdKey;
00017 class TrkExchangePar;
00018 class TrkVolume;
00019 class TrkDifTraj;
00020 class TrkSimpTraj;
00021 class BField;
00022
00023
00024 class TrkCompTrk : public TrkAbsFit,public DataObject {
00025 public:
00026
00027
00028
00029
00030
00031
00032 int charge() const;
00033 double chisq() const;
00034 int nDof() const;
00035 const TrkDifTraj& traj() const;
00036 const BField& bField() const {return *_bf;}
00037
00038
00039
00040
00041
00042 HepPoint3D position(double fltL) const;
00043 Hep3Vector direction(double fltL) const;
00044 Hep3Vector momentum(double fltL=0.) const;
00045 double pt(double fltL=0.) const;
00046 BesPointErr positionErr(double fltL) const;
00047 BesVectorErr directionErr(double fltL) const;
00048 BesVectorErr momentumErr(double fltL) const;
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 double startValidRange() const;
00059 double endValidRange() const;
00060
00061
00062
00063 virtual HepMatrix posmomCov(double fltL) const;
00064 virtual void getAllCovs(double fltL,
00065 HepSymMatrix& xxCov,
00066 HepSymMatrix& ppCov,
00067 HepMatrix& xpCov) const;
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 virtual void getAllWeights(double fltL,
00081 HepVector& pos,
00082 HepVector& mom,
00083 HepSymMatrix& xxWeight,
00084 HepSymMatrix& ppWeight,
00085 HepMatrix& xpWeight)
00086 const;
00087
00088 virtual void getAllWeights(const HepPoint3D& pt,
00089 HepVector& pos,
00090 HepVector& mom,
00091 HepSymMatrix& xxWeight,
00092 HepSymMatrix& ppWeight,
00093 HepMatrix& xpWeight) const;
00094
00095
00096
00097
00098 virtual void print(std::ostream& ) const;
00099 virtual void printAll(std::ostream& ) const;
00100
00101
00102
00103
00104
00105 TrkCompTrk(const BesPointErr& pos,
00106 const BesVectorErr& mom,
00107 const HepMatrix& xpCov,
00108 int charge, double chisq, int nDoF, const BField*bf);
00109
00110 TrkCompTrk(const TrkCompTrk& right);
00111
00112 virtual ~TrkCompTrk();
00113 const TrkCompTrk& operator=(const TrkCompTrk& right);
00114
00115 private:
00116 std::auto_ptr<TrkSimpTraj> _traj;
00117 const BField* _bf;
00118 double _chisq;
00119 int _charge;
00120 int _nDof;
00121 };
00122
00123 #endif