91 std::unique_ptr<reco::Track>
ret;
93 int nhits = hits.size();
102 std::vector<GlobalPoint>
points(nhits);
116 float valPt = 1.f / invPt;
117 float chargeTmp = (points[1].x() - points[0].x()) * (points[2].
y() - points[1].y()) -
118 (points[1].
y() - points[0].y()) * (points[2].
x() - points[1].x());
119 charge = (chargeTmp > 0) ? -1 : 1;
120 float valPhi = (charge > 0) ? std::atan2(circle.
center().
x(), -circle.
center().
y())
126 initMom *= 10000. / initMom.
perp();
128 theta = initMom.
theta();
136 float sin2th =
sqr(
sin(theta));
139 float zErr = vertexErr.
czz();
140 float transverseErr = vertexErr.
cxx();
141 C[3][3] = transverseErr;
142 C[4][4] = zErr * sin2th + transverseErr * (1 - sin2th);
152 DetId outerDetId = 0;
154 for (
unsigned int iHit = 0; iHit < hits.size(); iHit++) {
164 outerState = updator.
update(state, *recHit);
170 DetId innerDetId = 0;
172 for (
int iHit = 2; iHit >= 0; --iHit) {
180 innerState = updator.
update(state, *recHit);
188 if (!impactPointState.
isValid())
198 impactPointState = updator.
update(impactPointState, bsrh);
201 if (!impactPointState.
isValid())
205 int ndof = 2 * hits.size() - 5;
212 ret = std::make_unique<reco::Track>(
float originRBound() const
bounds the particle vertex in the transverse plane
void rescaleError(double factor)
const Propagator * theOPropagator
LocalPoint localPosition_
const Propagator * thePropagator
Point3DBase< Scalar, LocalTag > LocalPoint
TrackCharge charge() const
GlobalPoint const & origin() const
std::unique_ptr< reco::Track > run(const std::vector< const TrackingRecHit * > &hits, const TrackingRegion ®ion, const edm::EventSetup &setup) const override
ret
prodAgent to be discontinued
const TrackerGeometry * theTracker
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
const CurvilinearTrajectoryError & curvilinearError() const
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
GlobalPoint globalPosition() const
const Plane & surface() const
The nominal surface of the GeomDet.
const MagneticField * theField
Geom::Theta< T > theta() const
T inversePt(T curvature, const edm::EventSetup &iSetup)
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
const SurfaceType & surface() const
CLHEP::HepMatrix AlgebraicMatrix
AlgebraicVector parameters() const override
static PlanePointer build(Args &&...args)
Cos< T >::type cos(const T &t)
MyBeamSpotHit(const reco::BeamSpot &beamSpot, const GeomDet *geom)
Tan< T >::type tan(const T &t)
double BeamWidthX() const
beam width X
T y() const
Cartesian y coordinate.
float originZBound() const
bounds the particle vertex in the longitudinal plane
std::shared_ptr< TrackingRecHit const > RecHitPointer
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
const reco::BeamSpot * theBeamSpot
KFBasedPixelFitter(const Propagator *propagator, const Propagator *opropagator, const TransientTrackingRecHitBuilder *ttrhBuilder, const TrackerGeometry *tracker, const MagneticField *field, const reco::BeamSpot *beamSpot)
const TransientTrackingRecHitBuilder * theTTRHBuilder
CLHEP::HepVector AlgebraicVector
AlgebraicMatrix projectionMatrix() const override
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
double sigmaZ() const
sigma z
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
float ptMin() const
minimal pt of interest
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
GlobalVector globalMomentum() const
CLHEP::HepSymMatrix AlgebraicSymMatrix
const TrackerGeomDet * idToDet(DetId) const override
AlgebraicSymMatrix parametersError() const override
const RotationType & rotation() const
DetId geographicalId() const
LocalError localPositionError() const override
const PositionType & position() const
T x() const
Cartesian x coordinate.
Global3DVector GlobalVector
LocalPoint localPosition() const override