File indexing completed on 2024-04-06 12:31:26
0001 #ifndef AnalyticalCurvilinearJacobian_H
0002 #define AnalyticalCurvilinearJacobian_H
0003
0004 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h"
0005 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0006 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 class GlobalTrajectoryParameters;
0020
0021 class AnalyticalCurvilinearJacobian {
0022 public:
0023
0024 AnalyticalCurvilinearJacobian() : theJacobian(ROOT::Math::SMatrixNoInit()) {}
0025
0026
0027 AnalyticalCurvilinearJacobian(const GlobalTrajectoryParameters& globalParameters,
0028 const GlobalPoint& x,
0029 const GlobalVector& p,
0030 const double& s);
0031
0032 AnalyticalCurvilinearJacobian(const GlobalTrajectoryParameters& globalParameters,
0033 const GlobalPoint& x,
0034 const GlobalVector& p,
0035 const GlobalVector& theFieldInInverseGeV,
0036 const double& s);
0037
0038 public:
0039
0040 void computeFullJacobian(
0041 const GlobalTrajectoryParameters&, const GlobalPoint&, const GlobalVector&, const GlobalVector&, const double& s);
0042
0043 void computeInfinitesimalJacobian(
0044 const GlobalTrajectoryParameters&, const GlobalPoint&, const GlobalVector&, const GlobalVector&, const double& s);
0045
0046 void computeStraightLineJacobian(const GlobalTrajectoryParameters&,
0047 const GlobalPoint&,
0048 const GlobalVector&,
0049 const double& s);
0050
0051 const AlgebraicMatrix55& jacobian() const { return theJacobian; }
0052
0053 private:
0054 AlgebraicMatrix55 theJacobian;
0055 };
0056
0057 #endif