Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-04-02 03:10:59

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