#include #include #include #include #include #include "TFile.h" #include "TTree.h" int rct2_mas12_to_str(std::vector< std::vector >& ele_str_org) { std::ifstream ifs("./rct2.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; rct2_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_rct2_mas12.root","recreate"); TTree *t = new TTree("rct2_mas12","rct2.mas12 tree"); Int_t A; std::string elt; Int_t Z; Double_t Sn, Sp, Q4B, Qda, Qpa, Qna; Double_t Sn_err, Sp_err, Q4B_err, Qda_err, Qpa_err, Qna_err; Int_t Sn_flag, Sp_flag, Q4B_flag, Qda_flag, Qpa_flag, Qna_flag; t->Branch("A", &A, "A/I"); t->Branch("elt", &elt); t->Branch("Z", &Z, "Z/I"); t->Branch("Sn", &Sn, "Sn/D"); t->Branch("Sn_err", &Sn_err, "Sn_err/D"); t->Branch("Sn_flag", &Sn_flag, "Sn_flag/I"); t->Branch("Sp", &Sp, "Sp/D"); t->Branch("Sp_err", &Sp_err, "Sp_err/D"); t->Branch("Sp_flag", &Sp_flag, "Sp_flag/I"); t->Branch("Q4B", &Q4B, "Q4B/D"); t->Branch("Q4B_err", &Q4B_err, "Q4B_err/D"); t->Branch("Q4B_flag", &Q4B_flag, "Q4B_flag/I"); t->Branch("Qda", &Qda, "Qda/D"); t->Branch("Qda_err", &Qda_err, "Qda_err/D"); t->Branch("Qda_flag", &Qda_flag, "Qda_flag/I"); t->Branch("Qpa", &Qpa, "Qpa/D"); t->Branch("Qpa_err", &Qpa_err, "Qpa_err/D"); t->Branch("Qpa_flag", &Qpa_flag, "Qpa_flag/I"); t->Branch("Qna", &Qna, "Qna/D"); t->Branch("Qna_err", &Qna_err, "Qna_err/D"); t->Branch("Qna_flag", &Qna_flag, "Qna_flag/I"); for (unsigned int i=0; iFill(); } f->Write(); return 0; }