Re: SetBranchAddress question

From: Rene Brun (Rene.Brun@cern.ch)
Date: Sun Feb 27 2000 - 09:35:23 MET


Anton,
What is your question? problem ?
It is stated in the documentation of TTree::Branch (class case) that you
must
pass the address of the pointer and not the pointer itself.
The reason is that we authorize a construct like
   Event *event = 0;
   T->SetBranchAddress("event", &event);
When reading the corresponding branch via T->GetEntry(), an event
object will be automatically created and hooked  at event.
Another use is when you have saved in successive files classes
derived from a base class Event and you want to process these files
in a TChain. In this case, the right object of the right class will
be automatically created at the address given by event.

Rene Brun


On Sat, 26 Feb 2000, Anton Fokin wrote:

> Hi!
> 
> could you tell me why you are using &event when calling
> 
> void SetBranchAddress(const char *bname, void *add)
> 
>    Event *event = new Event();
>    T->SetBranchAddress("event", &event);
> 
> 
> it looks like you are setting address of pointer to the branch instead of
> address of branch (or address of pointer to the object from where read/write
> data?). Is it something with terminology? When I looked at this function for
> the very first time, I wanted to do
> 
> Event event;
> T->SetBranchAddress("event", &event);
> 
> I remember I've seen some related comments in one of the root
> tutorials/examples but I am not able to find it now. Hmmm... where is our
> nice documentation about root i/o? :)
> 
> Best,
> Anton
> 



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:20 MET