55 {
return part->initialState().particleCharge();}
65 throw VertexException(
" ParticleKinematicLinearizedTrackState:: don't know how to compare myself to non-kinematic track state");
115 charge(), covarianceMatrix,
part->currentState().magneticField());
138 res.Place_at(m3,0,0);
150 std::vector<ReferenceCountingPointer<LinearizedTrackState<6> > >
153 std::vector<ReferenceCountingPointer<LinearizedTrackState<6> > > res;
156 const_cast< ParticleKinematicLinearizedTrackState*>(
this)));
171 vertexPosition(0) = theRefittedState->position().x();
172 vertexPosition(1) = theRefittedState->position().y();
173 vertexPosition(2) = theRefittedState->position().z();
178 if (param(2) >
M_PI) param(2)-= 2*
M_PI;
179 if (param(2) < -
M_PI) param(2)+= 2*
M_PI;
197 double signTC = -
part->currentState().particleCharge();
202 double transverseCurvatureAtEP = field / ptAtEP*signTC;
207 double X = x_v - paramPt.
x() -
sin(phiAtEP) / transverseCurvatureAtEP;
208 double Y = y_v - paramPt.
y() +
cos(phiAtEP) / transverseCurvatureAtEP;
209 double SS = X*X + Y*Y;
221 double signX = (X>0.0? +1.0:-1.0);
222 phiFEP = -signTC * signX*acos(signTC*Y/S);
224 phiFEP = asin(-signTC*X/S);
226 phiFEP =
M_PI - phiFEP;
256 (X*
cos(phiAtEP) + Y*
sin(phiAtEP))/
257 (SS*transverseCurvatureAtEP*transverseCurvatureAtEP);
260 (SS*transverseCurvatureAtEP);
263 (signTC * (Y*
cos(phiAtEP) - X*
sin(phiAtEP)) / S - 1)/
264 (transverseCurvatureAtEP*transverseCurvatureAtEP);
267 (S*transverseCurvatureAtEP);
270 tan(thetaAtEP)/(transverseCurvatureAtEP*transverseCurvatureAtEP)+
274 (1 + 1/(
tan(thetaAtEP)*
tan(thetaAtEP)))/transverseCurvatureAtEP;
277 tan(thetaAtEP)/transverseCurvatureAtEP;
288 momentumAtExpansionPoint[0] = transverseCurvatureAtEP;
289 momentumAtExpansionPoint[1] = thetaAtEP;
290 momentumAtExpansionPoint[2] = phiAtEP;
310 double X = x_v - paramPt.
x();
311 double Y = y_v - paramPt.
y();
319 (X*
cos(phiAtEP) + Y*
sin(phiAtEP)) /
tan(thetaAtEP);
341 (1 + 1/(
tan(thetaAtEP)*
tan(thetaAtEP)));
352 momentumAtExpansionPoint[0] = 1 / ptAtEP;
353 momentumAtExpansionPoint[1] = thetaAtEP;
354 momentumAtExpansionPoint[2] = phiAtEP;
364 throw VertexException(
" ParticleKinematicLinearizedTrackState:: no TransientTrack to return");
const AlgebraicVector6 & constantTerm() const
const KinematicState theState() const
AlgebraicVectorM predictedStateMomentumParameters() const
const AlgebraicVector6 & parametersFromExpansion() const
double weightInMixture() const
virtual reco::TransientTrack track() const
const AlgebraicSymMatrix66 & covarianceMatrix() const
AlgebraicSymMatrix44 predictedStateMomentumError() const
RefCountedRefittedTrackState createRefittedTrackState(const GlobalPoint &vertexPosition, const AlgebraicVectorM &vectorParameters, const AlgebraicSymMatrix77 &covarianceMatrix) const
Sin< T >::type sin(const T &t)
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
Geom::Phi< T > phi() const
AlgebraicVector6 vector() const
GlobalVector globalMomentum() const
ROOT::Math::SMatrix< double, 6, 4, ROOT::Math::MatRepStd< double, 6, 4 > > AlgebraicMatrix64
TransientTrackKinematicStateBuilder builder
ROOT::Math::SVector< double, 6 > AlgebraicVector6
RefCountedKinematicParticle part
Geom::Theta< T > theta() const
ROOT::Math::SMatrix< double, 7, 7, ROOT::Math::MatRepSym< double, 7 > > AlgebraicSymMatrix77
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
AlgebraicMatrix64 theMomentumJacobian
void computeChargedJacobians() const
AlgebraicSymMatrix66 predictedStateWeight(int &error) const
bool operator==(LinearizedTrackState< 6 > &other) const
virtual const AlgebraicMatrix64 & momentumJacobian() const
Cos< T >::type cos(const T &t)
ROOT::Math::SVector< double, 3 > AlgebraicVector3
Tan< T >::type tan(const T &t)
ROOT::Math::SVector< double, N-2 > AlgebraicVectorM
ReferenceCountingPointer< RefittedTrackState< N > > RefCountedRefittedTrackState
KinematicState kinematicState(const AlgebraicVector4 &momentum, const GlobalPoint &referencePoint, const TrackCharge &charge, const AlgebraicSymMatrix77 &theCovarianceMatrix, const MagneticField *field) const
const AlgebraicSymMatrix66 & weightMatrix(int &error) const
AlgebraicVector6 theConstantTerm
virtual const AlgebraicMatrix63 & positionJacobian() const
ReferenceCountingPointer< LinearizedTrackState< 6 > > RefCountedLinearizedTrackState
std::vector< ReferenceCountingPointer< LinearizedTrackState< 6 > > > components() const
const ExtendedPerigeeTrajectoryError & perigeeError() const
PerigeeKinematicState thePredState
virtual ReferenceCountingPointer< LinearizedTrackState< 6 > > stateWithNewLinearizationPoint(const GlobalPoint &newLP) const
AlgebraicMatrix63 thePositionJacobian
ROOT::Math::SMatrix< double, 6, 3, ROOT::Math::MatRepStd< double, 6, 3 > > AlgebraicMatrix63
TrackCharge charge() const
void computeJacobians() const
virtual void checkParameters(AlgebraicVectorN ¶meters) const
RefCountedKinematicParticle particle() const
void computeNeutralJacobians() const
AlgebraicSymMatrix66 predictedStateError() const
virtual AlgebraicVectorN refittedParamFromEquation(const RefCountedRefittedTrackState &theRefittedState) const
const ExtendedPerigeeTrajectoryParameters & perigeeParameters() const
ROOT::Math::SVector< double, 4 > AlgebraicVector4
GlobalPoint globalPosition() const
AlgebraicVector6 predictedStateParameters() const
AlgebraicVector6 theExpandedParams