void dirs() { // .........................macro dirs.C............................ // This macro illustrates how to create a hierarchy of directories // in a Root file. // 10 directories called plane0, plane1, plane9 are created. // Each plane directory contains 200 histograms. // // Run this macro (Note that the macro delete the TFile object at the end!) // Connect the file again in read mode: // Root > TFile *top = new TFile("top.root"); // The hierarchy can be browsed by the Root browser as shown below // Root > TBrowser b; // click on the left pane on one of the plane directories. // this shows the list of all histograms in this directory. // Double click on one histogram to draw it (left mouse button). // Select different options with the right mouse button. // // You can see the begin_html picture of the browser end_html // // Instead of using the browser, you can also do: // Root > tof->cd(); // Root > plane3->cd(); // Root > h3_90N->Draw(); //Author: Rene Brun // create a new Root file TFile *top = new TFile("top.root","recreate"); // create a subdirectory "tof" in this file TDirectory *cdtof = top->mkdir("tof"); cdtof->cd(); // make the "tof" directory the current directory // create a new subdirectory for each plane const Int_t nplanes = 10; const Int_t ncounters = 100; char dirname[50]; char hname[20]; char htitle[80]; Int_t i,j,k; TDirectory *cdplane[nplanes]; TH1F *hn[nplanes][ncounters]; TH1F *hs[nplanes][ncounters]; for (i=0;imkdir(dirname); cdplane[i]->cd(); // create counter histograms for (j=0;jcd(); // change current directory to top } // .. fill histograms TRandom r; for (i=0;icd(); for (j=0;jFill(100*r.Rndm(),i+j); hs[i][j]->Fill(100*r.Rndm(),i+j+k); } } } // save histogram hierarchy in the file top->Write(); delete top; }