Index: classes/DelphesClasses.cc
===================================================================
--- classes/DelphesClasses.cc	(revision 3051ea17c5b30d4c3b7cd6fddba1f79c6c34a51b)
+++ classes/DelphesClasses.cc	(revision 2671df61ab2e79d15b187bd70d47447e82611d4c)
@@ -108,4 +108,45 @@
 //------------------------------------------------------------------------------
 
+TMatrixDSym Track::CovarianceMatrix() const
+{
+  TMatrixDSym Cv;
+  Cv.ResizeTo(5, 5);
+  
+  // convert diagonal term to original units
+  Cv(0, 0)=TMath::Power(ErrorD0*1.0E-3, 2.);
+  Cv(1, 1)=TMath::Power(ErrorPhi, 2.);
+  Cv(2, 2)=TMath::Power(ErrorC*1.0E-3, 2.);
+  Cv(3, 3)=TMath::Power(ErrorDZ*1.0E-3, 2.);
+  Cv(4, 4)=TMath::Power(ErrorCtgTheta, 2.);
+
+  // off diagonal terms
+  Cv(0, 1)=ErrorD0Phi;
+  Cv(0, 2)=ErrorD0C;
+  Cv(0, 3)=ErrorD0DZ;
+  Cv(0, 4)=ErrorD0CtgTheta;
+  Cv(1, 2)=ErrorPhiC;
+  Cv(1, 3)=ErrorPhiDZ;
+  Cv(1, 4)=ErrorPhiCtgTheta;
+  Cv(2, 3)=ErrorCDZ;
+  Cv(2, 4)=ErrorCCtgTheta;
+  Cv(3, 4)=ErrorDZCtgTheta;
+
+  Cv(1, 0)=Cv(0, 1);
+  Cv(2, 0)=Cv(0, 2);
+  Cv(3, 0)=Cv(0, 3);
+  Cv(4, 0)=Cv(0, 4);
+  Cv(2, 1)=Cv(1, 2);
+  Cv(3, 1)=Cv(1, 3);
+  Cv(4, 1)=Cv(1, 4);
+  Cv(3, 2)=Cv(2, 3);
+  Cv(4, 2)=Cv(2, 4);
+  Cv(4, 3)=Cv(3, 4);
+
+  return Cv;
+}
+
+
+//------------------------------------------------------------------------------
+
 TLorentzVector Tower::P4() const
 {
@@ -122,4 +163,44 @@
   vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
   return vec;
+}
+
+//------------------------------------------------------------------------------
+
+TMatrixDSym ParticleFlowCandidate::CovarianceMatrix() const
+{
+  TMatrixDSym Cv;
+  Cv.ResizeTo(5, 5);
+  
+  // convert diagonal term to original units
+  Cv(0, 0)=TMath::Power(ErrorD0*1.0E-3, 2.);
+  Cv(1, 1)=TMath::Power(ErrorPhi, 2.);
+  Cv(2, 2)=TMath::Power(ErrorC*1.0E-3, 2.);
+  Cv(3, 3)=TMath::Power(ErrorDZ*1.0E-3, 2.);
+  Cv(4, 4)=TMath::Power(ErrorCtgTheta, 2.);
+
+  // off diagonal terms
+  Cv(0, 1)=ErrorD0Phi;
+  Cv(0, 2)=ErrorD0C;
+  Cv(0, 3)=ErrorD0DZ;
+  Cv(0, 4)=ErrorD0CtgTheta;
+  Cv(1, 2)=ErrorPhiC;
+  Cv(1, 3)=ErrorPhiDZ;
+  Cv(1, 4)=ErrorPhiCtgTheta;
+  Cv(2, 3)=ErrorCDZ;
+  Cv(2, 4)=ErrorCCtgTheta;
+  Cv(3, 4)=ErrorDZCtgTheta;
+
+  Cv(1, 0)=Cv(0, 1);
+  Cv(2, 0)=Cv(0, 2);
+  Cv(3, 0)=Cv(0, 3);
+  Cv(4, 0)=Cv(0, 4);
+  Cv(2, 1)=Cv(1, 2);
+  Cv(3, 1)=Cv(1, 3);
+  Cv(4, 1)=Cv(1, 4);
+  Cv(3, 2)=Cv(2, 3);
+  Cv(4, 2)=Cv(2, 4);
+  Cv(4, 3)=Cv(3, 4);
+
+  return Cv;
 }
 
Index: classes/DelphesClasses.h
===================================================================
--- classes/DelphesClasses.h	(revision 3051ea17c5b30d4c3b7cd6fddba1f79c6c34a51b)
+++ classes/DelphesClasses.h	(revision 2671df61ab2e79d15b187bd70d47447e82611d4c)
@@ -473,4 +473,17 @@
   Float_t ErrorD0; // track transverse impact parameter error
   Float_t ErrorDZ; // track longitudinal impact parameter error
+  Float_t ErrorC; // track curvature error
+
+  // track covariance off-diagonal terms
+  Float_t ErrorD0Phi;	  
+  Float_t ErrorD0C;	  
+  Float_t ErrorD0DZ;	  
+  Float_t ErrorD0CtgTheta;   
+  Float_t ErrorPhiC;	  
+  Float_t ErrorPhiDZ;	  
+  Float_t ErrorPhiCtgTheta ; 
+  Float_t ErrorCDZ;	  
+  Float_t ErrorCCtgTheta;    
+  Float_t ErrorDZCtgTheta;   
 
   TRef Particle; // reference to generated particle
@@ -482,4 +495,5 @@
 
   TLorentzVector P4() const;
+  TMatrixDSym CovarianceMatrix() const;
 
   ClassDef(Track, 3)
@@ -561,4 +575,17 @@
   Float_t ErrorD0; // track transverse impact parameter error
   Float_t ErrorDZ; // track longitudinal impact parameter error
+  Float_t ErrorC; // track curvature error
+
+  // track covariance off-diagonal terms
+  Float_t ErrorD0Phi;	  
+  Float_t ErrorD0C;	  
+  Float_t ErrorD0DZ;	  
+  Float_t ErrorD0CtgTheta;   
+  Float_t ErrorPhiC;	  
+  Float_t ErrorPhiDZ;	  
+  Float_t ErrorPhiCtgTheta ; 
+  Float_t ErrorCDZ;	  
+  Float_t ErrorCCtgTheta;    
+  Float_t ErrorDZCtgTheta;   
 
   Int_t VertexIndex; // reference to vertex
@@ -568,4 +595,5 @@
 
   TLorentzVector P4() const;
+  TMatrixDSym CovarianceMatrix() const;
 
   Int_t NTimeHits; // number of hits contributing to time measurement
@@ -578,5 +606,5 @@
   TRefArray Particles; // references to generated particles
 
-  ClassDef(ParticleFlowCandidate, 1)
+  ClassDef(ParticleFlowCandidate, 2)
 
 };
