Functions | |
template<typename TAcc , typename M2xN > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE int32_t | charge (const TAcc &acc, const M2xN &p2D, const Vector3d &par_uvr) |
Find particle q considering the sign of cross product between particles velocity (estimated by the first 2 hits) and the vector radius between the first hit and the center of the fitted circle. More... | |
template<typename TAcc , typename M2xN , typename V4 , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE CircleFit | circleFit (const TAcc &acc, const M2xN &hits2D, const Matrix2Nd< N > &hits_cov2D, const V4 &fast_fit, const VectorNd< N > &rad, const double bField, const bool error) |
Fit a generic number of 2D points with a circle using Riemann-Chernov algorithm. Covariance matrix of fitted parameter is optionally computed. Multiple scattering (currently only in barrel layer) is optionally handled. More... | |
template<typename TAcc , typename VNd1 , typename VNd2 > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE void | computeRadLenUniformMaterial (const TAcc &acc, const VNd1 &length_values, VNd2 &rad_lengths) |
template<typename TAcc , typename M2xN , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE VectorNd< N > | cov_carttorad (const TAcc &acc, const M2xN &p2D, const Matrix2Nd< N > &cov_cart, const VectorNd< N > &rad) |
Transform covariance matrix from Cartesian coordinates (only transverse plane component) to radial coordinates (both radial and tangential component but only diagonal terms, correlation between different point are not managed). More... | |
template<typename TAcc , typename M2xN , typename V4 , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE VectorNd< N > | cov_carttorad_prefit (const TAcc &acc, const M2xN &p2D, const Matrix2Nd< N > &cov_cart, V4 &fast_fit, const VectorNd< N > &rad) |
Transform covariance matrix from Cartesian coordinates (only transverse plane component) to coordinates system orthogonal to the pre-fitted circle in each point. Further information in attached documentation. More... | |
template<typename TAcc , typename M2xN , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE Matrix2Nd< N > | cov_radtocart (const TAcc &acc, const M2xN &p2D, const MatrixNd< N > &cov_rad, const VectorNd< N > &rad) |
Transform covariance matrix from radial (only tangential component) to Cartesian coordinates (only transverse plane component). More... | |
template<typename TAcc > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE double | cross2D (const TAcc &acc, const Vector2d &a, const Vector2d &b) |
Compute cross product of two 2D vector (assuming z component 0), returning z component of the result. More... | |
template<typename TAcc , typename M3xN , typename V4 > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE void | fastFit (const TAcc &acc, const M3xN &hits, V4 &result) |
A very fast helix fit: it fits a circle by three points (first, middle and last point) and a line by two points (first and last). More... | |
template<typename TAcc > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE void | fromCircleToPerigee (const TAcc &acc, CircleFit &circle) |
Transform circle parameter from (X0,Y0,R) to (phi,Tip,q/R) and consequently covariance matrix. More... | |
template<typename TAcc , typename M3xN , typename M6xN , typename V4 > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE LineFit | lineFit (const TAcc &acc, const M3xN &hits, const M6xN &hits_ge, const CircleFit &circle, const V4 &fast_fit, const double bField, const bool error) |
Perform an ordinary least square fit in the s-z plane to compute the parameters cotTheta and Zip. More... | |
template<typename TAcc , typename M6xNf , typename M3xNd > | |
ALPAKA_FN_ACC void | loadCovariance (const TAcc &acc, M6xNf const &ge, M3xNd &hits_cov) |
template<typename TAcc , typename M6xNf , typename M2Nd > | |
ALPAKA_FN_ACC void | loadCovariance2D (const TAcc &acc, M6xNf const &ge, M2Nd &hits_cov) |
template<typename TAcc > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE Vector2d | min_eigen2D (const TAcc &acc, const Matrix2d &aMat, double &chi2) |
2D version of min_eigen3D(). More... | |
template<typename TAcc > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE Vector3d | min_eigen3D (const TAcc &acc, const Matrix3d &A, double &chi2) |
Compute the eigenvector associated to the minimum eigenvalue. More... | |
template<typename TAcc > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE Vector3d | min_eigen3D_fast (const TAcc &acc, const Matrix3d &A) |
A faster version of min_eigen3D() where double precision is not needed. More... | |
template<typename TAcc > | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE void | par_uvrtopak (const TAcc &acc, CircleFit &circle, const double B, const bool error) |
Transform circle parameter from (X0,Y0,R) to (phi,Tip,p_t) and consequently covariance matrix. More... | |
template<typename TAcc , class C > | |
ALPAKA_FN_ACC void | printIt (const TAcc &acc, C *m, const char *prefix="") |
template<typename TAcc , typename M2xN , typename V4 , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE MatrixNd< N > | scatter_cov_rad (const TAcc &acc, const M2xN &p2D, const V4 &fast_fit, VectorNd< N > const &rad, double B) |
Compute the covariance matrix (in radial coordinates) of points in the transverse plane due to multiple Coulomb scattering. More... | |
template<typename TAcc , typename V4 , typename VNd1 , typename VNd2 , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE auto | scatterCovLine (const TAcc &acc, Matrix2d const *cov_sz, const V4 &fast_fit, VNd1 const &s_arcs, VNd2 const &z_values, const double theta, const double bField, MatrixNd< N > &ret) |
Compute the covariance matrix along cartesian S-Z of points due to multiple Coulomb scattering to be used in the line_fit, for the barrel and forward cases. The input covariance matrix is in the variables s-z, original and unrotated. The multiple scattering component is computed in the usual linear approximation, using the 3D path which is computed as the squared root of the squared sum of the s and z components passed in. Internally a rotation by theta is performed and the covariance matrix returned is the one in the direction orthogonal to the rotated S3D axis, i.e. along the rotated Z axis. The choice of the rotation is not arbitrary, but derived from the fact that putting the horizontal axis along the S3D direction allows the usage of the ordinary least squared fitting techiques with the trivial parametrization y = mx + q, avoiding the patological case with m = +/- inf, that would correspond to the case at eta = 0. More... | |
template<typename T > | |
constexpr T | sqr (const T a) |
raise to square. More... | |
template<typename TAcc , int N> | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE VectorNd< N > | weightCircle (const TAcc &acc, const MatrixNd< N > &cov_rad_inv) |
Compute the points' weights' vector for the circle fit when multiple scattering is managed. Further information in attached documentation. More... | |
ALPAKA_FN_ACC ALPAKA_FN_INLINE int32_t ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::charge | ( | const TAcc & | acc, |
const M2xN & | p2D, | ||
const Vector3d & | par_uvr | ||
) |
Find particle q considering the sign of cross product between particles velocity (estimated by the first 2 hits) and the vector radius between the first hit and the center of the fitted circle.
p2D | 2D points in transverse plane. |
par_uvr | result of the circle fit in this form: (X0,Y0,R). |
Definition at line 297 of file RiemannFit.h.
Referenced by circleFit().
ALPAKA_FN_ACC ALPAKA_FN_INLINE CircleFit ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::circleFit | ( | const TAcc & | acc, |
const M2xN & | hits2D, | ||
const Matrix2Nd< N > & | hits_cov2D, | ||
const V4 & | fast_fit, | ||
const VectorNd< N > & | rad, | ||
const double | bField, | ||
const bool | error | ||
) |
Fit a generic number of 2D points with a circle using Riemann-Chernov algorithm. Covariance matrix of fitted parameter is optionally computed. Multiple scattering (currently only in barrel layer) is optionally handled.
hits2D | 2D points to be fitted. |
hits_cov2D | covariance matrix of 2D points. |
fast_fit | pre-fit result in this form: (X0,Y0,R,tan(theta)). (tan(theta) is not used). |
bField | magnetic field |
error | flag for error computation. |
scattering | flag for multiple scattering |
Definition at line 465 of file RiemannFit.h.
References a, funct::abs(), b, Calorimetry_cff::bField, charge(), nano_mu_local_reco_cff::chi2, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), cov_carttorad_prefit(), cov_radtocart(), dumpMFGeometry_cfg::delta, geometryDiff::epsilon, relativeConstraints::error, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fast_fit, mps_fire::i, l1tstage2_dqm_sourceclient-live_cfg::invert, dqmiolumiharvest::j, dqmdumpme::k, MainPageGenerator::l, CaloTowersParam_cfi::mc, min_eigen3D(), min_eigen3D_fast(), N, dqmiodumpmetadata::n, printIt(), scatter_cov_rad(), Validation_hcalonly_cfi::sign, sqr(), mathSSE::sqrt(), submitPVValidationJobs::t, FrontierCondition_GT_autoExpress_cfi::t0, RandomServiceHelper::t1, createJobs::tmp, parallelization::uint, mps_merge::weight, and weightCircle().
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::Kernel_CircleFit< N, TrackerTraits >::operator()(), and riemannFit::helixFit< N >::operator()().
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::computeRadLenUniformMaterial | ( | const TAcc & | acc, |
const VNd1 & | length_values, | ||
VNd2 & | rad_lengths | ||
) |
Compute the Radiation length in the uniform hypothesis
The Pixel detector, barrel and forward, is considered as an homogeneous cylinder of material, whose radiation lengths has been derived from the TDR plot that shows that 16cm correspond to 0.06 radiation lengths. Therefore one radiation length corresponds to 16cm/0.06 =~ 267 cm. All radiation lengths are computed using this unique number, in both regions, barrel and endcap.
NB: no angle corrections nor projections are computed inside this routine. It is therefore the responsibility of the caller to supply the proper lengths in input. These lengths are the path traveled by the particle along its trajectory, namely the so called S of the helix in 3D space.
length_values | vector of incremental distances that will be translated into radiation length equivalent. Each radiation length i is computed incrementally with respect to the previous length i-1. The first length has no reference point (i.e. it has the dca). |
Definition at line 38 of file RiemannFit.h.
References funct::abs(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), dqmiolumiharvest::j, dqmiodumpmetadata::n, and parallelization::uint.
Referenced by scatter_cov_rad(), and scatterCovLine().
ALPAKA_FN_ACC ALPAKA_FN_INLINE VectorNd<N> ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::cov_carttorad | ( | const TAcc & | acc, |
const M2xN & | p2D, | ||
const Matrix2Nd< N > & | cov_cart, | ||
const VectorNd< N > & | rad | ||
) |
Transform covariance matrix from Cartesian coordinates (only transverse plane component) to radial coordinates (both radial and tangential component but only diagonal terms, correlation between different point are not managed).
p2D | 2D points in transverse plane. |
cov_cart | covariance matrix in Cartesian coordinates. |
< in case you have (0,0) to avoid dividing by 0 radius
Definition at line 218 of file RiemannFit.h.
References ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), MillePedeFileConverter_cfg::e, mps_fire::i, N, dqmiodumpmetadata::n, sqr(), and parallelization::uint.
ALPAKA_FN_ACC ALPAKA_FN_INLINE VectorNd<N> ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::cov_carttorad_prefit | ( | const TAcc & | acc, |
const M2xN & | p2D, | ||
const Matrix2Nd< N > & | cov_cart, | ||
V4 & | fast_fit, | ||
const VectorNd< N > & | rad | ||
) |
Transform covariance matrix from Cartesian coordinates (only transverse plane component) to coordinates system orthogonal to the pre-fitted circle in each point. Further information in attached documentation.
p2D | 2D points in transverse plane. |
cov_cart | covariance matrix in Cartesian coordinates. |
fast_fit | fast_fit Vector4d result of the previous pre-fit structured in this form:(X0, Y0, R, tan(theta))). |
< in case you have (0,0) to avoid dividing by 0 radius
Definition at line 250 of file RiemannFit.h.
References a, b, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), cross2D(), MillePedeFileConverter_cfg::e, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fast_fit, mps_fire::i, N, dqmiodumpmetadata::n, sqr(), parallelization::uint, and testProducerWithPsetDescEmpty_cfi::y2.
Referenced by circleFit().
ALPAKA_FN_ACC ALPAKA_FN_INLINE Matrix2Nd<N> ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::cov_radtocart | ( | const TAcc & | acc, |
const M2xN & | p2D, | ||
const MatrixNd< N > & | cov_rad, | ||
const VectorNd< N > & | rad | ||
) |
Transform covariance matrix from radial (only tangential component) to Cartesian coordinates (only transverse plane component).
p2D | 2D points in the transverse plane. |
cov_rad | covariance matrix in radial coordinate. |
Definition at line 180 of file RiemannFit.h.
References ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), mps_fire::i, dqmiolumiharvest::j, N, dqmiodumpmetadata::n, printIt(), and parallelization::uint.
Referenced by circleFit().
ALPAKA_FN_ACC ALPAKA_FN_INLINE double ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::cross2D | ( | const TAcc & | acc, |
const Vector2d & | a, | ||
const Vector2d & | b | ||
) |
Compute cross product of two 2D vector (assuming z component 0), returning z component of the result.
a | first 2D vector in the product. |
b | second 2D vector in the product. |
Definition at line 117 of file FitUtils.h.
Referenced by cov_carttorad_prefit(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fastFit(), fastFit(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::for(), lineFit(), and scatter_cov_rad().
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::fastFit | ( | const TAcc & | acc, |
const M3xN & | hits, | ||
V4 & | result | ||
) |
A very fast helix fit: it fits a circle by three points (first, middle and last point) and a line by two points (first and last).
hits | points to be fitted |
This fast fit is used as pre-fit which is needed for:
< in case b.x is 0 (2 hits with same x)
Definition at line 385 of file RiemannFit.h.
References funct::abs(), b2, nano_mu_digi_cff::bx, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), cross2D(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::dVec, PVValHelper::dz, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::eVec, HLT_2023v12_cff::flip, hfClusterShapes_cfi::hits, N, dqmiodumpmetadata::n, printIt(), mps_fire::result, sqr(), and mathSSE::sqrt().
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::Kernel_FastFit< N, TrackerTraits >::operator()(), and riemannFit::helixFit< N >::operator()().
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::fromCircleToPerigee | ( | const TAcc & | acc, |
CircleFit & | circle | ||
) |
Transform circle parameter from (X0,Y0,R) to (phi,Tip,q/R) and consequently covariance matrix.
circle_uvr | parameter (X0,Y0,R), covariance matrix to be transformed and particle charge. |
Definition at line 239 of file FitUtils.h.
References sqr(), and mathSSE::sqrt().
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::Kernel_LineFit< N, TrackerTraits >::operator()().
ALPAKA_FN_ACC ALPAKA_FN_INLINE LineFit ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::lineFit | ( | const TAcc & | acc, |
const M3xN & | hits, | ||
const M6xN & | hits_ge, | ||
const CircleFit & | circle, | ||
const V4 & | fast_fit, | ||
const double | bField, | ||
const bool | error | ||
) |
Perform an ordinary least square fit in the s-z plane to compute the parameters cotTheta and Zip.
The fit is performed in the rotated S3D-Z' plane, following the formalism of Frodesen, Chapter 10, p. 259.
The system has been rotated to both try to use the combined errors in s-z along Z', as errors in the Y direction and to avoid the patological case of degenerate lines with angular coefficient m = +/- inf.
The rotation is using the information on the theta angle computed in the fast fit. The rotation is such that the S3D axis will be the X-direction, while the rotated Z-axis will be the Y-direction. This pretty much follows what is done in the same fit in the Broken Line approach.
Definition at line 796 of file RiemannFit.h.
References Calorimetry_cff::bField, nano_mu_local_reco_cff::chi2, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), funct::cos(), cross(), cross2D(), alignCSCRings::d_x, alignCSCRings::d_y, dot(), relativeConstraints::error, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fast_fit, hfClusterShapes_cfi::hits, mps_fire::i, l1tstage2_dqm_sourceclient-live_cfg::invert, mps_splice::line, M_PI, N, dqmiodumpmetadata::n, printIt(), makeMuonMisalignmentScenario::rot, scatterCovLine(), funct::sin(), mkfit::Const::sol, sqr(), theta(), createJobs::tmp, and parallelization::uint.
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::Kernel_LineFit< N, TrackerTraits >::operator()(), and riemannFit::helixFit< N >::operator()().
ALPAKA_FN_ACC void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::loadCovariance | ( | const TAcc & | acc, |
M6xNf const & | ge, | ||
M3xNd & | hits_cov | ||
) |
Definition at line 158 of file FitUtils.h.
References ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), mps_fire::i, dqmiolumiharvest::j, and MainPageGenerator::l.
ALPAKA_FN_ACC void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::loadCovariance2D | ( | const TAcc & | acc, |
M6xNf const & | ge, | ||
M2Nd & | hits_cov | ||
) |
load error in CMSSW format to our formalism
Definition at line 126 of file FitUtils.h.
References ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), mps_fire::i, dqmiolumiharvest::j, and MainPageGenerator::l.
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::Kernel_CircleFit< N, TrackerTraits >::operator()(), and riemannFit::helixFit< N >::operator()().
ALPAKA_FN_ACC ALPAKA_FN_INLINE Vector2d ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::min_eigen2D | ( | const TAcc & | acc, |
const Matrix2d & | aMat, | ||
double & | chi2 | ||
) |
2D version of min_eigen3D().
aMat | the Matrix you want to know eigenvector and eigenvalue. |
chi2 | the double were the chi2-related quantity will be stored |
Definition at line 363 of file RiemannFit.h.
References nano_mu_local_reco_cff::chi2.
ALPAKA_FN_ACC ALPAKA_FN_INLINE Vector3d ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::min_eigen3D | ( | const TAcc & | acc, |
const Matrix3d & | A, | ||
double & | chi2 | ||
) |
Compute the eigenvector associated to the minimum eigenvalue.
A | the Matrix you want to know eigenvector and eigenvalue. |
chi2 | the double were the chi2-related quantity will be stored. |
The minimus eigenvalue is related to chi2. We exploit the fact that the matrix is symmetrical and small (2x2 for line fit and 3x3 for circle fit), so the SelfAdjointEigenSolver from Eigen library is used, with the computedDirect method (available only for 2x2 and 3x3 Matrix) wich computes eigendecomposition of given matrix using a fast closed-form algorithm. For this optimization the matrix type must be known at compiling time.
Definition at line 319 of file RiemannFit.h.
References A, and nano_mu_local_reco_cff::chi2.
Referenced by circleFit().
ALPAKA_FN_ACC ALPAKA_FN_INLINE Vector3d ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::min_eigen3D_fast | ( | const TAcc & | acc, |
const Matrix3d & | A | ||
) |
A faster version of min_eigen3D() where double precision is not needed.
A | the Matrix you want to know eigenvector and eigenvalue. |
chi2 | the double were the chi2-related quantity will be stored |
Definition at line 345 of file RiemannFit.h.
References A.
Referenced by circleFit().
ALPAKA_FN_ACC ALPAKA_FN_INLINE void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::par_uvrtopak | ( | const TAcc & | acc, |
CircleFit & | circle, | ||
const double | B, | ||
const bool | error | ||
) |
Transform circle parameter from (X0,Y0,R) to (phi,Tip,p_t) and consequently covariance matrix.
circle_uvr | parameter (X0,Y0,R), covariance matrix to be transformed and particle charge. |
B | magnetic field in Gev/cm/c unit. |
error | flag for errors computation. |
Definition at line 212 of file FitUtils.h.
References B, relativeConstraints::error, sqr(), and mathSSE::sqrt().
Referenced by riemannFit::helixFit< N >::operator()().
ALPAKA_FN_ACC void ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::printIt | ( | const TAcc & | acc, |
C * | m, | ||
const char * | prefix = "" |
||
) |
Definition at line 90 of file FitUtils.h.
References HltBtagPostValidation_cff::c, visualization-live-secondInstance_cfg::m, hcallasereventfilter2012_cfi::prefix, and parallelization::uint.
Referenced by circleFit(), cov_radtocart(), PrintSensitive::dumpTouch(), PrintMTDSens::dumpTouch(), fastFit(), lineFit(), scatter_cov_rad(), scatterCovLine(), and fwlite::Scanner< Collection >::setPrintFullEventId().
ALPAKA_FN_ACC ALPAKA_FN_INLINE MatrixNd<N> ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::scatter_cov_rad | ( | const TAcc & | acc, |
const M2xN & | p2D, | ||
const V4 & | fast_fit, | ||
VectorNd< N > const & | rad, | ||
double | B | ||
) |
Compute the covariance matrix (in radial coordinates) of points in the transverse plane due to multiple Coulomb scattering.
p2D | 2D points in the transverse plane. |
fast_fit | fast_fit Vector4d result of the previous pre-fit structured in this form:(X0, Y0, R, Tan(Theta))). |
B | magnetic field use to compute p |
Only the tangential component is computed (the radial one is negligible).
Definition at line 134 of file RiemannFit.h.
References funct::abs(), B, computeRadLenUniformMaterial(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), cross(), cross2D(), dot(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fast_fit, mps_fire::i, dqmdumpme::k, MainPageGenerator::l, M_PI, SiStripPI::min, N, dqmiodumpmetadata::n, printIt(), funct::sin(), sqr(), mathSSE::sqrt(), theta(), and parallelization::uint.
Referenced by circleFit().
ALPAKA_FN_ACC ALPAKA_FN_INLINE auto ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::scatterCovLine | ( | const TAcc & | acc, |
Matrix2d const * | cov_sz, | ||
const V4 & | fast_fit, | ||
VNd1 const & | s_arcs, | ||
VNd2 const & | z_values, | ||
const double | theta, | ||
const double | bField, | ||
MatrixNd< N > & | ret | ||
) |
Compute the covariance matrix along cartesian S-Z of points due to multiple Coulomb scattering to be used in the line_fit, for the barrel and forward cases. The input covariance matrix is in the variables s-z, original and unrotated. The multiple scattering component is computed in the usual linear approximation, using the 3D path which is computed as the squared root of the squared sum of the s and z components passed in. Internally a rotation by theta is performed and the covariance matrix returned is the one in the direction orthogonal to the rotated S3D axis, i.e. along the rotated Z axis. The choice of the rotation is not arbitrary, but derived from the fact that putting the horizontal axis along the S3D direction allows the usage of the ordinary least squared fitting techiques with the trivial parametrization y = mx + q, avoiding the patological case with m = +/- inf, that would correspond to the case at eta = 0.
Definition at line 71 of file RiemannFit.h.
References funct::abs(), Calorimetry_cff::bField, computeRadLenUniformMaterial(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::fast_fit, mps_fire::i, dqmdumpme::k, MainPageGenerator::l, SiStripPI::min, N, dqmiodumpmetadata::n, printIt(), runTheMatrix::ret, sqr(), createJobs::tmp, and parallelization::uint.
Referenced by lineFit().
raise to square.
Definition at line 104 of file FitUtils.h.
References a.
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::brokenline::circleFit(), circleFit(), cov_carttorad(), cov_carttorad_prefit(), fastFit(), fromCircleToPerigee(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::lineFit(), lineFit(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::matrixC_u(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::multScatt(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::helixFit< n >::operator()(), par_uvrtopak(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::rotationMatrix(), scatter_cov_rad(), scatterCovLine(), and ALPAKA_ACCELERATOR_NAMESPACE::brokenline::translateKarimaki().
ALPAKA_FN_ACC ALPAKA_FN_INLINE VectorNd<N> ALPAKA_ACCELERATOR_NAMESPACE::riemannFit::weightCircle | ( | const TAcc & | acc, |
const MatrixNd< N > & | cov_rad_inv | ||
) |
Compute the points' weights' vector for the circle fit when multiple scattering is managed. Further information in attached documentation.
cov_rad_inv | covariance matrix inverse in radial coordinated (or, beter, pre-fitted circle's orthogonal system). |
Definition at line 284 of file RiemannFit.h.
Referenced by circleFit().