void analyse() { gSystem->Load("../libData.so"); TFile *f = new TFile("../data/rawDataDSR4/NeuRad_test_08_2.root"); TTree *tr = (TTree*)f->Get("rtree"); const Int_t noBranches = 4; const Double_t cfRatio = 0.5; const Int_t cfTD = 5; TString bName; RawEvent *revent[noBranches]; // pointer to the array (of RawEvent class) in which raw data for each channel will be put for (Int_t j = 0; jSetBranchAddress(bName.Data(), &revent[j]); //read the tree tr with raw data and fill array revent with raw data } // tr->SetMakeClass(1); TFile *fw = new TFile("../data/dataDSR4/analysis_08_2.root", "RECREATE"); //create .root file with somehow analyzed data TTree *tw = new TTree("atree", "title of drs4 analysis tree"); //create analysis tree atree in it AEvent *wevent[noBranches]; // pointer to the array (of AEvent class) in which analyzed data for each channel will be put for (Int_t j = 0; jSetInputEvent(&revent[j]); //takes raw event from RawEvent wevent[j]->SetCFratio(cfRatio); wevent[j]->SetCFtimeDelay(cfTD); tw->Bronch(bName.Data(), "AEvent", &wevent[j]); // create branches in atree to hold analyzed data } //----event loop in tr input tree Long64_t nentries = tr->GetEntries(); for(Long64_t i = 0; i < nentries; i++) { tr->GetEntry(i); for (Int_t j = 0; jReset(); wevent[j]->ProcessEvent(); //here all the analysis is going on so far } if ( !(i%100) ) { printf("Found event #%d\n", i); } tw->Fill(); } //----end of event loop printf("%d events are processed\n", nentries); tw->Write(); fw->Close(); return; }