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 00017 class TransientTrackKinematicParticle : public KinematicParticle 00018 { 00019 public: 00020 00028 TransientTrackKinematicParticle(const KinematicState& kineState,float& chiSquared, 00029 float& degreesOfFr,KinematicConstraint * lastConstraint, 00030 ReferenceCountingPointer<KinematicParticle> previousParticle, 00031 KinematicStatePropagator * pr,const reco::TransientTrack * initialTrack = 0); 00032 00033 virtual ~TransientTrackKinematicParticle(); 00034 00042 bool operator==(const KinematicParticle& other)const; 00043 00044 bool operator==(const ReferenceCountingPointer<KinematicParticle>& other) const; 00045 00046 bool operator!=(const KinematicParticle& other)const; 00047 00052 KinematicState stateAtPoint(const GlobalPoint& point)const; 00053 00057 const reco::TransientTrack * initialTransientTrack() const; 00058 00064 ReferenceCountingPointer<KinematicParticle> refittedParticle(const KinematicState& state, 00065 float chi2, float ndf, KinematicConstraint * cons = 0)const; 00066 00071 RefCountedLinearizedTrackState particleLinearizedTrackState(const GlobalPoint& point)const; 00072 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