61 if (otherP ==
nullptr) {
63 " ParticleKinematicLinearizedTrackState:: don't know how to compare myself to non-kinematic track state");
107 vectorParameters, vertexPosition,
charge(), covarianceMatrix,
part->currentState().magneticField());
130 res.Place_at(m3, 0, 0);
142 std::vector<ReferenceCountingPointer<LinearizedTrackState<6> > >
res;
153 momentum(2) -= 2 *
M_PI;
155 momentum(2) += 2 *
M_PI;
159 vertexPosition(0) = theRefittedState->position().x();
160 vertexPosition(1) = theRefittedState->position().y();
161 vertexPosition(2) = theRefittedState->position().z();
165 param(2) -= 2 *
M_PI;
166 if (param(2) < -
M_PI)
167 param(2) += 2 *
M_PI;
183 double signTC = -
part->currentState().particleCharge();
188 double transverseCurvatureAtEP = field / ptAtEP * signTC;
193 double X = x_v - paramPt.
x() -
sin(phiAtEP) / transverseCurvatureAtEP;
194 double Y = y_v - paramPt.
y() +
cos(phiAtEP) / transverseCurvatureAtEP;
195 double SS = X * X + Y *
Y;
207 double signX = (X > 0.0 ? +1.0 : -1.0);
208 phiFEP = -signTC * signX * acos(signTC * Y / S);
210 phiFEP = asin(-signTC * X / S);
211 if ((signTC * Y) < 0.0)
212 phiFEP =
M_PI - phiFEP;
243 -(X *
cos(phiAtEP) + Y *
sin(phiAtEP)) / (SS * transverseCurvatureAtEP * transverseCurvatureAtEP);
248 (signTC * (Y *
cos(phiAtEP) - X *
sin(phiAtEP)) / S - 1) / (transverseCurvatureAtEP * transverseCurvatureAtEP);
253 (phiAtEP -
theExpandedParams(2)) /
tan(thetaAtEP) / (transverseCurvatureAtEP * transverseCurvatureAtEP) +
269 momentumAtExpansionPoint[0] = transverseCurvatureAtEP;
270 momentumAtExpansionPoint[1] = thetaAtEP;
271 momentumAtExpansionPoint[2] = phiAtEP;
287 double X = x_v - paramPt.
x();
288 double Y = y_v - paramPt.
y();
327 momentumAtExpansionPoint[0] = 1 / ptAtEP;
328 momentumAtExpansionPoint[1] = thetaAtEP;
329 momentumAtExpansionPoint[2] = phiAtEP;
337 throw VertexException(
" ParticleKinematicLinearizedTrackState:: no TransientTrack to return");
AlgebraicSymMatrix66 predictedStateWeight(int &error) const override
AlgebraicVectorN refittedParamFromEquation(const RefCountedRefittedTrackState &theRefittedState) const override
RefCountedRefittedTrackState createRefittedTrackState(const GlobalPoint &vertexPosition, const AlgebraicVectorM &vectorParameters, const AlgebraicSymMatrix77 &covarianceMatrix) const override
reco::TransientTrack track() const override
const AlgebraicSymMatrix66 & covarianceMatrix() const
AlgebraicVector6 predictedStateParameters() const override
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
AlgebraicSymMatrix44 predictedStateMomentumError() const override
AlgebraicVector6 vector() const
bool operator==(LinearizedTrackState< 6 > &other) const override
GlobalVector globalMomentum() const
ROOT::Math::SVector< double, N-2 > AlgebraicVectorM
ROOT::Math::SMatrix< double, 6, 4, ROOT::Math::MatRepStd< double, 6, 4 > > AlgebraicMatrix64
TransientTrackKinematicStateBuilder builder
RefCountedKinematicParticle part
ROOT::Math::SMatrix< double, 6, 3, ROOT::Math::MatRepStd< double, 6, 3 > > AlgebraicMatrix63
Geom::Theta< T > theta() const
AlgebraicMatrix64 theMomentumJacobian
AlgebraicSymMatrix66 predictedStateError() const override
ParticleKinematicLinearizedTrackState()
void computeChargedJacobians() const
const AlgebraicVector6 & constantTerm() const override
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
ReferenceCountingPointer< RefittedTrackState< N > > RefCountedRefittedTrackState
KinematicState kinematicState(const AlgebraicVector4 &momentum, const GlobalPoint &referencePoint, const TrackCharge &charge, const AlgebraicSymMatrix77 &theCovarianceMatrix, const MagneticField *field) const
ROOT::Math::SVector< double, 4 > AlgebraicVector4
const AlgebraicSymMatrix66 & weightMatrix(int &error) const
AlgebraicVector6 theConstantTerm
bool hasError() const override
ReferenceCountingPointer< LinearizedTrackState< 6 > > RefCountedLinearizedTrackState
const ExtendedPerigeeTrajectoryError & perigeeError() const
PerigeeKinematicState thePredState
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
TrackCharge charge() const override
const AlgebraicVector6 & parametersFromExpansion() const override
const AlgebraicMatrix63 & positionJacobian() const override
AlgebraicMatrix63 thePositionJacobian
double S(const TLorentzVector &, const TLorentzVector &)
void computeJacobians() const
ROOT::Math::SMatrix< double, 7, 7, ROOT::Math::MatRepSym< double, 7 > > AlgebraicSymMatrix77
RefCountedKinematicParticle particle() const
void computeNeutralJacobians() const
AlgebraicVectorM predictedStateMomentumParameters() const override
ROOT::Math::SVector< double, 3 > AlgebraicVector3
ROOT::Math::SVector< double, 6 > AlgebraicVector6
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
const KinematicState & theState() const
const AlgebraicMatrix64 & momentumJacobian() const override
const ExtendedPerigeeTrajectoryParameters & perigeeParameters() const
void checkParameters(AlgebraicVectorN ¶meters) const override
double weightInMixture() const override
ReferenceCountingPointer< LinearizedTrackState< 6 > > stateWithNewLinearizationPoint(const GlobalPoint &newLP) const override
GlobalPoint globalPosition() const
std::vector< ReferenceCountingPointer< LinearizedTrackState< 6 > > > components() const override
AlgebraicVector6 theExpandedParams