// @(#)root/star:$Name: $Id: TGenericTable.cxx,v 1.4 2005/09/08 05:33:41 brun Exp $
// Author: Valery Fine(fine@bnl.gov) 30/06/2001
// Copyright(c) 2001 [BNL] Brookhaven National Laboratory, Valeri Fine (fine@bnl.gov). All right reserved",
#include "TGenericTable.h"
//////////////////////////////////////////////////////////////////////////
// //
// TGenericTable //
// //
// This is the class to represent the array of C-struct //
// defined at run-time //
// //
// Example: see $ROOTSYS/star/demo/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();
// !}
//
//////////////////////////////////////////////////////////////////////////
ClassImp(TGenericTable)
TableClassStreamerImp(TGenericTable)
// Create TGenericTable by TTableDescriptor pointer
//______________________________________________________________________________
TGenericTable::TGenericTable(const TTableDescriptor &dsc, const Text_t *name) : TTable(name,dsc.Sizeof()),fColDescriptors(0)
{
///////////////////////////////////////////////////////////
//
// Create TGenericTable by TTableDescriptor pointer:
//
// dsc - Pointer to the table descriptor
// name - The name of this object
//
///////////////////////////////////////////////////////////
// Create a private copy of the descriptor provided;
SetDescriptorPointer(new TTableDescriptor(dsc));
SetGenericType();
}
//______________________________________________________________________________
TGenericTable::TGenericTable(const TTableDescriptor &dsc, Int_t n) : TTable("TGenericTable",n,dsc.Sizeof()),fColDescriptors(0)
{
///////////////////////////////////////////////////////////
//
// Create TGenericTable by TTableDescriptor pointer:
//
// dsc - Pointer to the table descriptor
// name - "TGenericTable"
// n - The initial number of allocated rows
//
///////////////////////////////////////////////////////////
// Create a provate copy of the descriptor provided;
SetDescriptorPointer(new TTableDescriptor(dsc));
SetGenericType();
}
//______________________________________________________________________________
TGenericTable::TGenericTable(const TTableDescriptor &dsc,const Text_t *name,Int_t n) : TTable(name,n,dsc.Sizeof()),fColDescriptors(0)
{
///////////////////////////////////////////////////////////
//
// Create TGenericTable by TTableDescriptor pointer:
//
// dsc - Pointer to the table descriptor
// name - The name of this object
// n - The initial number of allocated rows
//
///////////////////////////////////////////////////////////
// Create a provate copy of the descriptor provided;
SetDescriptorPointer(new TTableDescriptor(dsc));
SetGenericType();
}
// Create TGenericTable by C structure name provided
//______________________________________________________________________________
TGenericTable::TGenericTable(const char *structName, const Text_t *name) : TTable(name,-1),fColDescriptors(0)
{
///////////////////////////////////////////////////////////
//
// Create TGenericTable by C structure name provided:
//
// dsc - Pointer to the table descriptor
// name - The name of this object
// n - The initial number of allocated rows
//
///////////////////////////////////////////////////////////
TTableDescriptor *dsc = TTableDescriptor::MakeDescriptor(structName);
if (dsc) {
SetDescriptorPointer(dsc);
fSize = dsc->Sizeof();
}
if ( !dsc || !fSize) Warning("TGenericTable","Wrong table format");
SetGenericType();
}
//______________________________________________________________________________
TGenericTable::TGenericTable(const char *structName, Int_t n) : TTable("TGenericTable",-1),fColDescriptors(0)
{
///////////////////////////////////////////////////////////
//
// Create TGenericTable by C structure name provided:
//
// dsc - Pointer to the table descriptor
// name - The name of this object
// n - The initial number of allocated rows
//
///////////////////////////////////////////////////////////
TTableDescriptor *dsc = TTableDescriptor::MakeDescriptor(structName);
if (dsc) {
SetDescriptorPointer(dsc);
fSize = dsc->Sizeof();
}
if ( !dsc || !fSize) Warning("TGenericTable","Wrong table format");
if (n > 0) Set(n);
SetGenericType();
}
//______________________________________________________________________________
TGenericTable::TGenericTable(const char *structName, const Text_t *name,Int_t n) : TTable(name,-1),fColDescriptors(0)
{
///////////////////////////////////////////////////////////
//
// Create TGenericTable by C structure name provided:
//
// dsc - Pointer to the table descriptor
// name - The name of this object
// n - The initial number of allocated rows
//
///////////////////////////////////////////////////////////
TTableDescriptor *dsc = TTableDescriptor::MakeDescriptor(structName);
if (dsc) {
SetDescriptorPointer(dsc);
fSize = dsc->Sizeof();
}
if ( !dsc || !fSize) Warning("TGenericTable","Wrong table format dsc=0x%x, size=%d",dsc,fSize);
if (n > 0) Set(n);
SetGenericType();
}
//______________________________________________________________________________
TGenericTable::~TGenericTable()
{
delete fColDescriptors;
}
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.