20 std::vector<std::vector<double > >
read_correlations(std::string filename,
int ncol,
bool DoCorrTest=
false) {
22 std::vector<std::vector<double > > ret(ncol);
23 std::ifstream istrm(filename.c_str(), std::ios::binary);
24 if (!istrm.is_open()) {
25 std::cout <<
"failed to open " << filename << std::endl;
28 for (
int icol=0 ; icol<ncol ; icol++ ) {
30 for (
int i=0 ; i<ncol ; i++ ) {
32 ret[icol].push_back(value);
33 if ( DoCorrTest && icol==i && value!= 1 ) {
34 std::cout<<
"ERROR! diagonal element must be 1, but is: "<<value<<endl;
52 std::vector<std::vector<double > >
corr_to_cov(
const std::vector<std::vector<double > >& corr,
const std::vector<double >& percenterr,
const std::vector<double >& data) {
53 std::vector<double > err(data.size());
54 for (
int i = 0 ; i<err.size() ; i++ )
55 err[i] = percenterr[i]/100.*data[i];
57 std::vector<std::vector<double > > cov(err.size());
58 for (
int i = 0 ; i<err.size() ; i++ ) {
59 cov[i].resize(err.size());
60 for (
int j = 0 ; j<err.size() ; j++ ) {
61 cov[i][j] = corr[i][j]*err[i]*err[j];
66 for (
int i = 0 ; i<err.size() ; i++ ) {
67 for (
int j = 0 ; j<i ; j++ ) {
68 if ( fabs((cov[i][j] / cov[j][i]-1.) > 1e-3) )
69 cout<<i<<
", "<<j<<
"\t"<<corr[i][j]<<
"\t"<<percenterr[i]<<
"\t"<<data[i]<<
"\te: "<<err[i]<<
"\tcov: "<<cov[i][j]<<
"\t ratio ij/ji: "<<(cov[i][j] / cov[j][i]-1.)<<endl;
84 std::map < std::string, std::vector<double> >
read_input_table(std::string filename,
int ncol ) {
85 std::map < std::string, std::vector<double> > ret;
86 std::vector<std::string> cols;
88 std::ifstream istrm(filename.c_str(), std::ios::binary);
89 if (!istrm.is_open()) {
90 std::cout <<
"failed to open " << filename << std::endl;
93 for (
int c=0 ; c<ncol ; c++ ) {
97 ret[colname] = vector<double>();
98 cols.push_back(colname);
100 while ( istrm.good()) {
102 for (
int c=0 ; c<ncol ; c++ ) {
104 if ( !istrm.good() )
break;
106 std::string colname = cols[c];
107 ret[colname].push_back(value);
111 cout<<
"Info. [read_input_table] Read "<<ret.size()<<
" rows."<<endl;