Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-09-07 04:38:01

0001 #ifndef RecoTracker_PixelTrackFitting_FitResult_h
0002 #define RecoTracker_PixelTrackFitting_FitResult_h
0003 
0004 #include <cmath>
0005 #include <cstdint>
0006 
0007 #include <cuda_runtime.h>
0008 
0009 #include <Eigen/Core>
0010 #include <Eigen/Eigenvalues>
0011 
0012 namespace riemannFit {
0013 
0014   using Vector2d = Eigen::Vector2d;
0015   using Vector3d = Eigen::Vector3d;
0016   using Vector4d = Eigen::Vector4d;
0017   using Vector5d = Eigen::Matrix<double, 5, 1>;
0018   using Matrix2d = Eigen::Matrix2d;
0019   using Matrix3d = Eigen::Matrix3d;
0020   using Matrix4d = Eigen::Matrix4d;
0021   using Matrix5d = Eigen::Matrix<double, 5, 5>;
0022   using Matrix6d = Eigen::Matrix<double, 6, 6>;
0023 
0024   template <int N>
0025   using Matrix3xNd = Eigen::Matrix<double, 3, N>;  // used for inputs hits
0026 
0027   struct CircleFit {
0028     Vector3d par;  //!< parameter: (X0,Y0,R)
0029     Matrix3d cov;
0030     /*!< covariance matrix: \n
0031       |cov(X0,X0)|cov(Y0,X0)|cov( R,X0)| \n
0032       |cov(X0,Y0)|cov(Y0,Y0)|cov( R,Y0)| \n
0033       |cov(X0, R)|cov(Y0, R)|cov( R, R)|
0034     */
0035     int32_t qCharge;  //!< particle charge
0036     float chi2;
0037   };
0038 
0039   struct LineFit {
0040     Vector2d par;  //!<(cotan(theta),Zip)
0041     Matrix2d cov;
0042     /*!<
0043       |cov(c_t,c_t)|cov(Zip,c_t)| \n
0044       |cov(c_t,Zip)|cov(Zip,Zip)|
0045     */
0046     double chi2;
0047   };
0048 
0049   struct HelixFit {
0050     Vector5d par;  //!<(phi,Tip,pt,cotan(theta)),Zip)
0051     Matrix5d cov;
0052     /*!< ()->cov() \n
0053       |(phi,phi)|(Tip,phi)|(p_t,phi)|(c_t,phi)|(Zip,phi)| \n
0054       |(phi,Tip)|(Tip,Tip)|(p_t,Tip)|(c_t,Tip)|(Zip,Tip)| \n
0055       |(phi,p_t)|(Tip,p_t)|(p_t,p_t)|(c_t,p_t)|(Zip,p_t)| \n
0056       |(phi,c_t)|(Tip,c_t)|(p_t,c_t)|(c_t,c_t)|(Zip,c_t)| \n
0057       |(phi,Zip)|(Tip,Zip)|(p_t,Zip)|(c_t,Zip)|(Zip,Zip)|
0058     */
0059     float chi2_circle;
0060     float chi2_line;
0061     //    Vector4d fast_fit;
0062     int32_t qCharge;  //!< particle charge
0063   };  // __attribute__((aligned(16)));
0064 
0065 }  // namespace riemannFit
0066 #endif