00001 #ifndef VirtualKinematicParticle_H 00002 #define VirtualKinematicParticle_H 00003 00004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h" 00005 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" 00006 #include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h" 00007 00014 class VirtualKinematicParticle:public KinematicParticle 00015 { 00016 public: 00017 00025 VirtualKinematicParticle(const KinematicState& kineState,float& chiSquared, 00026 float& degreesOfFr, KinematicConstraint * lastConstraint, 00027 ReferenceCountingPointer<KinematicParticle> previousParticle, 00028 KinematicStatePropagator * pr); 00029 00030 virtual ~VirtualKinematicParticle(); 00031 00039 bool operator==(const KinematicParticle& other)const; 00040 00041 bool operator==(const ReferenceCountingPointer<KinematicParticle>& other) const; 00042 00043 bool operator!=(const KinematicParticle& other)const; 00044 00049 KinematicState stateAtPoint(const GlobalPoint& point)const; 00050 00056 RefCountedKinematicParticle refittedParticle(const KinematicState& state, 00057 float chi2, float ndf, KinematicConstraint * cons = 0)const; 00058 00063 RefCountedLinearizedTrackState particleLinearizedTrackState(const GlobalPoint& point)const; 00064 00065 private: 00066 00067 //propagator for kinematic states 00068 KinematicStatePropagator * propagator; 00069 00070 //LinearizedTrackStateFactory specific for this 00071 //type of particle 00072 ParticleKinematicLinearizedTrackStateFactory linFactory; 00073 }; 00074 #endif