Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:26

0001 #ifndef JacobianCurvilinearToLocal_H
0002 #define JacobianCurvilinearToLocal_H
0003 
0004 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h"
0005 #include "DataFormats/GeometrySurface/interface/Surface.h"
0006 #include "TrackingTools/TrajectoryParametrization/interface/LocalTrajectoryParameters.h"
0007 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
0008 
0009 #include "FWCore/Utilities/interface/Visibility.h"
0010 
0011 class MagneticField;
0012 
0013 /** Class which calculates the Jacobian matrix of the transformation
0014  *  from the curvilinear to the local frame. The Jacobian is calculated
0015  *  during construction and thereafter cached, enabling reuse of the same
0016  *  Jacobian without calculating it again.
0017  */
0018 
0019 class JacobianCurvilinearToLocal {
0020 public:
0021   /** Constructor from local trajectory parameters and surface defining the local frame. 
0022    *  NB!! No default constructor exists!
0023    */
0024 
0025   JacobianCurvilinearToLocal(const Surface& surface,
0026                              const LocalTrajectoryParameters& localParameters,
0027                              const MagneticField& magField);
0028 
0029   JacobianCurvilinearToLocal(const Surface& surface,
0030                              const LocalTrajectoryParameters& localParameters,
0031                              const GlobalTrajectoryParameters& globalParameters,
0032                              const MagneticField& magField);
0033 
0034   /** Access to Jacobian.
0035    */
0036 
0037   const AlgebraicMatrix55& jacobian() const { return theJacobian; }
0038 
0039 private:
0040   void compute(Surface::RotationType const& rot, GlobalVector const& tn, GlobalVector const& qh, double lz) dso_internal;
0041 
0042   AlgebraicMatrix55 theJacobian;
0043 };
0044 
0045 #endif  //JacobianCurvilinearToLocal_H