TGenericTable
This is the class to represent the array of C-struct
defined at run-time
Example: see $ROOTSYS/tutorials/tree/staff.C
!{
!// example of macro to read data from an ascii file and
!// create a root file with an histogram and an ntuple.
!// A'la the famous ROOT/PAW staff data example
!// ( see PAW - Long write up, CERN, page33. )
!
! gROOT->Reset();
! gSystem->Load("libRootKernel");
!
! struct staff_t {
! Int_t cat;
! Int_t division;
! Int_t flag;
! Int_t age;
! Int_t service;
! Int_t children;
! Int_t grade;
! Int_t step;
! Int_t nation;
! Int_t hrweek;
! Int_t cost;
! };
!
! staff_t staff;
!
! // open ASCII data file
! FILE *fp = fopen("staff.dat","r");
!
! char line[81];
!
! // Create the generic table for 1000 rows (it may grow then)
! TGenericTable *allStaff = new TGenericTable("staff_t","Staff-data",1000);
!
! // Fill the memory resident table
! while (fgets(&line,80,fp)) {
! sscanf(&line[0] ,"%d%d%d%d", &staff.cat,&staff.division,&staff.flag,&staff.age);
! sscanf(&line[13],"%d%d%d%d", &staff.service,&staff.children,&staff.grade,&staff.step);
! sscanf(&line[24],"%d%d%d", &staff.nation,&staff.hrweek,&staff.cost);
! allStaff->AddAt(&staff);
! }
! fclose(fp);
! // Delete unused space;
! allStaff->Purge();
!
! allStaff->Print(0,10);
!
!// Create ROOT file
! TFile *f = new TFile("aptuple.root","RECREATE");
! allStaff->Write();
! f->Write();
!
! // We should close TFile otherwise all histograms we create below
! // may be written to the file too occasionaly
! f->Close();
!
!// Create ROOT Browser
! new TBrowser("staff",allStaff);
!
!// Create couple of the histograms
! TCanvas *canva = new TCanvas("Staff","CERN Population",600,600);
! canva->Divide(1,2);
!
!
!// one can use 2 meta variable:
!// n$ - the total number of the rows in the table
!// i$ - stands for the current row index i = [0 -> (n$-1)]
!
! gStyle->SetHistFillColor(10);
! gStyle->SetHistFillStyle(3013);
! canva->cd(1);
! allStaff->Draw("age");
! canva->Update();
! canva->cd(2);
! allStaff->Draw("cost");
! canva->Update();
!}