00001 #ifndef TransientTrackKinematicParticle_H 00002 #define TransientTrackKinematicParticle_H 00003 00004 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" 00006 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" 00007 #include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h" 00008 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00009 00018 class TransientTrackKinematicParticle : public KinematicParticle 00019 { 00020 public: 00021 00029 TransientTrackKinematicParticle(const KinematicState& kineState,float& chiSquared, 00030 float& degreesOfFr,KinematicConstraint * lastConstraint, 00031 ReferenceCountingPointer<KinematicParticle> previousParticle, 00032 KinematicStatePropagator * pr,const reco::TransientTrack * initialTrack = 0); 00033 00034 virtual ~TransientTrackKinematicParticle(); 00035 00043 bool operator==(const KinematicParticle& other)const; 00044 00045 bool operator==(const ReferenceCountingPointer<KinematicParticle>& other) const; 00046 00047 bool operator!=(const KinematicParticle& other)const; 00048 00053 KinematicState stateAtPoint(const GlobalPoint& point)const; 00054 00058 const reco::TransientTrack * initialTransientTrack() const; 00059 00065 ReferenceCountingPointer<KinematicParticle> refittedParticle(const KinematicState& state, 00066 float chi2, float ndf, KinematicConstraint * cons = 0)const; 00067 00072 RefCountedLinearizedTrackState particleLinearizedTrackState(const GlobalPoint& point)const; 00073 00074 private: 00075 00076 //initial TransientTrack (if any) 00077 const reco::TransientTrack * inTrack; 00078 00079 //propagator for kinematic states 00080 KinematicStatePropagator * propagator; 00081 00082 //LinearizedTrackStateFactory specific for this 00083 //type of particle 00084 ParticleKinematicLinearizedTrackStateFactory linFactory; 00085 }; 00086 #endif