00001 #ifndef JacobianCurvilinearToLocal_H 00002 #define JacobianCurvilinearToLocal_H 00003 00004 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h" 00005 #include "DataFormats/GeometrySurface/interface/Surface.h" 00006 #include "TrackingTools/TrajectoryParametrization/interface/LocalTrajectoryParameters.h" 00007 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h" 00008 00009 #include "FWCore/Utilities/interface/Visibility.h" 00010 00011 class MagneticField; 00012 00019 class JacobianCurvilinearToLocal { 00020 00021 public: 00022 00027 JacobianCurvilinearToLocal(const Surface& surface, 00028 const LocalTrajectoryParameters& localParameters, 00029 const MagneticField& magField); 00030 00031 JacobianCurvilinearToLocal(const Surface& surface, 00032 const LocalTrajectoryParameters& localParameters, 00033 const GlobalTrajectoryParameters& globalParameters, 00034 const MagneticField& magField); 00035 00039 const AlgebraicMatrix55& jacobian() const { return theJacobian; } 00040 00041 00042 private: 00043 00044 void compute(Surface::RotationType const & rot, GlobalVector const & tn, GlobalVector const & qh, double lz) dso_internal; 00045 00046 AlgebraicMatrix55 theJacobian; 00047 00048 }; 00049 00050 #endif //JacobianCurvilinearToLocal_H