CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends

PerigeeLinearizedTrackState Class Reference

#include <PerigeeLinearizedTrackState.h>

Inheritance diagram for PerigeeLinearizedTrackState:
LinearizedTrackState< 5 > ReferenceCounted

List of all members.

Public Types

typedef
ReferenceCountingPointer
< LinearizedTrackState< 5 > > 
RefCountedLinearizedTrackState

Public Member Functions

TrackCharge charge () const
virtual void checkParameters (AlgebraicVector5 &parameters) const
virtual std::vector
< ReferenceCountingPointer
< LinearizedTrackState< 5 > > > 
components () const
const AlgebraicVector5constantTerm () const
virtual
RefCountedRefittedTrackState 
createRefittedTrackState (const GlobalPoint &vertexPosition, const AlgebraicVector3 &vectorParameters, const AlgebraicSymMatrix66 &covarianceMatrix) const
bool hasError () const
virtual bool isValid () const
const GlobalPointlinearizationPoint () const
const AlgebraicMatrix53momentumJacobian () const
bool operator== (LinearizedTrackState< 5 > &other) const
bool operator== (ReferenceCountingPointer< LinearizedTrackState< 5 > > &other) const
const AlgebraicVector5parametersFromExpansion () const
const AlgebraicMatrix53positionJacobian () const
const
TrajectoryStateClosestToPoint
predictedState () const
AlgebraicSymMatrix55 predictedStateError () const
AlgebraicSymMatrix33 predictedStateMomentumError () const
virtual AlgebraicVector3 predictedStateMomentumParameters () const
AlgebraicVector5 predictedStateParameters () const
AlgebraicSymMatrix55 predictedStateWeight (int &error) const
virtual AlgebraicVector5 refittedParamFromEquation (const RefCountedRefittedTrackState &theRefittedState) const
const TrajectoryStateOnSurface state () const
virtual
RefCountedLinearizedTrackState 
stateWithNewLinearizationPoint (const GlobalPoint &newLP) const
virtual reco::TransientTrack track () const
virtual double weightInMixture () const

Private Member Functions

void compute3DImpactPoint () const
void computeChargedJacobians () const
void computeJacobians () const
void computeNeutralJacobians () const
 PerigeeLinearizedTrackState (const GlobalPoint &linP, const reco::TransientTrack &track, const TrajectoryStateOnSurface &tsos)

Private Attributes

TSCPBuilderNoMaterial builder
bool jacobiansAvailable
TrackCharge theCharge
AlgebraicVector5 theConstantTerm
AlgebraicVector5 theExpandedParams
GlobalPoint theLinPoint
AlgebraicMatrix53 theMomentumJacobian
AlgebraicMatrix53 thePositionJacobian
TrajectoryStateClosestToPoint thePredState
reco::TransientTrack theTrack
const TrajectoryStateOnSurface theTSOS

Friends

class LinearizedTrackStateFactory

Detailed Description

Calculates and stores the ImpactPointMeasurement of the impact point (point of closest approach in 3D) to the given linearization point. (see V.Karimaki, HIP-1997-77 / EXP)

Computes the parameters of the trajectory state at the transverse point of closest approach (in the global transverse plane) to the linearization point, and the jacobiam matrices. (see R.Fruehwirth et al. Data Analysis Techniques in HEP Experiments Second Edition, Cambridge University Press 2000, or R.Fruehwirth et al. Vertex reconstruction and track bundling at the LEP collider using robust algorithms. Computer Physics Communications 96 (1996) 189-208).

Both are done `on-demand' to improve CPU performance.

This particular implementation works with "perigee" helix parametrization: see Billoir et al. NIM in PR A311(1992) 139-150

Definition at line 32 of file PerigeeLinearizedTrackState.h.


Member Typedef Documentation

Definition at line 41 of file PerigeeLinearizedTrackState.h.


Constructor & Destructor Documentation

PerigeeLinearizedTrackState::PerigeeLinearizedTrackState ( const GlobalPoint linP,
const reco::TransientTrack track,
const TrajectoryStateOnSurface tsos 
) [inline, private]

Constructor with the linearization point and the track. Private, can only be used by LinearizedTrackFactory.

Definition at line 149 of file PerigeeLinearizedTrackState.h.

     : theLinPoint(linP), theTrack(track), jacobiansAvailable(false),
       // impactPointAvailable(false), 
       theCharge(theTrack.charge()), theTSOS(tsos) {}

Member Function Documentation

TrackCharge PerigeeLinearizedTrackState::charge ( void  ) const [inline, virtual]

Method returning the impact point measurement

Implements LinearizedTrackState< 5 >.

Definition at line 115 of file PerigeeLinearizedTrackState.h.

References theCharge.

Referenced by createRefittedTrackState().

{return theCharge;}
void PerigeeLinearizedTrackState::checkParameters ( AlgebraicVector5 parameters) const [inline, virtual]

Definition at line 223 of file PerigeeLinearizedTrackState.cc.

References M_PI, and Parameters::parameters.

{
  if (parameters(2) >  M_PI) parameters(2)-= 2*M_PI;
  if (parameters(2) < -M_PI) parameters(2)+= 2*M_PI;
}
std::vector< PerigeeLinearizedTrackState::RefCountedLinearizedTrackState > PerigeeLinearizedTrackState::components ( ) const [virtual]

Implements LinearizedTrackState< 5 >.

Definition at line 192 of file PerigeeLinearizedTrackState.cc.

References query::result.

{
  std::vector<RefCountedLinearizedTrackState> result; result.reserve(1);
  result.push_back(RefCountedLinearizedTrackState( 
                        const_cast<PerigeeLinearizedTrackState*>(this)));
  return result;
}
void PerigeeLinearizedTrackState::compute3DImpactPoint ( ) const [private]

Method calculating the 3D impact point measurement

void PerigeeLinearizedTrackState::computeChargedJacobians ( ) const [private]

Method calculating the track parameters and the Jacobians for charged particles.

Definition at line 229 of file PerigeeLinearizedTrackState.cc.

References abs, funct::cos(), reco::TransientTrack::field(), MagneticField::inInverseGeV(), M_PI, FreeTrajectoryState::momentum(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), FreeTrajectoryState::position(), funct::sin(), mathSSE::sqrt(), funct::tan(), theCharge, theConstantTerm, theExpandedParams, theLinPoint, theMomentumJacobian, thePositionJacobian, thePredState, TrajectoryStateClosestToPoint::theState(), PV3DBase< T, PVType, FrameType >::theta(), theTrack, PV3DBase< T, PVType, FrameType >::x(), X, PV3DBase< T, PVType, FrameType >::y(), PV3DBase< T, PVType, FrameType >::z(), and z.

Referenced by computeJacobians().

{
  GlobalPoint paramPt(theLinPoint);
  //tarjectory parameters
  double field =  theTrack.field()->inInverseGeV(thePredState.theState().position()).z();
  double signTC = -theCharge;
    
  double thetaAtEP = thePredState.theState().momentum().theta();
  double phiAtEP   = thePredState.theState().momentum().phi();
  double ptAtEP = thePredState.theState().momentum().perp();
  double transverseCurvatureAtEP = field / ptAtEP*signTC;

  double x_v = thePredState.theState().position().x();
  double y_v = thePredState.theState().position().y();
  double z_v = thePredState.theState().position().z();
  double X = x_v - paramPt.x() - sin(phiAtEP) / transverseCurvatureAtEP;
  double Y = y_v - paramPt.y() + cos(phiAtEP) / transverseCurvatureAtEP;
  double SS = X*X + Y*Y;
  double S = sqrt(SS);

  // The track parameters at the expansion point

  theExpandedParams[0] = transverseCurvatureAtEP;
  theExpandedParams[1] = thetaAtEP;
  theExpandedParams[3] = 1/transverseCurvatureAtEP  - signTC * S;
  double phiFEP;
  if (std::abs(X)>std::abs(Y)) {
    double signX = (X>0.0? +1.0:-1.0);
    phiFEP = -signTC * signX*acos(signTC*Y/S);
  } else {
    phiFEP = asin(-signTC*X/S);
    if ((signTC*Y)<0.0)
      phiFEP = M_PI - phiFEP;
  }
  if (phiFEP>M_PI) phiFEP-= 2*M_PI;
  theExpandedParams[2] = phiFEP;
  theExpandedParams[4] = z_v - paramPt.z() - 
        (phiAtEP - theExpandedParams[2]) / tan(thetaAtEP)/transverseCurvatureAtEP;
                
  // The Jacobian: (all at the expansion point)
  // [i,j]
  // i = 0: rho , 1: theta, 2: phi_p, 3: epsilon, 4: z_p
  // j = 0: x_v, 1: y_v, 2: z_v

  thePositionJacobian(2,0) = - Y / (SS);
  thePositionJacobian(2,1) = X / (SS);
  thePositionJacobian(3,0) = - signTC * X / S;
  thePositionJacobian(3,1) = - signTC * Y / S;
  thePositionJacobian(4,0) = thePositionJacobian(2,0)/tan(thetaAtEP)/transverseCurvatureAtEP;
  thePositionJacobian(4,1) = thePositionJacobian(2,1)/tan(thetaAtEP)/transverseCurvatureAtEP;
  thePositionJacobian(4,2) = 1;

  // [i,j]
  // i = 0: rho , 1: theta, 2: phi_p, 3: epsilon, 4: z_p
  // j = 0: rho, 1: theta, 2: phi_v
  theMomentumJacobian(0,0) = 1;
  theMomentumJacobian(1,1) = 1;

  theMomentumJacobian(2,0) = -
        (X*cos(phiAtEP) + Y*sin(phiAtEP))/
        (SS*transverseCurvatureAtEP*transverseCurvatureAtEP);

  theMomentumJacobian(2,2) = (Y*cos(phiAtEP) - X*sin(phiAtEP)) / 
        (SS*transverseCurvatureAtEP);

  theMomentumJacobian(3,0) = 
        (signTC * (Y*cos(phiAtEP) - X*sin(phiAtEP)) / S - 1)/
        (transverseCurvatureAtEP*transverseCurvatureAtEP);
  
  theMomentumJacobian(3,2) = signTC *(X*cos(phiAtEP) + Y*sin(phiAtEP))/
        (S*transverseCurvatureAtEP);
  
  theMomentumJacobian(4,0) = (phiAtEP - theExpandedParams[2]) /
        tan(thetaAtEP)/(transverseCurvatureAtEP*transverseCurvatureAtEP)+
        theMomentumJacobian(2,0) / tan(thetaAtEP)/transverseCurvatureAtEP;

  theMomentumJacobian(4,1) = (phiAtEP - theExpandedParams[2]) *
        (1 + 1/(tan(thetaAtEP)*tan(thetaAtEP)))/transverseCurvatureAtEP;

  theMomentumJacobian(4,2) = (theMomentumJacobian(2,2) - 1) / 
                                tan(thetaAtEP)/transverseCurvatureAtEP;

   // And finally the residuals:

  AlgebraicVector3 expansionPoint;
  expansionPoint(0) = thePredState.theState().position().x();
  expansionPoint(1) = thePredState.theState().position().y();
  expansionPoint(2) = thePredState.theState().position().z(); 
  AlgebraicVector3 momentumAtExpansionPoint;
  momentumAtExpansionPoint(0) = transverseCurvatureAtEP;  // Transverse Curv
  momentumAtExpansionPoint(1) = thetaAtEP;
  momentumAtExpansionPoint(2) = phiAtEP; 

  theConstantTerm = AlgebraicVector5( theExpandedParams -
                  thePositionJacobian * expansionPoint -
                  theMomentumJacobian * momentumAtExpansionPoint );

}
void PerigeeLinearizedTrackState::computeJacobians ( ) const [private]

Method calculating the track parameters and the Jacobians.

Method returning the impact point measurement

Definition at line 64 of file PerigeeLinearizedTrackState.cc.

References abs, builder, computeChargedJacobians(), computeNeutralJacobians(), alignCSCRings::e, reco::TransientTrack::field(), MagneticField::inInverseGeV(), TrajectoryStateClosestToPoint::isValid(), jacobiansAvailable, FreeTrajectoryState::position(), theCharge, theLinPoint, thePredState, TrajectoryStateClosestToPoint::theState(), theTrack, theTSOS, and z.

Referenced by constantTerm(), hasError(), isValid(), momentumJacobian(), parametersFromExpansion(), positionJacobian(), predictedState(), predictedStateError(), predictedStateMomentumError(), predictedStateMomentumParameters(), predictedStateParameters(), and predictedStateWeight().

{
  GlobalPoint paramPt(theLinPoint);

//   std::cout << "Track "
//   << "\n Param    " << theTSOS.globalParameters ()
//   << "\n Dir      " << theTSOS.globalDirection ()
//    << "\n";
  thePredState = builder(theTSOS, paramPt); 
  if (!thePredState.isValid())
    return;
//   std::cout << "thePredState " << thePredState.theState().position()<<std::endl;
//   edm::LogInfo("RecoVertex/PerigeeLTS") 
//     << "predstate built" << "\n";
  double field =  theTrack.field()->inInverseGeV(thePredState.theState().position()).z();

  if ((std::abs(theCharge)<1e-5)||(fabs(field)<1.e-10)){
    //neutral track
    computeNeutralJacobians();
  } else {
    //charged track
//     edm::LogInfo("RecoVertex/PerigeeLTS") 
//       << "about to compute charged jac" << "\n";
    computeChargedJacobians();
//     edm::LogInfo("RecoVertex/PerigeeLTS") 
//       << "charged jac computed" << "\n";
  }




  jacobiansAvailable = true;
}
void PerigeeLinearizedTrackState::computeNeutralJacobians ( ) const [private]

Method calculating the track parameters and the Jacobians for neutral particles.

Definition at line 332 of file PerigeeLinearizedTrackState.cc.

References funct::cos(), FreeTrajectoryState::momentum(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), FreeTrajectoryState::position(), funct::sin(), funct::tan(), theConstantTerm, theExpandedParams, theLinPoint, theMomentumJacobian, thePositionJacobian, thePredState, TrajectoryStateClosestToPoint::theState(), PV3DBase< T, PVType, FrameType >::theta(), PV3DBase< T, PVType, FrameType >::x(), X, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by computeJacobians().

{
  GlobalPoint paramPt(theLinPoint);

  //tarjectory parameters
  double thetaAtEP = thePredState.theState().momentum().theta();
  double phiAtEP   = thePredState.theState().momentum().phi();
  double ptAtEP = thePredState.theState().momentum().perp();

  double x_v = thePredState.theState().position().x();
  double y_v = thePredState.theState().position().y();
  double z_v = thePredState.theState().position().z();
  double X = x_v - paramPt.x();
  double Y = y_v - paramPt.y();

  // The track parameters at the expansion point

  theExpandedParams(0) = 1 / ptAtEP;
  theExpandedParams(1) = thetaAtEP;
  theExpandedParams(2) = phiAtEP;
  theExpandedParams(3) = X*sin(phiAtEP) - Y*cos(phiAtEP);
  theExpandedParams(4) = z_v - paramPt.z() - 
        (X*cos(phiAtEP) + Y*sin(phiAtEP)) / tan(thetaAtEP);

  // The Jacobian: (all at the expansion point)
  // [i,j]
  // i = 0: rho = 1/pt , 1: theta, 2: phi_p, 3: epsilon, 4: z_p
  // j = 0: x_v, 1: y_v, 2: z_v

  thePositionJacobian(3,0) =   sin(phiAtEP);
  thePositionJacobian(3,1) = - cos(phiAtEP);
  thePositionJacobian(4,0) = - cos(phiAtEP)/tan(thetaAtEP);
  thePositionJacobian(4,1) = - sin(phiAtEP)/tan(thetaAtEP);
  thePositionJacobian(4,2) = 1;

  // [i,j]
  // i = 0: rho = 1/pt , 1: theta, 2: phi_p, 3: epsilon, 4: z_p
  // j = 0: rho = 1/pt , 1: theta, 2: phi_v

  theMomentumJacobian(0,0) = 1;
  theMomentumJacobian(1,1) = 1;
  theMomentumJacobian(2,2) = 1;

  theMomentumJacobian(3,2) = X*cos(phiAtEP) + Y*sin(phiAtEP);
  
  theMomentumJacobian(4,1) = theMomentumJacobian(3,2)*
        (1 + 1/(tan(thetaAtEP)*tan(thetaAtEP)));

  theMomentumJacobian(4,2) = (X*sin(phiAtEP) - Y*cos(phiAtEP))/tan(thetaAtEP);

   // And finally the residuals:

  AlgebraicVector3 expansionPoint;
  expansionPoint(0) = thePredState.theState().position().x();
  expansionPoint(1) = thePredState.theState().position().y();
  expansionPoint(2) = thePredState.theState().position().z(); 
  AlgebraicVector3 momentumAtExpansionPoint;
  momentumAtExpansionPoint(0) = 1 / ptAtEP;  // 
  momentumAtExpansionPoint(1) = thetaAtEP;
  momentumAtExpansionPoint(2) = phiAtEP; 

  theConstantTerm = AlgebraicVector5( theExpandedParams -
                  thePositionJacobian * expansionPoint -
                  theMomentumJacobian * momentumAtExpansionPoint );

}
const AlgebraicVector5 & PerigeeLinearizedTrackState::constantTerm ( ) const [virtual]

Method returning the constant term of the Taylor expansion of the measurement equation

Implements LinearizedTrackState< 5 >.

Definition at line 14 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), jacobiansAvailable, and theConstantTerm.

Referenced by TwoBodyDecayEstimator::constructMatrices(), and refittedParamFromEquation().

PerigeeLinearizedTrackState::RefCountedRefittedTrackState PerigeeLinearizedTrackState::createRefittedTrackState ( const GlobalPoint vertexPosition,
const AlgebraicVector3 vectorParameters,
const AlgebraicSymMatrix66 covarianceMatrix 
) const [virtual]

Creates the correct refitted state according to the results of the track refit.

Definition at line 179 of file PerigeeLinearizedTrackState.cc.

References charge(), reco::TransientTrack::field(), theTrack, and PerigeeConversions::trajectoryStateClosestToPoint().

{
  PerigeeConversions perigeeConversions;
  TrajectoryStateClosestToPoint refittedTSCP = 
        perigeeConversions.trajectoryStateClosestToPoint(
          vectorParameters, vertexPosition, charge(), covarianceMatrix, theTrack.field());
  return RefCountedRefittedTrackState(new PerigeeRefittedTrackState(refittedTSCP, vectorParameters));
}
bool PerigeeLinearizedTrackState::hasError ( void  ) const [virtual]
bool PerigeeLinearizedTrackState::isValid ( void  ) const [virtual]
const GlobalPoint& PerigeeLinearizedTrackState::linearizationPoint ( ) const [inline, virtual]

The point at which the track state has been linearized

Implements LinearizedTrackState< 5 >.

Definition at line 54 of file PerigeeLinearizedTrackState.h.

References theLinPoint.

Referenced by TwoBodyDecayEstimator::constructMatrices().

{ return theLinPoint; }
const AlgebraicMatrix53 & PerigeeLinearizedTrackState::momentumJacobian ( ) const [virtual]

Method returning the Momentum Jacobian from the Taylor expansion (Matrix B)

Method returning the Momentum Jacobian (Matrix B)

Implements LinearizedTrackState< 5 >.

Definition at line 32 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), jacobiansAvailable, and theMomentumJacobian.

Referenced by TwoBodyDecayEstimator::constructMatrices(), and refittedParamFromEquation().

bool PerigeeLinearizedTrackState::operator== ( LinearizedTrackState< 5 > &  other) const

Definition at line 148 of file PerigeeLinearizedTrackState.cc.

References theTrack, and track().

{
  const PerigeeLinearizedTrackState* otherP = 
        dynamic_cast<const PerigeeLinearizedTrackState*>(&other);
  if (otherP == 0) {
   throw VertexException("PerigeeLinearizedTrackState: don't know how to compare myself to non-perigee track state");
  }
  return (otherP->track() == theTrack);
}
bool PerigeeLinearizedTrackState::operator== ( ReferenceCountingPointer< LinearizedTrackState< 5 > > &  other) const

Definition at line 159 of file PerigeeLinearizedTrackState.cc.

References theTrack, and track().

{
  const PerigeeLinearizedTrackState* otherP = 
        dynamic_cast<const PerigeeLinearizedTrackState*>(other.get());
  if (otherP == 0) {
   throw VertexException("PerigeeLinearizedTrackState: don't know how to compare myself to non-perigee track state");
  }
  return (otherP->track() == theTrack);
}
const AlgebraicVector5 & PerigeeLinearizedTrackState::parametersFromExpansion ( ) const [virtual]

Method returning the parameters of the Taylor expansion

Implements LinearizedTrackState< 5 >.

Definition at line 40 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), jacobiansAvailable, and theExpandedParams.

const AlgebraicMatrix53 & PerigeeLinearizedTrackState::positionJacobian ( ) const [virtual]

Method returning the Position Jacobian from the Taylor expansion (Matrix A)

Method returning the Position Jacobian (Matrix A)

Implements LinearizedTrackState< 5 >.

Definition at line 23 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), jacobiansAvailable, and thePositionJacobian.

Referenced by TwoBodyDecayEstimator::constructMatrices(), and refittedParamFromEquation().

const TrajectoryStateClosestToPoint & PerigeeLinearizedTrackState::predictedState ( ) const

Method returning the track state at the point of closest approach to the linearization point, in the transverse plane (a.k.a. transverse impact point).

Method returning the TrajectoryStateClosestToPoint at the point of closest approch to the z-axis (a.k.a. transverse impact point)

Definition at line 50 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), jacobiansAvailable, and thePredState.

Referenced by TwoBodyDecayLinearizationPointFinder::getLinearizationPoint(), and PerigeeMultiLTS::predictedState().

AlgebraicSymMatrix55 PerigeeLinearizedTrackState::predictedStateError ( ) const [virtual]
AlgebraicSymMatrix33 PerigeeLinearizedTrackState::predictedStateMomentumError ( ) const [virtual]

Method returning the momentum covariance matrix of the track state at the transverse impact point.

Implements LinearizedTrackState< 5 >.

Definition at line 142 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), PerigeeTrajectoryError::covarianceMatrix(), jacobiansAvailable, TrajectoryStateClosestToPoint::perigeeError(), and thePredState.

AlgebraicVector3 PerigeeLinearizedTrackState::predictedStateMomentumParameters ( ) const [virtual]
AlgebraicVector5 PerigeeLinearizedTrackState::predictedStateParameters ( ) const [virtual]
AlgebraicSymMatrix55 PerigeeLinearizedTrackState::predictedStateWeight ( int &  error) const [virtual]

Method returning the weight matrix of the track state at the transverse impact point. The error variable is 0 in case of success.

Implements LinearizedTrackState< 5 >.

Definition at line 126 of file PerigeeLinearizedTrackState.cc.

References computeJacobians(), TrajectoryStateClosestToPoint::isValid(), jacobiansAvailable, TrajectoryStateClosestToPoint::perigeeError(), thePredState, and PerigeeTrajectoryError::weightMatrix().

AlgebraicVector5 PerigeeLinearizedTrackState::refittedParamFromEquation ( const RefCountedRefittedTrackState theRefittedState) const [virtual]

Method returning the parameters of the Taylor expansion evaluated with the refitted state.

Implements LinearizedTrackState< 5 >.

Definition at line 201 of file PerigeeLinearizedTrackState.cc.

References constantTerm(), M_PI, momentumJacobian(), positionJacobian(), and predictedStateMomentumParameters().

{
  AlgebraicVector3 vertexPosition;
  vertexPosition(0) = theRefittedState->position().x();
  vertexPosition(1) = theRefittedState->position().y();
  vertexPosition(2) = theRefittedState->position().z();
  AlgebraicVector3 momentum = theRefittedState->momentumVector();
  if ((momentum(2)*predictedStateMomentumParameters()(2) <  0)&&(fabs(momentum(2))>M_PI/2) ) {
    if (predictedStateMomentumParameters()(2) < 0.) momentum(2)-= 2*M_PI;
    if (predictedStateMomentumParameters()(2) > 0.) momentum(2)+= 2*M_PI;
  }
  AlgebraicVectorN param = constantTerm() + 
                       positionJacobian() * vertexPosition +
                       momentumJacobian() * momentum;
  if (param(2) >  M_PI) param(2)-= 2*M_PI;
  if (param(2) < -M_PI) param(2)+= 2*M_PI;

  return param;
}
const TrajectoryStateOnSurface PerigeeLinearizedTrackState::state ( ) const [inline]

Definition at line 58 of file PerigeeLinearizedTrackState.h.

References theTSOS.

{ return theTSOS; }
PerigeeLinearizedTrackState::RefCountedLinearizedTrackState PerigeeLinearizedTrackState::stateWithNewLinearizationPoint ( const GlobalPoint newLP) const [virtual]

Returns a new linearized state with respect to a new linearization point. A new object of the same type is returned, without change to the existing one.

Implements LinearizedTrackState< 5 >.

Definition at line 172 of file PerigeeLinearizedTrackState.cc.

virtual reco::TransientTrack PerigeeLinearizedTrackState::track ( void  ) const [inline, virtual]
virtual double PerigeeLinearizedTrackState::weightInMixture ( ) const [inline, virtual]

Implements LinearizedTrackState< 5 >.

Definition at line 135 of file PerigeeLinearizedTrackState.h.

References theTSOS, and TrajectoryStateOnSurface::weight().

{return theTSOS.weight();}

Friends And Related Function Documentation

friend class LinearizedTrackStateFactory [friend]

Friend class properly dealing with creation of reference-counted pointers to LinearizedTrack objects

Definition at line 40 of file PerigeeLinearizedTrackState.h.


Member Data Documentation

Definition at line 178 of file PerigeeLinearizedTrackState.h.

Referenced by computeJacobians().

Definition at line 182 of file PerigeeLinearizedTrackState.h.

Referenced by computeJacobians(), isValid(), state(), and weightInMixture().