Re: [ROOT] TClonesArray in trees

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Jul 20 2000 - 19:08:34 MEST


Hi Stefano,
If you change:

 tree->SetBranchAddress("ArrayofParticles", ArrayofParticles);
to
 tree->SetBranchAddress("ArrayofParticles", &ArrayofParticles);

your program will work OK.

Rene Brun

Stefano Argiro' wrote:
> 
> Hi Rooters,
> 
> I am very confused about the following:
> suppose you store many objects of the kind 'Particle' in a
> TClonesArray of particles called "ArrayofParticles"
> You now want to store the array in a TTree. Then ,
> TTree::Branch("ArrayofParticles",clonesarrayname,...) splits in many
> sub-branches, each containing, at the end, basic data types of the kind
> 'Particle.fPX, etc... '.
> 
> If I want to read back directly Particle.fPX from its associated branch,
> no problem.
> 
> The question is: can you read back ArrayofParticles and have access to
> every 'Particle ' in the TClonesArray ??
> 
> I tried with something like:
> 
>  TClonesArray *ArrayofParticles = new TClonesArray();
>  tree->SetBranchAddress("ArrayofParticles", ArrayofParticles);
>  tree->GetEvent(0);
>  Particle * p = (Particle *) ArrayofParticles->At(1);
>  cout<< p->GetPX();
> 
>  ROOT tells me something like
> Error: non class,struct,union object p used with . or ->
> FILE:/tmp/fileg62HaS_cint LINE:1
> 
>  Thank you very much
> 
> Stefano



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