Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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;
}
}