Cernbuild


Read data (CERN staff) from an ascii file and create a root file with a Tree. See also a variant in staff.C

Author: Rene Brun
This notebook tutorial was automatically generated with ROOTBOOK-izer (Beta) from the macro found in the ROOT repository on Tuesday, January 17, 2017 at 02:42 PM.

Arguments are defined.


In [1]:
Int_t getFile=0;
Int_t print=1;




In [2]:
Int_t           Category;
UInt_t          Flag;
Int_t           Age;
Int_t           Service;
Int_t           Children;
Int_t           Grade;
Int_t           Step;
Int_t           Hrweek;
Int_t           Cost;
Char_t          Division[4];
Char_t          Nation[3];

The input file cern.dat is a copy of the cern staff data base from 1988


In [3]:
TString filename = "cernstaff.root";
TString dir = gROOT->GetTutorialsDir();
dir.Append("/tree/");
dir.ReplaceAll("/./","/");
FILE *fp = fopen(Form("%scernstaff.dat",dir.Data()),"r");

TFile *hfile = 0;
if (getFile) {
   // if the argument getFile =1 return the file "cernstaff.root"
   // if the file does not exist, it is created
   if (!gSystem->AccessPathName(dir+"cernstaff.root",kFileExists)) {
      hfile = TFile::Open(dir+"cernstaff.root"); //in $ROOTSYS/tutorials/tree
      if (hfile) return hfile;
   }
   //otherwise try $PWD/cernstaff.root
   if (!gSystem->AccessPathName("cernstaff.root",kFileExists)) {
      hfile = TFile::Open("cernstaff.root"); //in current dir
      if (hfile) return hfile;
   }
}

No cernstaff.root file found. must generate it ! generate cernstaff.root in $ROOTSYS/tutorials/tree if we have write access


In [4]:
if (gSystem->AccessPathName(".",kWritePermission)) {
   printf("you must run the script in a directory with write access\n");
   return 0;
}
hfile = TFile::Open(filename,"RECREATE");
TTree *tree = new TTree("T","CERN 1988 staff data");
tree->Branch("Category",&Category,"Category/I");
tree->Branch("Flag",&Flag,"Flag/i");
tree->Branch("Age",&Age,"Age/I");
tree->Branch("Service",&Service,"Service/I");
tree->Branch("Children",&Children,"Children/I");
tree->Branch("Grade",&Grade,"Grade/I");
tree->Branch("Step",&Step,"Step/I");
tree->Branch("Hrweek",&Hrweek,"Hrweek/I");
tree->Branch("Cost",&Cost,"Cost/I");
tree->Branch("Division",Division,"Division/C");
tree->Branch("Nation",Nation,"Nation/C");
char line[80];
while (fgets(line,80,fp)) {
   sscanf(&line[0],"%d %d %d %d %d %d %d  %d %d %s %s",
   &Category,&Flag,&Age,&Service,&Children,&Grade,&Step,&Hrweek,&Cost,Division,Nation);
   tree->Fill();
}
if (print) tree->Print();
tree->Write();

fclose(fp);
delete hfile;
if (getFile) {
   //we come here when the script is executed outside $ROOTSYS/tutorials/tree
   hfile = TFile::Open(filename);
   return hfile;
}
return 0;


******************************************************************************
*Tree    :T         : CERN 1988 staff data                                   *
*Entries :     3354 : Total =          176207 bytes  File  Size =      15005 *
*        :          : Tree compression factor =   2.74                       *
******************************************************************************
*Br    0 :Category  : Category/I                                             *
*Entries :     3354 : Total  Size=      14062 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    1 :Flag      : Flag/i                                                 *
*Entries :     3354 : Total  Size=      14038 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    2 :Age       : Age/I                                                  *
*Entries :     3354 : Total  Size=      14032 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    3 :Service   : Service/I                                              *
*Entries :     3354 : Total  Size=      14056 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    4 :Children  : Children/I                                             *
*Entries :     3354 : Total  Size=      14062 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    5 :Grade     : Grade/I                                                *
*Entries :     3354 : Total  Size=      14044 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    6 :Step      : Step/I                                                 *
*Entries :     3354 : Total  Size=      14038 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    7 :Hrweek    : Hrweek/I                                               *
*Entries :     3354 : Total  Size=      14050 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    8 :Cost      : Cost/I                                                 *
*Entries :     3354 : Total  Size=      14038 bytes  One basket in memory    *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00     *
*............................................................................*
*Br    9 :Division  : Division/C                                             *
*Entries :     3354 : Total  Size=      25315 bytes  File Size  =       8325 *
*Baskets :        1 : Basket Size=      32000 bytes  Compression=   2.49     *
*............................................................................*
*Br   10 :Nation    : Nation/C                                               *
*Entries :     3354 : Total  Size=      24198 bytes  File Size  =       6680 *
*Baskets :        1 : Basket Size=      32000 bytes  Compression=   3.05     *
*............................................................................*