|
|
Go to the documentation of this file.
9 #include <cuda_runtime.h>
29 double *__restrict__
phits,
34 constexpr uint32_t hitsInFit =
N;
46 #ifdef BROKENLINE_DEBUG
55 auto tuple_idx = local_idx +
offset;
78 for (
unsigned int i = 0;
i < hitsInFit; ++
i) {
82 .detParams(
hhp->detectorIndex(
hit))
86 printf(
"Hit global: %d: %d hits.col(%d) << %f,%f,%f\n",
93 printf(
"Error: %d: %d hits_ge.col(%d) << %e,%e,%e,%e,%e,%e\n",
106 hits_ge.col(
i) << ge[0], ge[1], ge[2], ge[3], ge[4], ge[5];
111 assert(fast_fit(0) == fast_fit(0));
112 assert(fast_fit(1) == fast_fit(1));
113 assert(fast_fit(2) == fast_fit(2));
114 assert(fast_fit(3) == fast_fit(3));
122 double *__restrict__
phits,
138 auto tuple_idx = local_idx +
offset;
163 #ifdef BROKENLINE_DEBUG
164 if (!(circle.
chi2 >= 0) || !(
line.chi2 >= 0))
165 printf(
"kernelBLFit failed! %f/%f\n", circle.
chi2,
line.chi2);
166 printf(
"kernelBLFit size %d for %d hits circle.par(0,1,2): %d %f,%f,%f\n",
173 printf(
"kernelBLHits line.par(0,1): %d %f,%f\n", tkid,
line.par(0),
line.par(1));
174 printf(
"kernelBLHits chi2 cov %f/%f %e,%e,%e,%e,%e\n",
Vector3d par
parameter: (X0,Y0,R)
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ float *__restrict__ phits_ge
__host__ __device__ void prepareBrokenLineData(const M3xN &hits, const V4 &fast_fit, const double bField, PreparedBrokenLineData< n > &results)
Computes the data needed for the Broken Line fit procedure that are mainly common for the circle and ...
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ phits
__host__ __device__ void circleFit(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 intercepti...
constexpr uint32_t maxNumberOfConcurrentFits
__host__ __device__ void lineFit(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 int...
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ float *__restrict__ double *__restrict__ uint32_t nHits
const caConstants::TupleMultiplicity *__restrict__ tupleMultiplicity
T1 atomicAdd(T1 *a, T2 b)
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ float *__restrict__ double *__restrict__ pfast_fit
Eigen::Map< Matrix6xNf< N >, 0, Eigen::Stride< 6 *stride, stride > > Map6xNf
const uint32_t *__restrict__ HitContainer * foundNtuplets
data needed for the Broken Line fit procedure.
static constexpr uint32_t nbins()
Eigen::Map< Matrix3xNd< N >, 0, Eigen::Stride< 3 *stride, stride > > Map3xNd
char data[epos_bytes_allocation]
TrackSoA::HitContainer HitContainer
Abs< T >::type abs(const T &t)
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ hhp
TrackSoAHeterogeneousT< maxNumber()> TrackSoA
__host__ __device__ void fastFit(const M3xN &hits, V4 &result)
A very fast helix fit.
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ float *__restrict__ double *__restrict__ uint32_t uint32_t offset
Eigen::Map< Vector4d, 0, Eigen::InnerStride< stride > > Map4d