23 phiErrorScale{theConfig.getParameter<
double>(
"phiErrorScale")},
25 tipErrorScale{theConfig.getParameter<
double>(
"tipErrorScale")},
26 zipErrorScale{theConfig.getParameter<
double>(
"zipErrorScale")} {}
40 const std::vector<const TrackingRecHit*>&
hits,
44 const auto& field = *fieldESH;
51 int charge = (invPt > 0.) ? 1 : -1;
64 double valPt = (fabs(invPt) > 1.e-4) ? 1. / fabs(invPt) : 1.e4;
217 return p0 +
p1 * fabs(invPt);
335 return p0 +
p1 * fabs(invPt);
458 return p0 +
p1 * fabs(invPt);
465 double rho3 = curv * curv * curv;
466 double r1 = pinner.
perp();
467 double phi1 =
r1 * curv / 2 + pinner.
perp2() *
r1 * rho3 / 48.;
468 double r2 = pouter.
perp();
469 double phi2 =
r2 * curv / 2 + pouter.
perp2() *
r2 * rho3 / 48.;
470 double z1 = pinner.
z();
471 double z2 = pouter.
z();
473 return z1 - phi1 / (phi1 - phi2) * (z1 -
z2);
589 return p0 +
p1 * fabs(invPt);
603 double dphi =
deltaPhi(phiL1, phi0);
604 if (fabs(dphi) < 0.01) {
607 double q = dphi / 2. /
p3;
608 double p =
p1 / 3. /
p3;
609 double D =
q *
q +
p *
p *
p;
730 return p1 + p0 * fabs(invPt);
734 double dphi_min = fabs(
deltaPhi(phi0, phiL1));
737 while (pt_cur < 10000.) {
739 double dphi = fabs(
deltaPhi(phi_exp, phiL1));
740 if (dphi < dphi_min) {
746 else if (pt_cur < 20.)
748 else if (pt_cur < 100.)
872 return p0 +
p1 *
sqr(invPt);
1008 while (phi1 >= 2 *
M_PI)
1010 while (phi2 >= 2 *
M_PI)
1016 double dPhi = phi2 - phi1;
double valInversePt(double phi0, double phiL1, double eta) const
T getParameter(std::string const &) const
const Point & center() const
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
void setPxConstraint(const SeedingHitSet &hits)
double errInversePt(double invPt, double eta) const
static double getBendingError(double invPt, double eta)
T curvature(T InversePt, const MagneticField &field)
reco::Track * build(const Measurement1D &pt, const Measurement1D &phi, const Measurement1D &cotTheta, const Measurement1D &tip, const Measurement1D &zip, float chi2, int charge, const std::vector< const TrackingRecHit *> &hits, const MagneticField *mf, const GlobalPoint &reference=GlobalPoint(0, 0, 0)) const
double errTip(double invPt, double eta) const
static void param(double eta, double &p1, double &p2, double &p3)
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
double valTip(const Circle &c, double curvature) const
virtual reco::Track * run(const edm::EventSetup &es, const std::vector< const TrackingRecHit *> &hits, const TrackingRegion ®ion) const
static double getBending(double invPt, double eta, int charge)
double errCotTheta(double invPt, double eta) const
const double phiErrorScale
double deltaPhi(double phi1, double phi2) const
double valZip(double curvature, const GlobalPoint &p0, const GlobalPoint &p1) const
const double zipErrorScale
edm::ParameterSet theConfig
DecomposeProduct< arg, typename Div::arg > D
const double cotThetaErrorScale
double errPhi(double invPt, double eta) const
double errZip(double invPt, double eta) const
double findPt(double phi0, double phiL1, double eta, int charge) const
void setL1Constraint(const L1MuGMTCand &muon)
const double invPtErrorScale
const double tipErrorScale
L1MuonPixelTrackFitter(const edm::ParameterSet &cfg)
double valPhi(const Circle &c, int charge) const
Power< A, B >::type pow(const A &a, const B &b)
double valCotTheta(const PixelRecoLineRZ &line) const