#include <RecHitPropagator.h>
Public Member Functions | |
TrajectoryStateOnSurface | propagate (const TransientTrackingRecHit &hit, const Plane &plane, const TrajectoryStateOnSurface &ts) const |
Definition at line 10 of file RecHitPropagator.h.
TrajectoryStateOnSurface RecHitPropagator::propagate | ( | const TransientTrackingRecHit & | hit, |
const Plane & | plane, | ||
const TrajectoryStateOnSurface & | ts | ||
) | const |
Definition at line 6 of file RecHitPropagator.cc.
References anyDirection, TrajectoryStateOnSurface::charge(), TransientTrackingRecHit::det(), epsilon, TrajectoryStateOnSurface::globalParameters(), TrackingRecHit::localPosition(), TrackingRecHit::localPositionError(), m, GlobalTrajectoryParameters::magneticField(), AnalyticalPropagator::propagate(), GeomDet::specificSurface(), TrajectoryStateOnSurface::surface(), LocalError::xx(), LocalError::xy(), and LocalError::yy().
Referenced by TkGluedMeasurementDet::checkHitProjection().
{ const MagneticField& field = ts.globalParameters().magneticField(); AnalyticalPropagator prop( &field, anyDirection); TrajectoryStateOnSurface tsNoErr = TrajectoryStateOnSurface( ts.globalParameters(), ts.surface()); TrajectoryStateOnSurface hitts = prop.propagate( tsNoErr, hit.det()->specificSurface()); // LocalVector ldir = hit.det()->specificSurface().toLocal(ts.globalMomentum()); LocalVector ldir = hitts.localMomentum(); LocalTrajectoryParameters ltp( hit.localPosition(), ldir, ts.charge()); AlgebraicSymMatrix m(5,0); LocalError lhe = hit.localPositionError(); m[3][3] = lhe.xx(); m[3][4] = lhe.xy(); m[4][4] = lhe.yy(); const double epsilon = 1.e-8; // very small errors on momentum and angle m[0][0] = epsilon; m[1][1] = epsilon; m[2][2] = epsilon; LocalTrajectoryError lte( m); TrajectoryStateOnSurface startingState( ltp, lte, hit.det()->specificSurface(), &field); return prop.propagate( startingState, plane); }