00001 00002 #ifndef TFitParticleMCMomDev_hh 00003 #define TFitParticleMCMomDev_hh 00004 00005 #include "TMatrixD.h" 00006 #include "PhysicsTools/KinFitter/interface/TAbsFitParticle.h" 00007 #include "TLorentzVector.h" 00008 #include "TVector3.h" 00009 00010 class TFitParticleMCMomDev: public TAbsFitParticle { 00011 00012 public : 00013 00014 TFitParticleMCMomDev(); 00015 TFitParticleMCMomDev( const TFitParticleMCMomDev& fitParticle ); 00016 TFitParticleMCMomDev(TVector3* p, Double_t M, const TMatrixD* theCovMatrix); 00017 TFitParticleMCMomDev(const TString &name, const TString &title, 00018 TVector3* p, Double_t M, const TMatrixD* theCovMatrix); 00019 virtual ~TFitParticleMCMomDev(); 00020 virtual TAbsFitParticle* clone( TString newname = "" ) const; 00021 00022 // returns derivative dP/dy with P=(p,E) and y=(r, theta, phi, ...) 00023 // the free parameters of the fit. The columns of the matrix contain 00024 // (dP/dr, dP/dtheta, ...). 00025 virtual TMatrixD* getDerivative(); 00026 virtual TMatrixD* transform(const TLorentzVector& vec); 00027 virtual void setIni4Vec(const TLorentzVector* pini); 00028 void setIni4Vec(const TVector3* p, Double_t M); 00029 virtual TLorentzVector* calc4Vec( const TMatrixD* params ); 00030 00031 protected : 00032 00033 void init(TVector3* p, Double_t M, const TMatrixD* theCovMatrix); 00034 00035 00036 private: 00037 }; 00038 00039 #endif