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;
191 if (field *
part->currentState().magneticField()->inInverseGeV(
part->currentState().globalPosition()).
z() < 0.) {
198 double X = x_v - paramPt.
x() -
sin(phiAtEP) / transverseCurvatureAtEP;
199 double Y = y_v - paramPt.
y() +
cos(phiAtEP) / transverseCurvatureAtEP;
200 double SS =
X *
X +
Y *
Y;
212 double signX = (
X > 0.0 ? +1.0 : -1.0);
213 phiFEP = -signTC * signX * acos(signTC *
Y /
S);
215 phiFEP = asin(-signTC *
X /
S);
216 if ((signTC *
Y) < 0.0)
217 phiFEP =
M_PI - phiFEP;
248 -(
X *
cos(phiAtEP) +
Y *
sin(phiAtEP)) / (SS * transverseCurvatureAtEP * transverseCurvatureAtEP);
253 (signTC * (
Y *
cos(phiAtEP) -
X *
sin(phiAtEP)) /
S - 1) / (transverseCurvatureAtEP * transverseCurvatureAtEP);
258 (phiAtEP -
theExpandedParams(2)) /
tan(thetaAtEP) / (transverseCurvatureAtEP * transverseCurvatureAtEP) +
274 momentumAtExpansionPoint[0] = transverseCurvatureAtEP;
275 momentumAtExpansionPoint[1] = thetaAtEP;
276 momentumAtExpansionPoint[2] = phiAtEP;
292 double X = x_v - paramPt.
x();
293 double Y = y_v - paramPt.
y();
332 momentumAtExpansionPoint[0] = 1 / ptAtEP;
333 momentumAtExpansionPoint[1] = thetaAtEP;
334 momentumAtExpansionPoint[2] = phiAtEP;
342 throw VertexException(
" ParticleKinematicLinearizedTrackState:: no TransientTrack to return");
const AlgebraicMatrix63 & positionJacobian() const override
RefCountedRefittedTrackState createRefittedTrackState(const GlobalPoint &vertexPosition, const AlgebraicVectorM &vectorParameters, const AlgebraicSymMatrix77 &covarianceMatrix) const override
ReferenceCountingPointer< LinearizedTrackState< 6 > > stateWithNewLinearizationPoint(const GlobalPoint &newLP) const override
const AlgebraicMatrix64 & momentumJacobian() const override
AlgebraicVectorN refittedParamFromEquation(const RefCountedRefittedTrackState &theRefittedState) const override
Geom::Phi< T > phi() const
bool hasError() const override
reco::TransientTrack track() const override
Sin< T >::type sin(const T &t)
const AlgebraicVector6 & parametersFromExpansion() const override
ROOT::Math::SVector< double, N - 2 > AlgebraicVectorM
const ExtendedPerigeeTrajectoryParameters & perigeeParameters() const
void computeNeutralJacobians() const
const AlgebraicSymMatrix66 & weightMatrix(int &error) const
ROOT::Math::SMatrix< double, 6, 4, ROOT::Math::MatRepStd< double, 6, 4 > > AlgebraicMatrix64
void checkParameters(AlgebraicVectorN ¶meters) const override
GlobalPoint globalPosition() const
TransientTrackKinematicStateBuilder builder
RefCountedKinematicParticle part
const ExtendedPerigeeTrajectoryError & perigeeError() const
ROOT::Math::SMatrix< double, 6, 3, ROOT::Math::MatRepStd< double, 6, 3 > > AlgebraicMatrix63
const KinematicState & theState() const
AlgebraicVectorM predictedStateMomentumParameters() const override
const AlgebraicVector6 & constantTerm() const override
void computeJacobians() const
AlgebraicMatrix64 theMomentumJacobian
ParticleKinematicLinearizedTrackState()
void computeChargedJacobians() const
AlgebraicVector6 vector() const
Cos< T >::type cos(const T &t)
GlobalVector globalMomentum() const
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
ROOT::Math::SVector< double, 4 > AlgebraicVector4
AlgebraicVector6 theConstantTerm
ReferenceCountingPointer< LinearizedTrackState< 6 > > RefCountedLinearizedTrackState
PerigeeKinematicState thePredState
TrackCharge charge() const override
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
AlgebraicMatrix63 thePositionJacobian
const AlgebraicSymMatrix66 & covarianceMatrix() const
ROOT::Math::SMatrix< double, 7, 7, ROOT::Math::MatRepSym< double, 7 > > AlgebraicSymMatrix77
RefCountedKinematicParticle particle() const
AlgebraicSymMatrix66 predictedStateWeight(int &error) 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
AlgebraicSymMatrix66 predictedStateError() const override
std::vector< ReferenceCountingPointer< LinearizedTrackState< 6 > > > components() const override
bool operator==(const LinearizedTrackState< 6 > &other) const override
AlgebraicSymMatrix44 predictedStateMomentumError() const override
AlgebraicVector6 predictedStateParameters() const override
Geom::Theta< T > theta() const
AlgebraicVector6 theExpandedParams
double weightInMixture() const override