[ROOT] Bug in THbook* interface classes

From: Stanislav NESTEROV (Stanislav.Nesterov@cern.ch)
Date: Fri Jul 26 2002 - 13:45:54 MEST


    Hello Fons,

   Recently I've tried to read some N-tuples via 
THbookFile+THbookTree+THbookBranch classes but it was not so easy.

   While I was using only "Draw" functionality all seem to be OK, but when 
I've tried to do some readings of certain branches of N-tuple I've 
got into a big trouble: I can not do this at ALL:

   So from the beginning:


__________________________________________________________________
Content of my N-tuple:

 ===> Directory : //lun10
         94 (N)   Gamma Gamma Ntuple  
       9001 (1)   NTRK
       9002 (1)   E?BGO!  
       9003 (1)   E?HCAL! 
       9004 (1)   E?BGO+HCAL! 
       9011 (1)   NTRK
       9012 (1)   E?BGO!  
       9013 (1)   E?HCAL! 
       9014 (1)   E?BGO+HCAL! 
       9015 (1)   InTEC and OuterTEC TRG  
       9099 (1)   number of events.

root [0] gSystem->Load("libHbook.so");
root [1] THbookFile f("/l3/l3data/99/ggntp/cc01jurg.ntp");
root [2] tt2=(THbookTree*)f.Get(94)                 
(class THbookTree*)0x86fca48
root [3] Int_t nt
root [4] tt2->SetBranchAddress("Ntrk",&nt)
root [5] bran = (THbookBranch*)tt2->GetBranch("Ntrk")
(class THbookBranch*)0x87b4468
root [6] bran->GetEntry(30) //!!!!!!!!!!!!!!!!
 ***** ERROR in HNBUFF : Buffer structure not initialized. : ID=      94 
 ***** ERROR in HGNTF : Cannot find Ntuple buffer structure : ID=      94 
(Int_t)0
________________________________________________________________________


    BUT if I Drawing exatly the same variable ( here "Ntrk") via 

    tt2->Draw("Ntrk")

before getting any entry from this branch then everything is allright.

   So I found in procedure THBookFile::InitLeaves(...) that in case 
of empty `TreeFormula* ' argument this procedure just quits. Very strange 
solution I think.

  In any case N-tuple initialization (for branches) is failed and one can 
only obtain some result if call procedures that using 
 TTreePlayer::InitLoop with some related formula.  

  May be the best solution is slightly change the 
THbookTree::InitLeaves()? I really don't know. Or just throw out from 
THbookFile::GetEntryBranch  call of HGNTF subrouting (in such specific 
cases)?

	Best regards
				Stanislav.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:01 MET