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

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: TrkHelixUtils.h,v 1.2 2006/03/28 01:02:36 zhangy Exp $
00004 //
00005 // Description:  package of utility routines for doing things to helices.
00006 //  No data members.  I'll probably want to put this someplace else 
00007 //  eventually.
00008 //
00009 // Environment:
00010 //      Software developed for the BaBar Detector at the SLAC B-Factory.
00011 //
00012 // Author(s): Steve Schaffner
00013 //
00014 //------------------------------------------------------------------------
00015 
00016 #ifndef TRKHELIXUTILS_H
00017 #define TRKHELIXUTILS_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::HepMatrix;
00027 using CLHEP::HepVector;
00028 using CLHEP::Hep3Vector;
00029 using CLHEP::HepSymMatrix;
00030 
00031 class TrkExchangePar;
00032 class BField;
00033 class BesPointErr;
00034 class BesVectorErr;
00035 class NeutParams;
00036 // Class interface //
00037 class TrkHelixUtils {
00038 
00039 public:
00040   TrkHelixUtils() { };
00041 
00042      // Create a helix-set from a position and a momentum.
00043      // Uses nominal B field to determine curvature. 
00044   static TrkExchangePar helixFromMom(const HepPoint3D& vertex, 
00045                 const Hep3Vector& p, double sign, const BField&);
00046 
00047      // Does the same, but gives *real* errors on the parameters
00048      // (instead of a default error matrix)
00049      // Uses nominal B field to determine curvature. 
00050   static TrkExchangePar helixFromMomErr(const BesPointErr& vertex,
00051                 const BesVectorErr& p,const HepMatrix& cxp,  double sign, const BField&);
00052      // Does the same but for neutrals
00053   static NeutParams lineFromMomErr(const BesPointErr& vertex,
00054                 const BesVectorErr& p,const HepMatrix& cxp,  double sign, const BField&); 
00055 
00056      // Jacobian for transforming std helix params to new set defined at fltNew
00057   static HepMatrix jacobianExtrapolate(const TrkExchangePar&, double fltNew);
00058 
00059      // Actually transform the error matrix, as above
00060   static HepSymMatrix extrapolateCov(TrkExchangePar &, double fltNew);
00061 
00062      // Path length (3-d) to intersection with cylinder at radius rad.
00063   static double fltToRad(const TrkExchangePar& hel, double rad);
00064 
00065 private:        
00066   // Preempt 
00067   TrkHelixUtils&   operator= (const TrkHelixUtils&);
00068   TrkHelixUtils(const TrkHelixUtils &);
00069 };
00070 
00071 #endif
00072 

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