Skip to content
Snippets Groups Projects
ascii2root.cc 2.05 KiB
Newer Older
/*
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;
}