ASCII file reading and analyzing
{
// 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; // catetory
Int_t division; // CERN division
Int_t flag;
Int_t age; // age of the person
Int_t service;
Int_t children; // The number of the children
Int_t grade; // the grade
Int_t step;
Int_t nation; // citizenship
Int_t hrweek; // number of working hours per week
Int_t cost; // salary
};
staff_t staff;
// open ASCII data file
TString pathName = "$ROOTSYS/tutorials/staff.dat";
gSystem->ExpandPathName(pathName);
if (gSystem->AccessPathName(pathName.Data()))
{
printf(" Can not find file %sn",pathName.Data());
return;
}
FILE *fp = fopen(pathName.Data(),"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();
}
ROOT page - Class index - 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.