Re: [ROOT] Reading array in a Tree

From: Conrad Steenberg (conrad@hep.caltech.edu)
Date: Fri Sep 06 2002 - 23:38:07 MEST


Hi Rene

Yeah, it works, thanks!

Conrad

On Fri, 2002-09-06 at 14:28, Rene Brun wrote:
> Hi Conrad,
> 
> You use a standard C++ array of doubles not a TArrayD.
> In your code reading the Tree, do, eg:
> 
> double Etgenjet5[nmax]; //with nmax greater or equal to 
>                           the max value for nGenjet5.
> 
> T->SetBranchAddress("Etgenjet5",Etgenjet5);
> 
> 
> On 6 Sep 2002, Conrad Steenberg wrote:
> 
> > Hi
> >
> > >From reading the user's manual I'm  unsure how to read a variable array
> > of doubles from a TTree. E.g.
> >
> > The TTree has a branch
> >
> *............................................................................*
> > *Br   12 :nGenjet5  : nGenjet5/I
> *
> > *Entries :      638 : Total  Size=      14992 bytes  File Size  =
> 0 *
> > *Baskets :      0 : Basket Size=      32000 bytes  Compression=   1.00
> *
> >
> *............................................................................*
> >
> > and another
> >
> >
> *............................................................................*
> > *Br   21 :Etgenjet5 : Etgenjet5[nGenjet5]/D
> *
> > *Entries :      638 : Total  Size=      36769 bytes  File Size  =
> 0 *
> > *Baskets :      0 : Basket Size=      32000 bytes  Compression=   1.00
> *
> >
> *............................................................................*
> >
> >
> > So in my Root file I do
> >
> > Int_t i, j, nGenjet5;
> > TArrayD *Etgenjet5=0Etgenjet5;
> >
> > //[ Set up the TTree from a file here] then
> >
> > Int_t nevent = (Int_t) T->GetEntries();
> > T->SetBranchAddress("nGenjet5",&nGenjet5);
> > T->SetBranchAddress("Etgenjet5",&Etgenjet5);
> >
> > for (i=0;i<nevent;i++)                       // Loop over Events
> > {
> >     T->GetEntry(i);
> >     for (j=0;j<nGenjet5;j++)
> >       printf("j=%d value=%f\n",j,Etgenjet5[j]);
> >
> > }
> >
> > This quicjly causes a segfault...
> >
> > Any ideas would be appreciated :-)
> >
> > Conrad
> 
> 
> On 6 Sep 2002, Conrad Steenberg wrote:
> 
> > Hi
> > 
> > >From reading the user's manual I'm  unsure how to read a variable array
> > of doubles from a TTree. E.g.
> > 
> > The TTree has a branch
> > *............................................................................*
> > *Br   12 :nGenjet5  : nGenjet5/I                                             *
> > *Entries :      638 : Total  Size=      14992 bytes  File Size  =          0 *
> > *Baskets :	  0 : Basket Size=	32000 bytes  Compression=   1.00     *
> > *............................................................................*
> > 
> > and another
> > 
> > *............................................................................*
> > *Br   21 :Etgenjet5 : Etgenjet5[nGenjet5]/D                                  *
> > *Entries :      638 : Total  Size=      36769 bytes  File Size  =          0 *
> > *Baskets :	  0 : Basket Size=	32000 bytes  Compression=   1.00     *
> > *............................................................................*
> > 
> > 
> > So in my Root file I do 
> > 
> > Int_t i, j, nGenjet5;
> > TArrayD *Etgenjet5=0;
> > 
> > //[ Set up the TTree from a file here] then
> > 
> > Int_t nevent = (Int_t) T->GetEntries(); 
> > T->SetBranchAddress("nGenjet5",&nGenjet5);  
> > T->SetBranchAddress("Etgenjet5",&Etgenjet5);
> > 
> > for (i=0;i<nevent;i++)                       // Loop over Events
> > {        
> >     T->GetEntry(i);                         
> >     for (j=0;j<nGenjet5;j++)
> >       printf("j=%d value=%f\n",j,Etgenjet5[j]);
> > 
> > }
> > 
> > This quicjly causes a segfault...
> > 
> > Any ideas would be appreciated :-)
> > 
> > Conrad
> > 
> > -- 
> > *-----------------------------------------*
> > | Conrad Steenberg                        |
> > | Caltech, Mail Code 356-48               |
> > | Pasadena, CA, 91125                     |
> > | e-mail: conrad@hep.caltech.edu          |
> > | Tel: (626) 395-8758                     |
> > *-----------------------------------------*
> > 
> 
-- 
*-----------------------------------------*
| Conrad Steenberg                        |
| Caltech, Mail Code 356-48               |
| Pasadena, CA, 91125                     |
| e-mail: conrad@hep.caltech.edu          |
| Tel: (626) 395-8758                     |
*-----------------------------------------*



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