/* Valerio, Insulab cosmic, ASACUSA bars ------------------- 4 floating (XY * (2 beam chambers)) 16 integers (CAEN V1730 digitizer: 8 wavef max + 8 max times) 3 integers (iev1 + unix time + iev2) ------------------- TOT 23 columns */ #include <string> #include <sstream> #include "Riostream.h" #include "TClassTable.h" #include "TFile.h" #include "TTree.h" void ascii2root(const int ndigi=1, const int nsili=4, string inFileName="dummy", string outFileName="out") { // string outFileName = "root_"+removeExtension(inFileName)+".root"; std::cout<<"---> Converting file "<<inFileName<<std::endl; std::cout<<"---> into file "<<outFileName<<std::endl; ifstream myfile; string line; Int_t lineNumber=0; myfile.open(inFileName.c_str()); // OUTPUT TREE DEFINITION TFile* outFile = new TFile(outFileName.c_str(),"RECREATE"); TTree* t = new TTree("t","Insulab tree from ascii file 2019"); //gROOT->cd(); // silicon trackers Float_t hitPos[nsili]; t->Branch("hitPos",hitPos,Form("hitPos[%d]/F",nsili)); // digitizer Float_t digiPh[8*ndigi]; Float_t digiTime[8*ndigi]; t->Branch("digiPh",digiPh,Form("digiPh[%d]/F",8*ndigi)); t->Branch("digiTime",digiTime,Form("digiTime[%d]/F",8*ndigi)); Int_t iev1, unixTime, iev2; t->Branch("iev1",&iev1,"iev1/I"); t->Branch("unixTime",&unixTime,"unixTime/I"); t->Branch("iev2",&iev2,"iev2/I"); // end of OUTPUT TREE DEF if (myfile.is_open()) { // while (!myfile.eof()) { while(getline(myfile,line)){ std::stringstream ss(line); for (Int_t i=0;i<nsili;i++) ss >> hitPos[i]; for (Int_t idigi=0;idigi<8*ndigi;idigi++) ss >> digiPh[idigi] ; for (Int_t idigi=0;idigi<8*ndigi;idigi++) ss >> digiTime[idigi] ; ss >> iev1 >> unixTime >> iev2; if (abs(hitPos[0]+hitPos[1]+hitPos[2]+hitPos[3])<100) { t->Fill(); } //std::cout << lineNumber<< std::endl; lineNumber++; } myfile.close(); } else { std::cout<<"Can't open file!!"<<std::endl; } outFile->cd(); t->Write(); outFile->Close(); return; }