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