/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkReco/TrkReco-00-08-59-patch4-slc6tag/TrkReco/T3DLine.h

Go to the documentation of this file.
00001 //-----------------------------------------------------------------------------
00002 // $Id: T3DLine.h,v 1.11 2010/03/31 09:58:59 liucy Exp $
00003 //-----------------------------------------------------------------------------
00004 // Filename : T3DLine.h
00005 // Section  : Tracking
00006 // Owner    : Kenji Inami
00007 // Email    : inami@bmail.kek.jp
00008 //-----------------------------------------------------------------------------
00009 // Description : A class to represent a 3D line in tracking
00010 //               See http://bsunsrv1.kek.jp/~yiwasaki/tracking/
00011 //-----------------------------------------------------------------------------
00012 
00013 #ifdef TRKRECO_DEBUG_DETAIL
00014 #ifndef TRKRECO_DEBUG
00015 #define TRKRECO_DEBUG
00016 #endif
00017 #endif
00018 #ifndef T3DLine_FLAG_
00019 #define T3DLine_FLAG_
00020 
00021 #define Line3D  32
00022 // This must be writen in TTrackBase.h
00023 
00024 #include <string>
00025 
00026 #define HEP_SHORT_NAMES
00027 #ifndef CLHEP_POINT3D_H
00028 #include "CLHEP/Geometry/Point3D.h"
00029 #endif
00030 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00031     typedef HepGeom::Point3D<double> HepPoint3D;
00032 #endif
00033 #ifndef CLHEP_VECTOR3D_H
00034 #include "CLHEP/Geometry/Vector3D.h"
00035 #endif
00036 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00037     typedef HepGeom::Vector3D<double> HepVector3D;
00038 #endif
00039 
00040 //#include "helix/Helix.h"
00041 #include "TrackUtil/Helix.h"
00042 //#include "TrkReco/Helix.h"
00043 #include "TrkReco/TTrackBase.h"
00044 
00045 class T3DLineFitter;
00046 class TTrack;
00047 class TMLink;
00048 
00050 class T3DLine : public TTrackBase {
00051 
00052 public:
00054   T3DLine();
00055   T3DLine(const TTrack&);
00056   T3DLine(const T3DLine&);
00057 
00059   virtual ~T3DLine();
00060 
00061 public:// Extractors
00063   double dr(void) const;
00064   double phi0(void) const;
00065   double dz(void) const;
00066   double tanl(void) const;
00067 
00068   double cosPhi0(void) const;
00069   double sinPhi0(void) const;
00070 
00071   Vector a(void) const;         //dr,phi0,dz,tanl
00072 
00074   const SymMatrix& Ea(void) const;
00075 
00077   const HepPoint3D & pivot(void) const;
00078 
00080   Helix helix(void) const;
00081 
00083   unsigned ndf(void) const;
00084 
00086   double chi2(void) const;
00087 
00089   double reducedchi2(void) const;
00090 
00092   unsigned objectType(void) const;
00093 
00094 public:// Executors
00095 
00096 public:// Utilities
00098   HepPoint3D x(double) const;
00099 
00101   HepPoint3D x0(void) const;
00102 //zsl  Vector3 k(void) const; 
00103   HepVector3D k(void) const;
00104 
00106   int approach(TMLink &, bool sagCorrection = true) const;
00107 
00109   int approach_line(const HepPoint3D&,const HepVector3D&,
00110                     HepPoint3D& onLine,HepPoint3D& onTrack) const;
00111 
00113   int approach_point(const HepPoint3D&,HepPoint3D& onTrack) const;
00114 
00115 public:// Modifiers
00117   const HepPoint3D & pivot(const HepPoint3D&);
00118 
00120   void set(const HepPoint3D&,double t_dr,double t_phi0,double t_dz,double t_tanl);
00121 
00123   Vector a(const Vector&);
00124 
00126   const SymMatrix& Ea(const SymMatrix&);
00127 
00128 private:
00129   HepPoint3D _pivot;
00130   // Updated when fitted
00131   double _dr;
00132   double _phi0;
00133   double _dz;
00134   double _tanl;
00135 
00136   SymMatrix _Ea;
00137 
00138   double _chi2;
00139   unsigned _ndf;
00140 
00141   //Cashe
00142   double _cos_phi0;
00143   double _sin_phi0;
00144 
00145   static const T3DLineFitter _fitter;
00146 
00147   friend class T3DLineFitter;
00148 };
00149 
00150 inline unsigned T3DLine::objectType(void) const{
00151   return Line3D;
00152 }
00153 
00154 #endif /* T3DLine_FLAG_ */

Generated on Tue Nov 29 23:14:17 2016 for BOSS_7.0.2 by  doxygen 1.4.7