I have a multiple histograms spread over three subdirectories
in the root file. I have a following test program to read
each histogram from one subdirectory inside the loops but with
no luck except at the beginning when I read a single histogram.
I appreciate any help.
Michal Lijowski
// Tests reading array of histograms from the *.root file
{
gROOT -> Reset();
TFile *cfile =
(TFile*)gROOT->GetListOfFiles()->FindObject("charge_hists.root.6");
if (!cfile) {
cfile = new TFile("charge_hists.root.6", "READ");
}
// cfile -> ls();
cfile -> cd("charge_hists.root.6:/TOP/ZEST_LAST_HISTS");
cfile -> pwd();
TH1F *h1 = (TH1F *) gROOT -> FindObject("ZEST_LAST");
h1 -> Draw();
Int_t N_TEL = 4;
char ctel[2], hname[30];
Int_t N_STACK_DET = 9;
Int_t Range_min = 2;
Int_t nhists = (N_STACK_DET - Range_min + 1) * N_TEL + 1;
printf(" nhists = %d\n", nhists);
TH1F *ZEST_LAST_hists[nhists];
Int_t hidx = 0;
for (Int_t itel = 0; itel < N_TEL; itel++) {
ctel[0] = '\0';
if (itel == 0) strcat(ctel, "A");
if (itel == 1) strcat(ctel, "B");
if (itel == 2) strcat(ctel, "C");
if (itel == 3) strcat(ctel, "D");
for (Int_t rr = Range_min; rr < N_STACK_DET; rr++) {
hname[0] = '\0';
sprintf(hname, "ZEST_LAST_%s_Range_%1d", ctel, rr);
TH1F *ZEST_LAST_HISTS[hidx] = (TH1F *) gROOT -> FindOBject(hname);
// ZEST_LAST_HISTS[hidx] -> (TH1F *) cfile -> Get(hname);
ZEST_LAST_HISTS[hidx] -> Draw();
hidx++;
}
}
}
This is a log file.
*******************************************
* *
* W E L C O M E to R O O T *
* *
* Version 2.00/11 28 August 1998 *
* *
* You are welcome to visit our Web site *
* http://root.cern.ch *
* *
*******************************************
CINT/ROOT C/C++ Interpreter version 5.13.69, Aug 22 1998
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
charge_hists.root.6:/
Warning in <MakeDefCanvas>: creating a default canvas with name c1
Error: Can't call TROOT::FindOBject() in current scope FILE:/export/home/lijowski/ace/cris/flight/root/./test_TDirectory.C LINE:42
nhists = 33
ZEST_LAST_A_Range_2
*** Interpreter error recovered ***