CMS 3D CMS Logo

Classes | Namespaces | Typedefs | Functions | Variables
BrokenLine.h File Reference
#include <alpaka/alpaka.hpp>
#include <Eigen/Core>
#include "HeterogeneousCore/AlpakaInterface/interface/config.h"
#include "RecoTracker/PixelTrackFitting/interface/alpaka/FitUtils.h"

Go to the source code of this file.

Classes

class  ALPAKA_ACCELERATOR_NAMESPACE::brokenline::helixFit< n >
 Helix fit by three step: -fast pre-fit (see Fast_fit() for further info);
-circle fit of the hits projected in the transverse plane by Broken Line algorithm (see BL_Circle_fit() for further info);
-line fit of the hits projected on the (pre-fitted) cilinder surface by Broken Line algorithm (see BL_Line_fit() for further info);
Points must be passed ordered (from inner to outer layer). More...
 
struct  ALPAKA_ACCELERATOR_NAMESPACE::brokenline::PreparedBrokenLineData< n >
 data needed for the Broken Line fit procedure. More...
 

Namespaces

 ALPAKA_ACCELERATOR_NAMESPACE::brokenline
 

Typedefs

using ALPAKA_ACCELERATOR_NAMESPACE::brokenline::karimaki_circle_fit = riemannFit::CircleFit
 < Karimäki's parameters: (phi, d, k=1/R) More...
 

Functions

template<typename TAcc , typename M3xN , typename V4 , int n>
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::brokenline::__attribute__ ((always_inline)) prepareBrokenLineData(const TAcc &acc
 Computes the data needed for the Broken Line fit procedure that are mainly common for the circle and the line fit. More...
 
template<typename TAcc , typename M3xN , typename M6xN , typename V4 , int n>
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::brokenline::circleFit (const TAcc &acc, const M3xN &hits, const M6xN &hits_ge, const V4 &fast_fit, const double bField, PreparedBrokenLineData< n > &data, karimaki_circle_fit &circle_results)
 Performs the Broken Line fit in the curved track case (that is, the fit parameters are the interceptions u and the curvature correction ). More...
 
if ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr (n > 3)
 
template<typename TAcc , typename M3xN , typename V4 >
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fastFit (const TAcc &acc, const M3xN &hits, V4 &result)
 A very fast helix fit. More...
 
 ALPAKA_ACCELERATOR_NAMESPACE::brokenline::for (u_int i=0;i< n;i++)
 
template<typename TAcc , typename V4 , typename M6xN , int n>
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::brokenline::lineFit (const TAcc &acc, const M6xN &hits_ge, const V4 &fast_fit, const double bField, const PreparedBrokenLineData< n > &data, riemannFit::LineFit &line_results)
 Performs the Broken Line fit in the straight track case (that is, the fit parameters are only the interceptions u). More...
 
template<typename TAcc , int n>
ALPAKA_FN_ACC ALPAKA_FN_INLINE riemannFit::MatrixNd< n > ALPAKA_ACCELERATOR_NAMESPACE::brokenline::matrixC_u (const TAcc &acc, const riemannFit::VectorNd< n > &weights, const riemannFit::VectorNd< n > &sTotal, const riemannFit::VectorNd< n > &varBeta)
 Computes the n-by-n band matrix obtained minimizing the Broken Line's cost function w.r.t u. This is the whole matrix in the case of the line fit and the main n-by-n block in the case of the circle fit. More...
 
template<typename TAcc >
ALPAKA_FN_ACC ALPAKA_FN_INLINE double ALPAKA_ACCELERATOR_NAMESPACE::brokenline::multScatt (const TAcc &acc, const double &length, const double bField, const double radius, int layer, double slope)
 Computes the Coulomb multiple scattering variance of the planar angle. More...
 
template<typename TAcc >
ALPAKA_FN_ACC ALPAKA_FN_INLINE riemannFit::Matrix2d ALPAKA_ACCELERATOR_NAMESPACE::brokenline::rotationMatrix (const TAcc &acc, double slope)
 Computes the 2D rotation matrix that transforms the line y=slope*x into the line y=0. More...
 
template<typename TAcc >
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::brokenline::translateKarimaki (const TAcc &acc, karimaki_circle_fit &circle, double x0, double y0, riemannFit::Matrix3d &jacobian)
 Changes the Karimäki parameters (and consequently their covariance matrix) under a translation of the coordinate system, such that the old origin has coordinates (x0,y0) in the new coordinate system. The formulas are taken from Karimäki V., 1990, Effective circle fitting for particle trajectories, Nucl. Instr. and Meth. A305 (1991) 187. More...
 
results ALPAKA_ACCELERATOR_NAMESPACE::brokenline::varBeta (0)
 

Variables

ALPAKA_FN_ACC ALPAKA_FN_INLINE void const M3xN const V4 const double ALPAKA_ACCELERATOR_NAMESPACE::brokenline::bField
 
 ALPAKA_ACCELERATOR_NAMESPACE::brokenline::dVec = hits.block(0, mId, 2, 1) - hits.block(0, 0, 2, 1)
 
riemannFit::Vector2d ALPAKA_ACCELERATOR_NAMESPACE::brokenline::eVec = hits.block(0, n - 1, 2, 1) - hits.block(0, mId, 2, 1)
 
ALPAKA_FN_ACC ALPAKA_FN_INLINE void const M3xN const V4 & ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fast_fit
 
ALPAKA_FN_ACC ALPAKA_FN_INLINE void const M3xN & ALPAKA_ACCELERATOR_NAMESPACE::brokenline::hits
 
int ALPAKA_ACCELERATOR_NAMESPACE::brokenline::mId = 1
 
riemannFit::Matrix2xNd< n > ALPAKA_ACCELERATOR_NAMESPACE::brokenline::pointsSZ = riemannFit::Matrix2xNd<n>::Zero()
 
results ALPAKA_ACCELERATOR_NAMESPACE::brokenline::qCharge = riemannFit::cross2D(acc, dVec, eVec) > 0 ? -1 : 1
 
results ALPAKA_ACCELERATOR_NAMESPACE::brokenline::radii = hits.block(0, 0, 2, n) - fast_fit.head(2) * riemannFit::MatrixXd::Constant(1, n, 1)
 
ALPAKA_FN_ACC ALPAKA_FN_INLINE void const M3xN const V4 const double PreparedBrokenLineData< n > & ALPAKA_ACCELERATOR_NAMESPACE::brokenline::results
 
riemannFit::Matrix2d ALPAKA_ACCELERATOR_NAMESPACE::brokenline::rotMat = rotationMatrix(acc, slope)
 
const double ALPAKA_ACCELERATOR_NAMESPACE::brokenline::slope = -results.qCharge / fast_fit(3)
 
results ALPAKA_ACCELERATOR_NAMESPACE::brokenline::sTotal = pointsSZ.block(0, 0, 1, n).transpose()
 
results ALPAKA_ACCELERATOR_NAMESPACE::brokenline::zInSZplane = pointsSZ.block(1, 0, 1, n).transpose()
 
riemannFit::VectorNd< n > ALPAKA_ACCELERATOR_NAMESPACE::brokenline::zVec = hits.block(2, 0, 1, n).transpose()