Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:13

0001 #ifndef KinematicRefittedTrackState_H
0002 #define KinematicRefittedTrackState_H
0003 
0004 #include "RecoVertex/VertexPrimitives/interface/RefittedTrackState.h"
0005 #include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h"
0006 #include "RecoVertex/KinematicFitPrimitives/interface/Matrices.h"
0007 
0008 /**
0009  * Refitted state for kinematic parameters
0010  * To be used in KinematicParticleVertxFitter
0011  * only. Class caches the refitted state of the
0012  * particle and provide access to its
0013  * parameters in both parametrizations:
0014  * Kinemaic and extended Perigee.
0015  *
0016  * Several methods are done just to be
0017  * consistent with present KalmanVertexFitter
0018  * structure
0019  */
0020 
0021 class KinematicRefittedTrackState : public RefittedTrackState<6> {
0022 public:
0023   typedef ReferenceCountingPointer<RefittedTrackState<6> > RefCountedRefittedTrackState;
0024 
0025   KinematicRefittedTrackState(const KinematicState& st, const AlgebraicVector4& mv);
0026 
0027   /**
0028  * Access to Kinematic perigee parameters
0029  */
0030   AlgebraicVector6 parameters() const override;
0031 
0032   /**
0033  * Kinmatic perigee covariance
0034  */
0035   AlgebraicSymMatrix66 covariance() const override;
0036 
0037   /**
0038  * Access to Kinematic parameters
0039  */
0040   AlgebraicVector7 kinematicParameters() const;
0041 
0042   /**
0043  * Kinmatic covariance
0044  */
0045   AlgebraicSymMatrix77 kinematicParametersCovariance() const;
0046 
0047   /**
0048  * FTS out of kinematic parameters
0049  */
0050   FreeTrajectoryState freeTrajectoryState() const override;
0051 
0052   GlobalPoint position() const override;
0053 
0054   /**
0055  * Kinematic momentum vector
0056  */
0057   AlgebraicVector4 kinematicMomentumVector() const;
0058 
0059   /**
0060  * Perigee momentum vector
0061  */
0062   AlgebraicVector4 momentumVector() const override;
0063 
0064   TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface& surface) const override;
0065 
0066   TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface& surface,
0067                                                     const Propagator& propagator) const override;
0068 
0069   double weight() const override;
0070 
0071   ReferenceCountingPointer<RefittedTrackState<6> > stateWithNewWeight(const double newWeight) const override;
0072 
0073   std::vector<ReferenceCountingPointer<RefittedTrackState<6> > > components() const override;
0074 
0075   reco::TransientTrack transientTrack() const override;
0076 
0077 private:
0078   KinematicState state;
0079   AlgebraicVector4 momentumAtVertex;
0080 };
0081 #endif