Revision 9a9e5b4cf3f43c391212ffc2c292ca1ffdba8767 authored by Unknown Author on 08 May 2006, 14:01:31 UTC, committed by Unknown Author on 08 May 2006, 14:01:31 UTC
git-svn-id: http://root.cern.ch/svn/root/tags/v5-11-02@14953 27541ba8-7e3a-0410-8455-c3a389f83636
1 parent 28e762f
Raw File
staff.C
// example of macro to read data from an ascii file and
// create a root file with a Tree.
// see also a variant in cernbuild.C
// Author: Rene Brun
void staff() {
   
   struct staff_t {
      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];
    };

   staff_t staff;

   //The input file cern.dat is a copy of the CERN staff data base
   //from 1988
   FILE *fp = fopen("cernstaff.dat","r");

   char line[80];

   TFile *f = new TFile("staff.root","RECREATE");
   TTree *tree = new TTree("T","staff data from ascii file");
   tree->Branch("staff",&staff.Category,"Category/I:Flag:Age:Service:Children:Grade:Step:Hrweek:Cost");
   tree->Branch("Division",staff.Division,"Division/C");
   tree->Branch("Nation",staff.Nation,"Nation/C");
    //note that the branches Division and Nation cannot be on the first branch
   while (fgets(&line,80,fp)) {
      sscanf(&line[0],"%d %d %d %d %d",&staff.Category,&staff.Flag,&staff.Age,&staff.Service,&staff.Children);
      sscanf(&line[32],"%d %d  %d %d %s %s",&staff.Grade,&staff.Step,&staff.Hrweek,&staff.Cost,staff.Division,staff.Nation);
      tree->Fill();
   }
   tree->Print();
   tree->Write();

   fclose(fp);
   delete tree;
   delete f;
}
back to top