/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/MdcPatRec/TrkBase/TrkBase-00-01-12/TrkBase/TrkAbsFit.h

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //
00004 // Description:
00005 //     Defines output interface for any "fitted" track (recon'ed charged,
00006 //     hypothesized charged, or hypothesized uncharged).
00007 //
00008 // Environment:
00009 //      Software developed for the BaBar Detector at the SLAC B-Factory.
00010 //
00011 // Author(s): Steve Schaffner, Justin Albert
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 // Class interface //
00041 class TrkAbsFit {
00042 
00043 public:
00044   //********************************
00045   //Global track quantities:
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   //Information about track at a given position (flight length)
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   // Interface to vertexing algorithms (M.Bondioli 7/17/98)
00064   // covariance matrices of the track at fixed flight length
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   // accessors to 2nd derivative of chi2 wrt x and p.
00072   // x0 and p0 are filled with the pos and 3mom around which expansion
00073   // takes place, whilst Weights are filled with the 2nd deriv of chi2.
00074   // so that:
00075   //  dx=x-x0   dp=p-p0
00076   //
00077   //  chi2(x,p)=0.5 dx^t*Wxx*dx + dx^t*Wxp*dp + 0.5 dp^t*Wpp*dp
00078   // where:
00079   //  pos and mom are 3-dim Vectors,
00080   //  xxWeight ppWeight and xpWeight are 3 by 3 matrices 
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   // Valid flight range
00093   //********************************
00094   //  validRange = trajectory's valid range = flight length range 
00095   //   over which the track can be used. 
00096   //  foundRange = range over which the track is known to 
00097   //   exist (i.e. from first hit to last hit).  See derived class
00098   //   TrkFit, which is the base for all recon'ed track fits.
00099 
00100   virtual double            startValidRange()             const = 0;
00101   virtual double            endValidRange()               const = 0;
00102 
00103   //******************************************
00104   // Printing
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   // Preempt
00115   TrkAbsFit&   operator= (const TrkAbsFit&);
00116   TrkAbsFit(const TrkAbsFit &);
00117 };
00118 
00119 #endif

Generated on Tue Nov 29 23:13:41 2016 for BOSS_7.0.2 by  doxygen 1.4.7