Back to home page

Project CMSSW displayed by LXR

 
 

    


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

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