8 std::pair<TrajectoryStateOnSurface,double>
10 const Plane& plane)
const
16 bool parametersOK = propagateParametersOnPlane(fts, plane, x, p, s);
21 return std::make_pair( propagatedState(fts, plane, jacobian(s), x, p), s);
29 std::pair<TrajectoryStateOnSurface,double>
37 bool parametersOK = propagateParametersOnCylinder(fts, cylinder, x, p, s);
42 return std::make_pair( propagatedState(fts, cylinder, jacobian(s), x, p), s);
51 StraightLinePropagator::propagatedState(
const FTS& fts,
63 return TSOS(ltp, eloc, surface, theField);
71 StraightLinePropagator::propagatedState(
const FTS& fts,
84 TSOS tmp2(
tmp.localParameters(), eloc, surface, theField);
86 return TSOS(gtp, tmp2.cartesianError(), surface);
98 if (s*dir < 0.)
return j;
106 bool StraightLinePropagator::propagateParametersOnCylinder(
const FTS& fts,
112 if (sp.
x()!=0. || sp.
y()!=0.) {
113 throw PropagationException(
"Cannot propagate to an arbitrary cylinder");
118 s = cylinder.radius() - x.
perp();
120 double dir = (propagationDirection() ==
alongMomentum) ? 1. : -1.;
121 if(s*dir < 0.)
return false;
131 bool StraightLinePropagator::propagateParametersOnPlane(
const FTS& fts,
145 if ((p.
x() != 0 || p.
y() != 0) && p.
z() == 0 && s!= 0)
return false;
148 x.
y() + (p.
y()/p.
z())*s,
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
Global3DPoint GlobalPoint
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
TrackCharge charge() const
LocalPoint toLocal(const GlobalPoint &gp) const
GlobalVector momentum() const
GlobalPoint position() const
TrajectoryStateOnSurface TSOS
std::vector< std::vector< double > > tmp
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepStd< double, 5, 5 > > AlgebraicMatrix55