/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/MdcPatRec/MdcGeom/MdcGeom-00-01-17/MdcGeom/MdcSagTraj.h

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: MdcSagTraj.h,v 1.3 2009/12/17 00:38:40 zhangy Exp $
00004 //
00005 // Description:
00006 //      Class MdcSagTraj.
00007 //      the flight length at the moment is the flight length of a linear 
00008 //      trajectory, the sag is approximated with a parabola (for the
00009 //      moment, maybe at a later time we can replace with a more accurate
00010 //      description, cosh for example)
00011 //      
00012 //
00013 // Environment:
00014 //      Software developed for the BaBar Detector at the SLAC B-Factory.
00015 //
00016 // Author List:
00017 //      R. Stroili              originator
00018 //      
00019 //
00020 // Copyright Information:
00021 //      Copyright (C) 1998      INFN & Padova University
00022 // 
00023 // History:
00024 //      Migration for BESIII MDC
00025 //
00026 //------------------------------------------------------------------------
00027 
00028 #ifndef DCHSAGTRAJ_H
00029 #define DCHSAGTRAJ_H
00030 
00031 //-------------
00032 // C Headers --
00033 //-------------
00034 extern "C" {
00035 }
00036 
00037 //---------------
00038 // C++ Headers --
00039 //---------------
00040 
00041 //----------------------
00042 // Base Class Headers --
00043 //----------------------
00044 #include "MdcGeom/TrkGeomTraj.h"
00045 
00046 //-------------------------------
00047 // Collaborating Class Headers --
00048 //-------------------------------
00049 #include "CLHEP/Geometry/Point3D.h"
00050 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00051 typedef HepGeom::Point3D<double> HepPoint3D;
00052 #endif
00053 #include "CLHEP/Vector/ThreeVector.h"
00054 using CLHEP::Hep3Vector;
00055 
00056 //------------------------------------
00057 // Collaborating Class Declarations --
00058 //------------------------------------
00059 class Trajectory;
00060 
00061 //              ---------------------
00062 //              -- Class Interface --
00063 //              ---------------------
00064 
00065 class MdcSagTraj : public TrkGeomTraj {
00066 
00067 public:
00068 
00069   // Constructors
00070   MdcSagTraj(const double sag, const HepPoint3D& point1, const HepPoint3D& point2);
00071   MdcSagTraj(const MdcSagTraj& traj);
00072  
00073   MdcSagTraj* clone() const;
00074   // Destructor
00075   virtual ~MdcSagTraj( );
00076 
00077   // Operators
00078   MdcSagTraj& operator=(const MdcSagTraj&);
00079 
00080   double sag( void ) const { return _sag; }
00081 
00082 // needed implementations for intersection with a Surface
00083   HepPoint3D position( double ) const;
00084   Hep3Vector direction( double ) const;
00085   double curvature( double f = 0. ) const;
00086   Hep3Vector delDirect( double ) const;
00087   const Hep3Vector& rawDirection( void ) const { return _direction; }
00088   void  getInfo(double fltLen, HepPoint3D& , Hep3Vector& direction) const;
00089   void  getInfo(double fltLen, HepPoint3D& , Hep3Vector& direction, 
00090                         Hep3Vector& delDirect) const;
00091 
00092   virtual double distTo1stError(double s, double tol, int pathDir) const;
00093   virtual double distTo2ndError(double s, double tol, int pathDir) const;
00094   double deltaY(double fltLen) const { return (_a*fltLen+_b)*fltLen; }
00095   // Support Visitor pattern (see TrkGeomTraj.h)
00096   void accept(TrkGeomTrajVisitor& visitor) const;
00097 
00098 //    virtual int operator==( const MdcSagTraj& ) const;
00099 //            int operator!=( const MdcSagTraj& ) const;
00100 
00101 private:
00102 
00103   // Data members
00104   double _sag;
00105   double _a;
00106   double _b;
00107   double _length;
00108 //   double _a_H;
00109 //   double _b_H;
00110   HepPoint3D _start; // where the trajectory starts
00111   HepPoint3D _stop; // where the trajectory stops
00112   Hep3Vector _direction; // direction (unit) vector for 
00113                          // null sag (straight line)
00114 
00115   Hep3Vector deviation(double) const; // displacement from the line trajectory
00116                                       // at a given flightlength
00117   //Note: if your class needs a copy constructor or an assignment operator, 
00118   //  make one of the following public and implement it.
00119 //   MdcSagTraj( const MdcSagTraj& );       // Copy Constructor
00120 //   MdcSagTraj&       operator= ( const MdcSagTraj& );  // Assignment op
00121 
00122 };
00123 
00124 #endif // DCHSAGTRAJ_H

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