00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
00037 class TrkHelixUtils {
00038
00039 public:
00040 TrkHelixUtils() { };
00041
00042
00043
00044 static TrkExchangePar helixFromMom(const HepPoint3D& vertex,
00045 const Hep3Vector& p, double sign, const BField&);
00046
00047
00048
00049
00050 static TrkExchangePar helixFromMomErr(const BesPointErr& vertex,
00051 const BesVectorErr& p,const HepMatrix& cxp, double sign, const BField&);
00052
00053 static NeutParams lineFromMomErr(const BesPointErr& vertex,
00054 const BesVectorErr& p,const HepMatrix& cxp, double sign, const BField&);
00055
00056
00057 static HepMatrix jacobianExtrapolate(const TrkExchangePar&, double fltNew);
00058
00059
00060 static HepSymMatrix extrapolateCov(TrkExchangePar &, double fltNew);
00061
00062
00063 static double fltToRad(const TrkExchangePar& hel, double rad);
00064
00065 private:
00066
00067 TrkHelixUtils& operator= (const TrkHelixUtils&);
00068 TrkHelixUtils(const TrkHelixUtils &);
00069 };
00070
00071 #endif
00072