[ROOT] Re: Tree

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Mar 05 2001 - 23:59:04 MET


Anton,
This result is correct. GetEntry returns the number of bytes read from the
file. In case you read the same entry again, Root does not have to do any
I/O unless the branch addresses have changed. In this case GetEntry
returns 1 (I cannot return 0 because many people uses 0 to assume that
an error has occured during reading).

Rene Brun

On Mon, 5 Mar 2001, Anton Fokin wrote:

> Hi Rene,
> 
> I've got the following strange result. The piece of code is (I simply read
> the same entry three times)
> 
> ---
> 
>   Index = 4;
> 
>   Int_t NBytes = fTradeIndexTree->GetEntry(Index);
> 
>   printf("NBytes = %d\n", NBytes);
> 
>   NBytes = fTradeIndexTree->GetEntry(Index);
> 
>   printf("NBytes = %d\n", NBytes);
> 
>   NBytes = fTradeIndexTree->GetEntry(Index);
> 
>   printf("NBytes = %d\n", NBytes);
> 
> ---
> 
> the output:
> 
> NBytes = 4
> NBytes = 1
> NBytes = 1
> 
> I also see that I fill my fTradeIndex in the first read only.
> 
> If I insert
> 
> fTradeIndexTree->SetBranchAddress("TradeIndex", &fTradeIndex);
> 
> before every GetEntry(), I get right result.
> 
> fTradeIndexTree is simple:
> 
> UInt_t TradeIndex = 0;
> TradeIndexTree->Branch("TradeIndex", &TradeIndex, "TradeIndex/i", 16*1024);
> 
> 
> Any ideas how it can happen in principle? Any hints to trace the problem
> down?
> 
> Root3.05 on win98
> 
> Regards,
> Anton
> 
> http://www.smartquant.com
> 
> 
> 



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:38 MET