13 if (
state.particleCharge() == 0.) {
14 return propagateToTheTransversePCANeutral(
state, referencePoint);
16 return propagateToTheTransversePCACharged(
state, referencePoint);
21 inline pair<HelixBarrelPlaneCrossingByCircle, BoundPlane::BoundPlanePointer> planeCrossing(
29 double fac =
state.charge() /
state.parameters().magneticFieldInInverseGeV(
point).z();
31 GlobalVectorDouble xOrig2Centre(fac * inMom.
y(), -fac * inMom.
x(), 0.);
32 GlobalVectorDouble xOrigProj(inPos.
x(), inPos.
y(), 0.);
33 GlobalVectorDouble xRefProj(
point.x(),
point.y(), 0.);
34 GlobalVectorDouble deltax = xRefProj - xOrigProj - xOrig2Centre;
35 GlobalVectorDouble ndeltax = deltax.unit();
49 return std::pair<HelixBarrelPlaneCrossingByCircle, Plane::PlanePointer>(planeCrossing, plane);
55 if (
state.particleCharge() == 0.)
60 std::pair<HelixBarrelPlaneCrossingByCircle, BoundPlane::BoundPlanePointer> cros = planeCrossing(
fState,
point);
64 std::pair<bool, double> propResult = planeCrossing.
pathLength(*plane);
65 return propResult.first;
80 std::pair<HelixBarrelPlaneCrossingByCircle, BoundPlane::BoundPlanePointer> cros = planeCrossing(
fState, iP);
84 std::pair<bool, double> propResult = planeCrossing.
pathLength(*plane);
85 if (!propResult.first) {
86 LogDebug(
"RecoVertex/TrackKinematicStatePropagator") <<
"Propagation failed! State is invalid\n";
89 double s = propResult.second;
98 pGen *= inMom.
mag() / pGen.mag();
102 par(0) = nPosition.
x();
103 par(1) = nPosition.y();
104 par(2) = nPosition.z();
105 par(3) = nMomentum.x();
106 par(4) = nMomentum.y();
107 par(5) = nMomentum.z();
117 bool thereIsNoCorr =
true;
119 for (
auto i = 0;
i < 6; ++
i)
120 thereIsNoCorr &= (0 ==
state.kinematicParametersError().matrix()(
i, 6));
140 ca2cu.Place_at(cart2curv.
jacobian(), 0, 0);
141 cu2ca.Place_at(curv2cart.
jacobian(), 0, 0);
159 pr.Place_at(prop.jacobian(), 0, 0);
165 cov = ROOT::Math::Similarity(cu2ca, cov2);
200 double phi =
fState.momentum().phi();
202 double xOrig = xvecOrig.
x();
203 double yOrig = xvecOrig.
y();
204 double zOrig = xvecOrig.
z();
205 double xR = referencePoint.
x();
206 double yR = referencePoint.
y();
208 double s2D = (xR - xOrig) *
cos(phi) + (yR - yOrig) *
sin(phi);
210 double xGen = xOrig + s2D *
cos(phi);
211 double yGen = yOrig + s2D *
sin(phi);
212 double zGen = zOrig + s2D /
tan(
theta);
217 par(0) = xPerigee.
x();
218 par(1) = xPerigee.
y();
219 par(2) = xPerigee.
z();
220 par(3) = pPerigee.
x();
221 par(4) = pPerigee.
y();
222 par(5) = pPerigee.
z();
224 par(6) =
state.mass();
237 ca2cu.Place_at(cart2curv.jacobian(), 0, 0);
238 cu2ca.Place_at(curv2cart.
jacobian(), 0, 0);
251 pr.Place_at(prop.jacobian(), 0, 0);
257 cov = ROOT::Math::Similarity(cu2ca, cov2);