"maketree.C" filled the tree in the following way:
-------------------------------------------------------------------
Float_t sum,intrpos[3],bgo[10][2][20];
// Create a new ROOT binary machine independant file
TFile *f = new TFile("aticdata.root","RECREATE");
// Create a ROOT Tree and branches
TTree *tree = new TTree("EVENT","Event Tree");
TBranch *branch1 = tree->Branch("SUM",&sum,"sum/F");
TBranch *branch2 = tree->Branch("INTRPOS",intrpos,"intrpos[3]/F");
TBranch *branch3 = tree->Branch("BGO",bgo,"bgo[10][2][20]/F");
^^^^^^^^^^^^^^
???
// Fill the tree
for(event=1; event<=NUMOFEVENTS; event++) {
sum = XXX;
intrpos[0]=XXX;
intrpos[1]=XXX;
intrpos[2]=XXX;
for(i=0; i<10; i++)
for(j=0; j<2; j++)
for(k=0; k<20; k++) bgo[i][j][k]=XXX;
tree->Fill();
-------------------------------------------------------------------
When I retrieve each branch value from the tree("EVENT") in the following
manner I succededed in retrieving sum and intrpos. However bgo gives
garbage. ^^^ ^^^^^^^ ^^^
Is this because bgo is 3 dim array or my code is wrong?
---------------------------- retrieving routine -------------
#include <stdio.h>
#include "TROOT.h"
#include "TFile.h"
#include "TTree.h"
#include "TBranch.h"
#include "TObject.h"
Int_t main()
{
Int_t nevent;
Int_t nbyte;
Float_t sum;
Float_t intrpos[3];
Float_t bgo[10][2][20];
TROOT readtree("readtree","Test of reading TREE");
// Connect ROOT file
TFile *f = new TFile("aticdata.root");
// Read Tree named "EVENT" in memory.
// Tree pointer is assigned the same name.
TTree *EVENT = (TTree *)f->Get("EVENT");
// Access each branch
TBranch *bsum = (TBranch *)EVENT->GetBranch("SUM");
TBranch *bintrpos = (TBranch *)EVENT->GetBranch("INTRPOS");
TBranch *bbgo = (TBranch *)EVENT->GetBranch("BGO");
// Set addresses
bsum->SetAddress(&sum);
bintrpos->SetAddress(&intrpos[0]);
bbgo->SetAddress(&bgo[0][0][0]);
// Read from each branch
nevent = EVENT->GetEntries();
nbyte = 0;
for(Int_t i=0; i<nevent; i++) {
nbyte += EVENT->GetEvent(i);
printf("%d %g\n",i,sum);
printf("%d %g %g %g\n",i,intrpos[0],intrpos[1],intrpos[2]);
for(Int_t j=0; j<10; j++)
for(Int_t k=0; k<2; k++)
for(Int_t l=0; l<20; l++)
printf("%d %g\n",i,bgo[j][k][l]);
}
f->Close();
return 0;
}
----
Thanks a lot!
Jayoung