00001 #ifndef JacobianLocalToCurvilinear_H 00002 #define JacobianLocalToCurvilinear_H 00003 00004 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h" 00005 #include "DataFormats/GeometrySurface/interface/Surface.h" 00006 00007 #include "TrackingTools/TrajectoryParametrization/interface/LocalTrajectoryParameters.h" 00008 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h" 00009 00010 #include "FWCore/Utilities/interface/Visibility.h" 00011 00012 // class Surface; 00013 class MagneticField; 00014 00015 00022 class JacobianLocalToCurvilinear { 00023 00024 public: 00025 00030 JacobianLocalToCurvilinear(const Surface& surface, 00031 const LocalTrajectoryParameters& localParameters, 00032 const MagneticField& magField); 00033 00037 JacobianLocalToCurvilinear(const Surface& surface, 00038 const LocalTrajectoryParameters& localParameters, 00039 const GlobalTrajectoryParameters& globalParameters, 00040 const MagneticField& magField); 00041 00045 const AlgebraicMatrix55& jacobian() const {return theJacobian;} 00046 00047 00048 private: 00049 void compute(Surface::RotationType const & rot, LocalVector const & tnl, GlobalVector const & tn, GlobalVector const & hq) dso_internal; 00050 00051 AlgebraicMatrix55 theJacobian; 00052 00053 }; 00054 00055 #endif //JacobianLocalToCurvilinear_H