diff --git a/Core/include/Acts/Vertexing/FullBilloirVertexFitter.ipp b/Core/include/Acts/Vertexing/FullBilloirVertexFitter.ipp index f403fc25cf028531f07f7713a6434a346a71e596..5ee028ada573aca71bc4593de3c2c2ab01929119 100644 --- a/Core/include/Acts/Vertexing/FullBilloirVertexFitter.ipp +++ b/Core/include/Acts/Vertexing/FullBilloirVertexFitter.ipp @@ -196,14 +196,9 @@ Acts::FullBilloirVertexFitter<input_track_t, linearizer_t>::fit( billoirVertex.Amat - billoirVertex.BCBmat; // VwgtMat = Amat-sum{BiMat*Ci^-1*BiMat^T} if (isConstraintFit) { - SpacePointVector posInBilloirFrame; // this will be 0 for first iteration but != 0 from second on - posInBilloirFrame[0] = - vertexingOptions.vertexConstraint.position()[0] - linPoint[0]; - posInBilloirFrame[1] = - vertexingOptions.vertexConstraint.position()[1] - linPoint[1]; - posInBilloirFrame[2] = - vertexingOptions.vertexConstraint.position()[2] - linPoint[2]; + SpacePointVector posInBilloirFrame = + vertexingOptions.vertexConstraint.fullPosition() - linPoint; Vdel += vertexingOptions.vertexConstraint.fullCovariance().inverse() * posInBilloirFrame; @@ -225,9 +220,7 @@ Acts::FullBilloirVertexFitter<input_track_t, linearizer_t>::fit( (bTrack.CiInv) * (bTrack.UiVec - bTrack.BiMat.transpose() * deltaV); // update track momenta - trackMomenta[iTrack][0] += deltaP[0]; - trackMomenta[iTrack][1] += deltaP[1]; - trackMomenta[iTrack][2] += deltaP[2]; + trackMomenta[iTrack] += deltaP; // correct for 2PI / PI periodicity auto correctedPhiTheta = detail::ensureThetaBounds( @@ -286,23 +279,19 @@ Acts::FullBilloirVertexFitter<input_track_t, linearizer_t>::fit( } if (isConstraintFit) { - Vector3D deltaTrk; // last term will also be 0 again but only in the first iteration // = calc. vtx in billoir frame - ( isConstraintFit pos. in billoir // frame ) - deltaTrk[0] = - deltaV[0] - - (vertexingOptions.vertexConstraint.position()[0] - linPoint[0]); - deltaTrk[1] = - deltaV[1] - - (vertexingOptions.vertexConstraint.position()[1] - linPoint[1]); - deltaTrk[2] = - deltaV[2] - - (vertexingOptions.vertexConstraint.position()[2] - linPoint[2]); + + SpacePointVector deltaTrk = + deltaV - + (vertexingOptions.vertexConstraint.fullPosition() - linPoint); + newChi2 += (deltaTrk.transpose()) - .dot(vertexingOptions.vertexConstraint.covariance().inverse() * - deltaTrk); + .dot( + vertexingOptions.vertexConstraint.fullCovariance().inverse() * + deltaTrk); } if (!std::isnormal(newChi2)) {