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

Go to the documentation of this file.
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   //  friend class TrkCompMaker;
00028 
00029   //****************
00030   //Global track quantities:
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   //Information about track at a given position (flight length)
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   // maybe this isn't needed?
00051   //  TrkExchangePar     helix(double fltL)        const;
00052 
00053   //****************
00054   // Valid flight range
00055   //****************
00056   //  validRange = trajectory's valid range = flight length range 
00057   //  over which the track can be used. 
00058   double              startValidRange() const;
00059   double              endValidRange() const;
00060 
00061   // Interface to vertexing algorithms (M.Bondioli 7/17/98)
00062   // covariance matrices of the track at fixed flight length
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   // accessors to 2nd derivative of chi2 wrt x and p.
00070   // x0 and p0 are filled with the pos and 3mom around which expansion
00071   // takes place, whilst Weights are filled with the 2nd deriv of chi2.
00072   // so that:
00073   //  dx=x-x0   dp=p-p0
00074   //
00075   //  chi2(x,p)=0.5 dx^t*Wxx*dx + dx^t*Wxp*dp + 0.5 dp^t*Wpp*dp
00076   // where:
00077   //  pos and mom are 3-dim Vectors,
00078   //  xxWeight ppWeight and xpWeight are 3 by 3 matrices 
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   // Printing
00097   //****************
00098   virtual void        print(std::ostream& ) const;
00099   virtual void        printAll(std::ostream& ) const;
00100 
00101   //****************
00102   // Constructors and such
00103   //****************
00104   // Constructor from parameters
00105   TrkCompTrk(const BesPointErr& pos, 
00106              const BesVectorErr& mom, 
00107              const HepMatrix& xpCov,
00108              int charge, double chisq, int nDoF, const BField*bf);
00109   // Copy constructor (leaves original unchanged):
00110   TrkCompTrk(const TrkCompTrk& right);
00111   // Destructor
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

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