void DataInterface::getDataProfile(TH2F *hProfile, TH2F *hProjection, Int_t energy) { if (!existsEnergyFile(energy)) { cout << "There are no data files with energy " << energy << endl; return; } TString fn = Form("Data/ExperimentalData/DataFrame_%i_MeV.root", energy); TFile *f = new TFile(fn); TTree *tree = (TTree*) f->Get("tree"); Int_t nentries = tree->GetEntries(); printf("Found %d frames in the DataFrame.\n", nentries); TLeaf *lX = tree->GetLeaf("fDataFrame.fX"); TLeaf *lY = tree->GetLeaf("fDataFrame.fY"); TLeaf *lLayer = tree->GetLeaf("fDataFrame.fLayer"); Float_t x, y, layer; for (Int_t i=0; i<nentries; i++) { tree->GetEntry(i); for (Int_t j=0; j<lY->GetLen(); j++) { x = lX->GetValue(j) + nx/2; y = lY->GetValue(j) + ny/2; layer = lLayer->GetValue(j); hProfile->Fill(y, layer); hProjection->Fill(x, y); } } }
void getlist(ostream& out, TBranch* branch, int depth=0) { TObjArray* array = branch->GetListOfBranches(); if ( ! array ) return; if ( depth > 10 ) return; string name; int nitems = array->GetEntries(); for (int i = 0; i < nitems; i++) { TBranch* b = (TBranch*)((*array)[i]); if ( ! b ) continue; string branchname(b->GetName()); out << SPACE.substr(0,4*depth) << branchname << endl; TObjArray* a = b->GetListOfLeaves(); if ( a ) { int n = a->GetEntries(); { for (int j = 0; j < n; j++) { TLeaf* leaf = (TLeaf*)((*a)[j]); int count = 0; int ndata = 0; TLeaf* leafc = leaf->GetLeafCounter(count); if ( ! leafc) ndata = leaf->GetLen(); else ndata = leafc->GetMaximum(); string leafname(leaf->GetName()); out << SPACE.substr(0,4*(depth+1)) << ndata << " " << leafname << endl; } } // else if ( n == 1 ) // { // TBranch* bc = (TBranch*)((*a)[j]); // string leafname(bc->GetName()); // if ( leafname != branchname ) // out << SPACE.substr(0,4*(depth+1)) << leafname << endl; // } } getlist(out, b, depth+1); } }
void DataInterface::getDataFrame(Int_t runNo, CalorimeterFrame * cf, Int_t energy) { if (!existsEnergyFile(energy)) { cout << "There are no data files with energy " << energy << endl; return; } Int_t eventIdFrom = runNo * kEventsPerRun; Int_t eventIdTo = eventIdFrom + kEventsPerRun; TString fn = Form("Data/ExperimentalData/DataFrame_%i_MeV.root", energy); TFile *f = new TFile(fn); TTree *tree = (TTree*) f->Get("tree"); Int_t nentries = tree->GetEntries(); if (eventIdTo > nentries) { eventIdTo = nentries; } cout << "Found " << nentries << " frames in the DataFrame.\n"; TLeaf *lX = tree->GetLeaf("fDataFrame.fX"); TLeaf *lY = tree->GetLeaf("fDataFrame.fY"); TLeaf *lLayer = tree->GetLeaf("fDataFrame.fLayer"); Int_t counter = 0; for (Int_t i=eventIdFrom; i<eventIdTo; i++) { tree->GetEntry(i); for (Int_t j=0; j<lX->GetLen(); j++) { Int_t x = lX->GetValue(j) + nx/2; Int_t y = lY->GetValue(j) + ny/2; Int_t z = lLayer->GetValue(j); cf->fillAt(z, x, y); } counter++; } delete f; }