Go to the documentation of this file.00001 #ifndef AnalyticalCurvilinearJacobian_H
00002 #define AnalyticalCurvilinearJacobian_H
00003
00004 #include "TrackingTools/AnalyticalJacobians/interface/CurvilinearJacobian.h"
00005 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00006 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00007
00019 class GlobalTrajectoryParameters;
00020
00021 class AnalyticalCurvilinearJacobian : public CurvilinearJacobian {
00022 public:
00024 AnalyticalCurvilinearJacobian() : theJacobian(AlgebraicMatrixID()) {}
00025
00027 AnalyticalCurvilinearJacobian(const GlobalTrajectoryParameters& globalParameters,
00028 const GlobalPoint& x,
00029 const GlobalVector& p,
00030 const double& s);
00032 AnalyticalCurvilinearJacobian(const GlobalTrajectoryParameters& globalParameters,
00033 const GlobalPoint& x,
00034 const GlobalVector& p,
00035 const GlobalVector& theFieldInInverseGeV,
00036 const double& s);
00037
00038 virtual ~AnalyticalCurvilinearJacobian() {}
00039
00040 virtual const AlgebraicMatrix55& jacobian() const {return theJacobian;}
00041 virtual const AlgebraicMatrix jacobian_old() const {return asHepMatrix(theJacobian);}
00042 public:
00044 void computeFullJacobian (const GlobalTrajectoryParameters&,
00045 const GlobalPoint&, const GlobalVector&, const GlobalVector&,
00046 const double& s);
00048 void computeInfinitesimalJacobian (const GlobalTrajectoryParameters&,
00049 const GlobalPoint&, const GlobalVector&, const GlobalVector&,
00050 const double& s);
00052 void computeStraightLineJacobian (const GlobalTrajectoryParameters&,
00053 const GlobalPoint&, const GlobalVector&,
00054 const double& s);
00055
00056 private:
00057
00058 AlgebraicMatrix55 theJacobian;
00059
00060 };
00061
00062 #endif