Index: classes/DelphesClasses.cc
===================================================================
--- classes/DelphesClasses.cc	(revision f9aeea610d46ad5e5a508a3152713c4d53df921d)
+++ classes/DelphesClasses.cc	(revision 97ef971d2b78fc18037ab1de99248b005a4e75d1)
@@ -139,9 +139,10 @@
   PositionError(0.0, 0.0, 0.0, 0.0),
   Area(0.0, 0.0, 0.0, 0.0),
-  TrackCovarianceACTS(6),
+  TrackCovariance(5),
   L(0),
   D0(0), ErrorD0(0),
   DZ(0), ErrorDZ(0),
   P(0), ErrorP(0),
+  C(0), ErrorC(0),
   PT(0), ErrorPT(0),
   CtgTheta(0), ErrorCtgTheta(0),
@@ -313,4 +314,6 @@
   object.P = P;
   object.ErrorP = ErrorP;
+  object.C = C;
+  object.ErrorC = ErrorC;
   object.PT = PT;
   object.ErrorPT = ErrorPT;
@@ -377,5 +380,5 @@
   object.SoftDroppedSubJet1 = SoftDroppedSubJet1;
   object.SoftDroppedSubJet2 = SoftDroppedSubJet2;
-  object.TrackCovarianceACTS = TrackCovarianceACTS;
+  object.TrackCovariance = TrackCovariance;
   object.fFactory = fFactory;
   object.fArray = 0;
@@ -434,5 +437,5 @@
   InitialPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);
   Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
-  TrackCovarianceACTS.Zero();
+  TrackCovariance.Zero();
   L = 0.0;
   ErrorT = 0.0;
@@ -443,4 +446,6 @@
   P = 0.0;
   ErrorP = 0.0;
+  C = 0.0;
+  ErrorC = 0.0;
   PT = 0.0;
   ErrorPT = 0.0;
Index: classes/DelphesClasses.h
===================================================================
--- classes/DelphesClasses.h	(revision f9aeea610d46ad5e5a508a3152713c4d53df921d)
+++ classes/DelphesClasses.h	(revision 97ef971d2b78fc18037ab1de99248b005a4e75d1)
@@ -651,9 +651,11 @@
 
   Float_t L; // path length
+  Float_t DZ;
+  Float_t ErrorDZ;
   Float_t ErrorT; // path length
   Float_t D0;
   Float_t ErrorD0;
-  Float_t DZ;
-  Float_t ErrorDZ;
+  Float_t C;
+  Float_t ErrorC;
   Float_t P;
   Float_t ErrorP;
@@ -700,7 +702,7 @@
   Float_t SumPt;
 
-  // ACTS compliant 6x6 track covariance (D, z0, phi0, theta, q/p, time)
-
-  TMatrixDSym TrackCovarianceACTS;
+  // ACTS compliant 6x6 track covariance (D0, phi, Curvature, dz, ctg(theta))
+
+  TMatrixDSym TrackCovariance;
 
   // vertex variables
Index: external/TrackCovariance/ObsTrk.cc
===================================================================
--- external/TrackCovariance/ObsTrk.cc	(revision f9aeea610d46ad5e5a508a3152713c4d53df921d)
+++ external/TrackCovariance/ObsTrk.cc	(revision 97ef971d2b78fc18037ab1de99248b005a4e75d1)
@@ -20,10 +20,14 @@
 	fGenPar.ResizeTo(5);
 	fGenParACTS.ResizeTo(6);
+	fGenParILC.ResizeTo(5);
 	fObsPar.ResizeTo(5);
 	fObsParACTS.ResizeTo(6);
+	fObsParILC.ResizeTo(5);
 	fCov.ResizeTo(5, 5);
 	fCovACTS.ResizeTo(6, 6);
+	fCovILC.ResizeTo(5, 5);
 	fGenPar = XPtoPar(x,p,Q);
 	fGenParACTS = ParToACTS(fGenPar);
+	fGenParILC = ParToILC(fGenPar);
 	/*
 	std::cout << "ObsTrk::ObsTrk: fGenPar";
@@ -33,8 +37,10 @@
 	fObsPar = GenToObsPar(fGenPar, fGC);
 	fObsParACTS = ParToACTS(fObsPar);
+	fObsParILC = ParToILC(fObsPar);
 	fObsX = ParToX(fObsPar);
 	fObsP = ParToP(fObsPar);
 	fObsQ = ParToQ(fObsPar);
 	fCovACTS = CovToACTS(fCov);
+	fCovILC = CovToILC(fCov);
 }
 //
@@ -206,4 +212,40 @@
 }
 
+// Parameter conversion to ILC format
+TVectorD ObsTrk::ParToILC(TVectorD Par)
+{
+	TVectorD pILC(5);	// Return vector
+	//
+	pILC(0) = Par(0)*1.0e3;			// d0 in mm
+	pILC(1) = Par(1);				// phi0 is unchanged
+	pILC(2) = -2 * Par(2)*1.0e-3;	// w in mm^-1
+	pILC(3) = Par(3)*1.0e3;			// z0 in mm
+	pILC(4) = Par(4);				// tan(lambda) = cot(theta)
+	//
+	return pILC;
+}
+// Covariance conversion to ILC format
+TMatrixDSym ObsTrk::CovToILC(TMatrixDSym Cov)
+{
+	TMatrixDSym cILC(5); cILC.Zero();
+	//
+	// Fill derivative matrix
+	TMatrixD A(5, 5);	A.Zero();
+	//
+	A(0, 0) = 1.0e3;		// D-d0 in mm
+	A(1, 1) = 1.0;		// phi0-phi0
+	A(2, 2) = -2.0e-3;	// w-C
+	A(3, 3) = 1.0e3;		// z0-z0 conversion to mm
+	A(4, 4) = 1.0;		// tan(lambda) - cot(theta)
+	//
+	TMatrixDSym Cv = Cov;
+	TMatrixD At(5, 5);
+	At.Transpose(A);
+	Cv.Similarity(At);
+	cILC = Cv;
+	//
+	return cILC;
+}
+
 
 
Index: external/TrackCovariance/ObsTrk.h
===================================================================
--- external/TrackCovariance/ObsTrk.h	(revision f9aeea610d46ad5e5a508a3152713c4d53df921d)
+++ external/TrackCovariance/ObsTrk.h	(revision 97ef971d2b78fc18037ab1de99248b005a4e75d1)
@@ -29,15 +29,24 @@
 	TVector3 fObsP;					// Observed  track momentum @ track minimum approach
 	TVectorD fGenPar;				// Generated helix track parameters (D, phi0, C, z0, cot(th))
-	TVectorD fGenParACTS;			// Generated helix track parameters (D, z0, phi0, th, q/p, time)
+	TVectorD fGenParACTS;			// Generated helix track parameters (D, z0, phi0, th, q/p, time
+	TVectorD fGenParILC;				// Generated helix track parameters (w, phi0, d0, z0, tan(lambda))
 	TVectorD fObsPar;				// Observed  helix track parameters (D, phi0, C, z0, cot(th))
-	TVectorD fObsParACTS;			// Observed  helix track parameters (D, z0, phi0, th, q/p, time)
+	TVectorD fObsParACTS;			// Observed  helix track parameters (D, z0, phi0, th, q/p, time
+	TVectorD fObsParILC;				// Observed  helix track parameters (d0, phi0, w, z0, tan(lambda))
 	TMatrixDSym fCov;				// INterpolated covariance of track parameters
 	TMatrixDSym fCovACTS;			// Covariance of track parameters in ACTS format
 									// (D, z0, phi0, theta, q/p, time)
+	TMatrixDSym fCovILC;				// Covariance of track parameters in ILC format
+									// (d0, phi0, w, z0, tan(lambda))
 	//
 	// Conversion to ACTS parametrization
 	//
 	TVectorD ParToACTS(TVectorD Par);		// Parameter conversion
-	TMatrixDSym CovToACTS(TMatrixDSym Cov);	// Covariance conversion
+	TMatrixDSym CovToACTS(TMatrixDSym Cov);	// Covariance 
+	//
+	// Conversion to ILC parametrization
+	//
+	TVectorD ParToILC(TVectorD Par);		// Parameter conversion
+	TMatrixDSym CovToILC(TMatrixDSym Cov);	// Covariance conversion
 	//
 public:
@@ -68,4 +77,6 @@
 	// D, z0, phi0, theta, q/p, time
 	TVectorD GetGenParACTS()	{ return fGenParACTS; }
+	// d0, phi0, w, z0, tan(lambda)
+	TVectorD GetGenParILC()	{ return fGenParILC; }
 	// Observed level X, P, Q
 	Double_t GetObsQ()	{ return fObsQ; }
@@ -76,7 +87,10 @@
 	// D, z0, phi0, theta, q/p, time
 	TVectorD GetObsParACTS()	{ return fObsParACTS; }
+	// d0, phi0, w, z0, tan(lambda)
+	TVectorD GetObsParILC()	{ return fObsParILC; }
 	// Covariances
 	TMatrixDSym GetCov(){ return fCov; }
-	TMatrixDSym GetCovACTS(){ return fCovACTS; };
+	TMatrixDSym GetCovACTS(){ return fCovACTS; }
+	TMatrixDSym GetCovILC(){ return fCovILC; }
 };
 
Index: modules/TrackCovariance.cc
===================================================================
--- modules/TrackCovariance.cc	(revision f9aeea610d46ad5e5a508a3152713c4d53df921d)
+++ modules/TrackCovariance.cc	(revision 97ef971d2b78fc18037ab1de99248b005a4e75d1)
@@ -96,5 +96,5 @@
   Candidate *candidate, *mother;
   Double_t mass, p, pt, q, ct;
-  Double_t dd0, ddz, dphi, dct, dp, dpt;
+  Double_t dd0, ddz, dphi, dct, dp, dpt, dC;
   
 
@@ -115,6 +115,6 @@
     candidate->InitialPosition.SetXYZT(track.GetObsX().X(),track.GetObsX().Y(),track.GetObsX().Z(),candidatePosition.T());
     
-    // save full ACTS friendly covariance matrix internally (6x6: D, z0, phi0, theta, q/p, time)
-    candidate->TrackCovarianceACTS = track.GetCovACTS();
+    // save full covariance 5x5 matrix internally (D0, phi, Curvature, dz, ctg(theta))
+    candidate->TrackCovariance = track.GetCov();
 
     pt = candidate->Momentum.Pt();
@@ -128,9 +128,9 @@
     
     candidate->D0 = track.GetObsPar()[0];
+    candidate->Phi = track.GetObsPar()[1];
+    candidate->C = track.GetObsPar()[2];
     candidate->DZ = track.GetObsPar()[3];
+    candidate->CtgTheta = track.GetObsPar()[4];
     candidate->P  = track.GetObsP().Mag();
-    candidate->CtgTheta = track.GetObsPar()[4];
-    candidate->Phi = track.GetObsPar()[1];
-
     candidate->PT = pt;
     candidate->Charge = q;
@@ -142,8 +142,10 @@
     dpt       = 2 * TMath::Sqrt( track.GetCov()(2, 2))*pt*pt / (0.2998*fBz);
     dp        = TMath::Sqrt((1.+ct*ct)*dpt*dpt + 4*pt*pt*ct*ct*dct*dct/(1.+ct*ct)/(1.+ct*ct));
+    dC        = TMath::Sqrt(track.GetCov()(2, 2));
 
     candidate->ErrorD0 = dd0;
     candidate->ErrorDZ = ddz;
     candidate->ErrorP = dp;
+    candidate->ErrorC = dC;
     candidate->ErrorCtgTheta = dct;
     candidate->ErrorPhi = dphi;
