#include #include "TString.h" #include "TFile.h" #include "TError.h" #include "TTree.h" #include #include #include "../dataClasses/RawEvent.h" #include "../dataClasses/AEvent.h" int main(int argc, char* argv[]) { if ( (argc < 3) || (argc > 4) ) { // Tell the user how to run the program std::cerr << "Usage: " << argv[0] << " [list with input files] [outputfile] [number of points in one event (1000)]" << std::endl; /* "Usage messages" are a conventional way of telling the user * how to run a program if they enter the command incorrectly. */ return 1; } TString infiles = argv[1]; TString ofile = argv[2]; TString Asize = argv[3]; Int_t kEventSize; if(argc==3) { kEventSize = 1024; Info("convertRawToAnalyzed", "Event size was set to %d", kEventSize); } if(argc==4) { kEventSize = Asize.Atoi(); if(kEventSize!=1000) { std::cerr<< argv[0] << " the size of Events should be 1000 in this case " << std::endl; return 1; } } TFile *f = new TFile(infiles.Data()); 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]; for (Int_t j = 0; jSetBranchAddress(bName.Data(), &revent[j]); } TFile *fw = new TFile(ofile.Data(), "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); if ( !(tr->GetEntry(i)%100) ) { printf("Found event #%d\n", tr->GetEntry(i)); } for (Int_t j = 0; jReset(); wevent[j]->ProcessEvent(); //here all the analysis is going on so far } tw->Fill(); } //----end of event loop printf("%d events are processed\n", nentries); tw->Write(); fw->Close(); return 1; }