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 +