108 if (!linTrack1 || !linTrack2)
121 int checkInversion = 0;
124 std::pair<AlgebraicMatrix, AlgebraicMatrix> derivatives = tpeDerivatives.
derivatives(linearizationPoint);
135 AlgebraicMatrix curv2cart1 = decayModel.curvilinearToCartesianJacobian(curvMomentum1, zMagField);
137 AlgebraicVector cartMomentum1 = decayModel.convertCurvilinearToCartesian(curvMomentum1, zMagField);
138 vecC1 += matB1 * (curvMomentum1 - curv2cart1 * cartMomentum1);
139 matB1 = matB1 * curv2cart1;
147 if (checkInversion != 0) {
148 LogDebug(
"Alignment") <<
"@SUB=TwoBodyDecayEstimator::constructMatrices" 149 <<
"Matrix covM1 not invertible.";
162 AlgebraicMatrix curv2cart2 = decayModel.curvilinearToCartesianJacobian(curvMomentum2, zMagField);
164 AlgebraicVector cartMomentum2 = decayModel.convertCurvilinearToCartesian(curvMomentum2, zMagField);
165 vecC2 += matB2 * (curvMomentum2 - curv2cart2 * cartMomentum2);
166 matB2 = matB2 * curv2cart2;
174 if (checkInversion != 0) {
175 LogDebug(
"Alignment") <<
"@SUB=TwoBodyDecayEstimator::constructMatrices" 176 <<
"Matrix covM2 not invertible.";
185 vecM.sub(1, matU1 * vecM1);
186 vecM.sub(6, matU2 * vecM2);
203 matA.sub(1, 1, matU1 * matA1);
204 matA.sub(6, 1, matU2 * matA2);
205 matA.sub(1, 4, matU1 * matB1 * matF1);
206 matA.sub(6, 4, matU2 * matB2 * matF2);
CLHEP::HepMatrix asHepMatrix(const ROOT::Math::SMatrix< double, N1, N2, typename ROOT::Math::MatRepStd< double, N1, N2 > > &rm)
const double & primaryMass(void) const
AlgebraicVector3 predictedStateMomentumParameters() const override
GlobalVector inInverseGeV(const GlobalPoint &gp) const
Field value ad specified global point, in 1/Gev.
const AlgebraicVector5 & constantTerm() const override
const AlgebraicVector & parameters(void) const
Get decay parameters.
const AlgebraicVector sub(ParameterName first, ParameterName last) const
Get specified range of decay parameters.
CLHEP::HepMatrix AlgebraicMatrix
const MagneticField * field() const
const AlgebraicSymMatrix beamSpotError(void) const
const double & secondaryMass(void) const
const AlgebraicMatrix53 & positionJacobian() const override
CLHEP::HepVector AlgebraicVector
const AlgebraicMatrix53 & momentumJacobian() const override
const AlgebraicVector beamSpotPosition(void) const
const double & primaryWidth(void) const
reco::TransientTrack track() const override
AlgebraicSymMatrix55 predictedStateError() const override
CLHEP::HepSymMatrix AlgebraicSymMatrix
AlgebraicVector5 predictedStateParameters() const override
bool checkValues(const AlgebraicVector &vec) const
CLHEP::HepVector asHepVector(const ROOT::Math::SVector< double, N > &v)
const GlobalPoint & linearizationPoint() const override
const std::pair< AlgebraicMatrix, AlgebraicMatrix > derivatives(const TwoBodyDecay &tbd) const
const std::pair< AlgebraicVector, AlgebraicVector > cartesianSecondaryMomenta(const AlgebraicVector ¶m)