#include #include #include #include #include #include "TFile.h" #include "TTree.h" int rct1_mas12_to_str(std::vector< std::vector >& ele_str_org) { std::ifstream ifs("./rct1.mas12"); const unsigned int number_of_columns = 16; unsigned int column_end_points[number_of_columns] = {0,3,6,10,21,29,39,47,57,65,75,83,93,101,111,119}; // 0 origin if (ifs.fail()) { std::cerr << "Fail to read the file" << std::endl; return -1; } std::string buf; for (unsigned int i=1; i <=39; i++) { getline(ifs, buf); std::cout << "Skipped: " << buf << std::endl; } while (getline(ifs, buf)) { std::vector str_tmp; unsigned int column_start_point = 0; //std::cout << "buf.length()" << buf.length() < >& ele_str_org, std::vector< std::vector >& ele_str, std::vector< std::vector >& ele_int, std::vector< std::vector >& ele_double, std::vector< std::vector >& ele_flag) { ele_str = ele_str_org; // resize of 2-dimensional vector ele_int.resize(ele_str_org.size(), std::vector(ele_str_org.front().size(), 0)); ele_double.resize(ele_str_org.size(), std::vector(ele_str_org.front().size(), 0.0)); ele_flag.resize(ele_str_org.size(), std::vector(ele_str_org.front().size(), 0)); for (unsigned int i=0; i> ele_int[i][j]; // convert string to double stringstream ss2; ss2 << ele_str[i][j]; ss2 >> ele_double[i][j]; // if there is a value, ele_flag = 1 if (ele_flag[i][j] == 0) { ele_flag[i][j] = 1; } } } } //for (unsigned int i=0; i > ele_str_org; std::vector< std::vector > ele_str; std::vector< std::vector > ele_int; std::vector< std::vector > ele_double; std::vector< std::vector > ele_flag; rct1_mas12_to_str(ele_str_org); str_to_val(ele_str_org, ele_str, ele_int, ele_double, ele_flag); TFile *f = new TFile("tree_rct1_mas12.root","recreate"); TTree *t = new TTree("rct1_mas12","rct1.mas12 tree"); Int_t A; std::string elt; Int_t Z; Double_t S2n, S2p, Qa, Q2B, Qep, QBn; Double_t S2n_err, S2p_err, Qa_err, Q2B_err, Qep_err, QBn_err; Int_t S2n_flag, S2p_flag, Qa_flag, Q2B_flag, Qep_flag, QBn_flag; t->Branch("A", &A, "A/I"); t->Branch("elt", &elt); t->Branch("Z", &Z, "Z/I"); t->Branch("S2n", &S2n, "S2n/D"); t->Branch("S2n_err", &S2n_err, "S2n_err/D"); t->Branch("S2n_flag", &S2n_flag, "S2n_flag/I"); t->Branch("S2p", &S2p, "S2p/D"); t->Branch("S2p_err", &S2p_err, "S2p_err/D"); t->Branch("S2p_flag", &S2p_flag, "S2p_flag/I"); t->Branch("Qa", &Qa, "Qa/D"); t->Branch("Qa_err", &Qa_err, "Qa_err/D"); t->Branch("Qa_flag", &Qa_flag, "Qa_flag/I"); t->Branch("Q2B", &Q2B, "Q2B/D"); t->Branch("Q2B_err", &Q2B_err, "Q2B_err/D"); t->Branch("Q2B_flag", &Q2B_flag, "Q2B_flag/I"); t->Branch("Qep", &Qep, "Qep/D"); t->Branch("Qep_err", &Qep_err, "Qep_err/D"); t->Branch("Qep_flag", &Qep_flag, "Qep_flag/I"); t->Branch("QBn", &QBn, "QBn/D"); t->Branch("QBn_err", &QBn_err, "QBn_err/D"); t->Branch("QBn_flag", &QBn_flag, "QBn_flag/I"); for (unsigned int i=0; iFill(); } f->Write(); return 0; }