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: 00023 00025 AnalyticalCurvilinearJacobian(const GlobalTrajectoryParameters& globalParameters, 00026 const GlobalPoint& x, 00027 const GlobalVector& p, 00028 const double& s); 00030 AnalyticalCurvilinearJacobian(const GlobalTrajectoryParameters& globalParameters, 00031 const GlobalPoint& x, 00032 const GlobalVector& p, 00033 const GlobalVector& theFieldInInverseGeV, 00034 const double& s); 00035 00036 virtual ~AnalyticalCurvilinearJacobian() {} 00037 00038 virtual const AlgebraicMatrix55& jacobian() const {return theJacobian;} 00039 virtual const AlgebraicMatrix jacobian_old() const {return asHepMatrix(theJacobian);} 00040 private: 00042 void computeFullJacobian (const GlobalTrajectoryParameters&, 00043 const GlobalPoint&, const GlobalVector&, const GlobalVector&, 00044 const double& s); 00046 void computeStraightLineJacobian (const GlobalTrajectoryParameters&, 00047 const GlobalPoint&, const GlobalVector&, 00048 const double& s); 00049 00050 private: 00051 00052 AlgebraicMatrix55 theJacobian; 00053 00054 }; 00055 00056 #endif