diff --git a/Examples/JpsiGamKsKlKK/FitParamErrorMatrix.cc b/Examples/JpsiGamKsKlKK/FitParamErrorMatrix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b7f19c9129aa9dd0a04e9b5e0b987f33d20d7ccd
--- /dev/null
+++ b/Examples/JpsiGamKsKlKK/FitParamErrorMatrix.cc
@@ -0,0 +1,91 @@
+#include "Examples/JpsiGamKsKlKK/FitParamErrorMatrix.hh"
+
+using namespace ROOT::Minuit2;
+
+FitParamErrorMatrix::FitParamErrorMatrix( ROOT::Minuit2::MnUserCovariance covMatrix,  ROOT::Minuit2::MnUserParameters usrParams){
+  
+  MnUserTransformation trafo = usrParams.Trafo(); 
+  _size = usrParams.Parameters().size();
+  
+  _errMatrix = boost_matrix(_size,_size);
+  
+  for(unsigned int irow=0; irow<_size; irow++){
+    for(unsigned int icol=0; icol<_size; icol++){
+      _errMatrix(irow,icol)=0.0;
+    }
+  }
+  
+  for(unsigned int row=0;row<covMatrix.Nrow(); row++){
+    for(unsigned int col=0;col<covMatrix.Nrow(); col++){
+      double element = covMatrix(row,col);
+      int trow = trafo.ExtOfInt(row);
+      int tcol = trafo.ExtOfInt(col);
+      _errMatrix(trow,tcol)=element;
+    }
+  }
+}
+
+
+
+
+
+
+FitParamErrorMatrix::~FitParamErrorMatrix(  ){
+}
+
+
+FitParamErrorMatrix::FitParamErrorMatrix(std::vector<double> &theData, int size){
+  _size=size;
+  _errMatrix = boost_matrix(_size,_size);
+  
+  unsigned int irow(0), icol(0);
+  std::vector<double>::iterator dataIter;
+  for(dataIter=theData.begin(); dataIter!=theData.end(); dataIter++){
+    double val = *dataIter;
+    _errMatrix(irow,icol) = val;
+    
+    if(icol==_size-1){
+      icol=0;
+      irow++;
+    }else{
+      icol++;
+    }
+  }
+}
+
+
+
+
+void FitParamErrorMatrix::Print(std::ostream &os){
+  for(unsigned int irow=0;irow<_size;irow++){
+    for(unsigned int icol=0;icol<_size;icol++){
+      os << _errMatrix(irow,icol) << " ";
+    }
+    os << std::endl;
+  }
+}
+
+
+
+std::vector<double> FitParamErrorMatrix::Data(){
+  std::vector<double> theData;
+  for(unsigned int irow=0;irow<_size;irow++){
+      for(unsigned int icol=0;icol<_size;icol++){
+	theData.push_back(_errMatrix(irow,icol) );
+      }
+  }
+  return theData;
+
+
+  
+
+}
+
+void FitParamErrorMatrix::Write(std::ostream& os){
+  std::vector<double> data = Data();
+  std::vector<double>::iterator dataIter = data.begin();
+  for(; dataIter!=data.end();dataIter++){
+    os << *dataIter << std::endl;
+  }
+}
+
diff --git a/Examples/JpsiGamKsKlKK/FitParamErrorMatrix.hh b/Examples/JpsiGamKsKlKK/FitParamErrorMatrix.hh
new file mode 100644
index 0000000000000000000000000000000000000000..91b0b4fe6edc80db2324470ff58b3bfcfdf3f3e3
--- /dev/null
+++ b/Examples/JpsiGamKsKlKK/FitParamErrorMatrix.hh
@@ -0,0 +1,41 @@
+#ifndef  _FitParamErrorMatrix_H
+#define  _FitParamErrorMatrix_H
+
+
+#include <iostream>
+#include <fstream>
+
+#include "Minuit2/MnUserCovariance.h"
+#include "Minuit2/MnUserParameters.h"
+
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+
+typedef boost::numeric::ublas::matrix<double> boost_matrix;
+
+
+class FitParamErrorMatrix {
+  
+public:
+  
+  FitParamErrorMatrix( ROOT::Minuit2::MnUserCovariance covMatrix, ROOT::Minuit2::MnUserParameters usrParams  );
+  FitParamErrorMatrix( int size){_errMatrix = boost_matrix(size,size);}
+  FitParamErrorMatrix(std::vector<double> &theData, int size);
+  virtual ~FitParamErrorMatrix();
+  void Print(std::ostream& os);
+  void Write(std::ostream& os);
+  std::vector<double> Data();
+  double operator() (int row, int col) {return _errMatrix(row,col);}
+  
+
+  
+private:
+  boost_matrix _errMatrix;
+  unsigned int _size;
+
+};
+
+
+
+#endif
diff --git a/Examples/JpsiGamKsKlKK/FitParamErrorMatrixStreamer.cc b/Examples/JpsiGamKsKlKK/FitParamErrorMatrixStreamer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6cba898ae40bd99d506f93030c489b94eef81839
--- /dev/null
+++ b/Examples/JpsiGamKsKlKK/FitParamErrorMatrixStreamer.cc
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <fstream>
+
+
+#include "FitParamErrorMatrixStreamer.hh"
+#include "ErrLogger/ErrLogger.hh"
+
+
+FitParamErrorMatrixStreamer::FitParamErrorMatrixStreamer(  std::string errFile  ){
+  std::ifstream inputStream;
+  inputStream.open(errFile.c_str());
+  if (!inputStream) {
+   Alert << "can not open " << errFile ;
+    exit(1);
+  }
+  while (!inputStream.eof()) {
+    double err;
+    inputStream >> err;
+    if (!inputStream.fail()) {
+      _matrixData.push_back(err);
+     
+    }
+  }
+  
+}
+
diff --git a/Examples/JpsiGamKsKlKK/FitParamErrorMatrixStreamer.hh b/Examples/JpsiGamKsKlKK/FitParamErrorMatrixStreamer.hh
new file mode 100644
index 0000000000000000000000000000000000000000..9129da43f20fc25036ecc792e391eddb85e8edf1
--- /dev/null
+++ b/Examples/JpsiGamKsKlKK/FitParamErrorMatrixStreamer.hh
@@ -0,0 +1,29 @@
+#ifndef _FitParamErrorMatrixStreamer_H
+#define _FitParamErrorMatrixStreamer_H
+
+#include <string>
+#include <vector>
+
+
+class FitParamErrorMatrixStreamer {
+  
+public :
+  FitParamErrorMatrixStreamer(  std::string errFile  );
+  virtual ~FitParamErrorMatrixStreamer(){};
+  
+  void matrixData( std::vector<double>& theData, int& nrows  ){ 
+    theData=_matrixData;  
+    int sizeOfData=(int) theData.size();
+    nrows=1;
+    while(nrows*nrows!=sizeOfData){
+      nrows++;
+    
+    }
+  }
+  
+private :
+  std::vector<double> _matrixData;
+};
+
+#endif
+