RE: Root Tuples with variable dimension of Arrays.

From: Ahsan, Mahsana <mahsana_at_phys.ksu.edu>
Date: Tue, 7 Jun 2005 22:26:40 -0500


Hi Rene,

  Thank for the reply. I looked at the tutorial "tree2.C" but unfornately that does not provide what I need. The method "tree2w()" in this macro creates root file containing a "tree" with "leaves" but does not go through different "branches" before creating leaves. What I need is to create "leaves" from different "branches" from a "tree" which does not work when I set the arrays of variable sizes as described in the last email. It works with fixed size of the arrays but not with variable size of array. Is there an example that does this way? Please let me know if I am still missing something.

Thank you so much for help,
Mahsana


From: Rene Brun [mailto:brun_at_pcroot.cern.ch] Sent: Tue 6/7/2005 2:51 PM
To: Ahsan, Mahsana
Cc: roottalk_at_pcroot.cern.ch
Subject: Re: [ROOT] Root Tuples with variable dimension of Arrays.

See example in tutorial tree2.C

Rene Brun

On Tue, 7 Jun 2005, Ahsan, Mahsana wrote:

> Hello Rooter;
>
>
> Please find below my short example for creating root tuples. I am having a problem in getting right informtion when I fill the tree. Only the first leaf
> "njets" is OK while all others are quite corrupted. Can somebody please
> point me out what I am doing wrong. I want to get tuples as
>
> "tree->branch1->leaves
> ->branch2->leaves
> ->branch3->leaves
> ....."
>
> However the "tree->leaves" works even with variable dimension of array.
> The root version is 4.00/04.
> -----------------------------------------------------------------------
> struct Jet{
>
> int njets;
> float eta[10];
> float phi[10];
> float e[10];
> float pt[10];
> }
>
> Jet jet;
> TFile *hfile = new TFile("example.root","RECREATE","TTree root file");
> hfile->SetCompressionLevel(1);
> TTree *mytree = new TTree("mytree","Reconst tuple");
>
> mytree->Branch("jet",&jet.njets,"njets/I:ntracks[njets]/I:eta[njets]/F:phi[njets]/F:e[njets]/F");
>
> int nentries = 500;
> TCloneArray fJets;
>
> for(int ii=0;ii<nentries;ii++){
>
> for(int ijet=0;ijet<fJets->GetLast()+1;ijet++){
> jet.njets = ijet;
> jet.pt[ijet] = cj->Pt();
> jet.eta[ijet] = cj->Eta();
> jet.phi[ijet] = cj->Phi();
> jet.e[ijet] = cj->E();
>
> }
> mytree->Fill();
>
> }
> --------------------------------------------------------------------------
>
> Thank you very much for help,
> Mahsana
>
Received on Wed Jun 08 2005 - 05:30:14 MEST

This archive was generated by hypermail 2.2.0 : Tue Jan 02 2007 - 14:45:09 MET