[ROOT] 2-dimensional array branches

From: Glen R. Salo (gsalo@mrcstl.com)
Date: Thu Sep 06 2001 - 19:44:48 MEST


Hello,

I don't understand why the following scripts fail (I patterned it off of
tree3.C).  If the statements which refer to px2 are removed, it runs just
fine.  But I want to be able to have multiple 2 dimensional branches
within the same tree.  Is this possible?  I'm running version 3.02/00 (as
of August 29th) on an updated RedHat 7.1 x86 machine.

Thanks,

Glen

void twodw() {

   const Int_t kMaxDim = 50;
   Int_t nx;
   Int_t ny;
   Double_t px1[kMaxDim][kMaxDim]; 
   Double_t px2[kMaxDim][kMaxDim]; 
     
   TFile f("twod.root","recreate");
   TTree *twod = new TTree("twod","Reconst ntuple");
   twod->Branch("nx",&nx,"nx/I");
   twod->Branch("ny",&ny,"ny/I");
   twod->Branch("px1",px1,"px1[nx][ny]/D");
   twod->Branch("px2",px2,"px2[nx][ny]/D");

   nx = gRandom->Rndm()*(kMaxDim-1);
   ny = gRandom->Rndm()*(kMaxDim-1);  
   for (Int_t i=0;i<100;i++) {
      for (Int_t j=0;j<nx;j++) {
        for (Int_t k=0;k<ny;k++) {
          px1[j][k] = gRandom->Gaus(0,1);
          px2[j][k] = gRandom->Gaus(0,1);
        }
      }
      twod->Fill();
   }   
   twod->Print();
   f.cd();
   twod->Write();
}

void twodr()
{
   TFile *f = new TFile("twod.root");
   TTree *twod = (TTree*)f->Get("twod");
   twod->Draw("px1");
}

void twod()
{
   twodw();
   twodr();
}      



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:59 MET