23 : nominalB_(nominalB), field_(field), useRiemannFit_(useRiemannFit) {}
27 using namespace riemannFit;
29 std::unique_ptr<reco::Track>
ret;
31 unsigned int nhits = hits.size();
40 for (
unsigned int i = 0;
i !=
nhits; ++
i) {
41 auto const& recHit = hits[
i];
43 errors[
i] = recHit->globalPositionError();
44 isBarrel[
i] = recHit->detUnit()->type().isBarrel();
50 Eigen::Matrix<float, 6, 4> hits_ge = Eigen::Matrix<float, 6, 4>::Zero();
52 for (
unsigned int i = 0;
i <
nhits; ++
i) {
53 hits_gp.col(
i) << points[
i].x(), points[
i].y(), points[
i].z();
55 hits_ge.col(
i) << errors[
i].cxx(), errors[
i].cyx(), errors[
i].cyy(), errors[
i].czx(), errors[
i].czy(),
62 int iCharge = fittedTrack.qCharge;
70 float valPhi = fittedTrack.par(0);
72 float valTip = fittedTrack.par(1);
74 float valCotTheta = fittedTrack.par(3);
76 float valZip = fittedTrack.par(4);
77 float valPt = fittedTrack.par(2);
80 float errValPhi =
std::sqrt(fittedTrack.cov(0, 0));
81 float errValTip =
std::sqrt(fittedTrack.cov(1, 1));
83 float errValPt =
std::sqrt(fittedTrack.cov(2, 2));
85 float errValCotTheta =
std::sqrt(fittedTrack.cov(3, 3));
86 float errValZip =
std::sqrt(fittedTrack.cov(4, 4));
88 float chi2 = fittedTrack.chi2_line + fittedTrack.chi2_circle;
98 ret.reset(builder.build(pt, phi, cotTheta, tip, zip,
chi2, iCharge, hits,
field_, region.
origin()));
tuple ret
prodAgent to be discontinued
GlobalPoint const & origin() const
Global3DPoint GlobalPoint
std::unique_ptr< reco::Track > run(const std::vector< const TrackingRecHit * > &hits, const TrackingRegion ®ion) const override
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
riemannFit::HelixFit helixFit(const riemannFit::Matrix3xNd< n > &hits, const Eigen::Matrix< float, 6, 4 > &hits_ge, const double bField)
Helix fit by three step: -fast pre-fit (see Fast_fit() for further info); -circle fit of the hits pr...
Eigen::Matrix< double, 3, N > Matrix3xNd
#define declareDynArray(T, n, x)
const MagneticField * field_
const BasicVectorType & basicVector() const
HelixFit helixFit(const Matrix3xNd< N > &hits, const Eigen::Matrix< float, 6, N > &hits_ge, const double bField, const bool error)
Helix fit by three step: -fast pre-fit (see Fast_fit() for further info); -circle fit of hits proje...
PixelNtupletsFitter(float nominalB, const MagneticField *field, bool useRiemannFit)