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