Using MakeClass output

From: lijowski@cosray2.wustl.edu
Date: Fri Oct 01 1999 - 17:11:13 MEST


  Hello, 

  I have question regarding using MakeClass output in compiled programs
  related to my unsufficient experience in C++.
  Below are two small programs, one which creates a file, a tree, and 
  uses MakeClass to generate templates for the second program which
  attempts to access this tree. I could not find any example to follow.

  Thanks and regards

  Michal Lijowski

// This program writes a Tree into the output file

#include <TROOT.h>
#include <Rtypes.h>
#include <TFile.h>
#include <TTree.h>
#include <TBranch.h>

// ----------------------------------------------------------------------

int main(int argc, char **argv)
{
    
   TROOT test_Tree("TEST", "Tree");

   TFile *tfile = new TFile("TEST.root", "RECREATE", "test Tree");

// file is compressed
    Int_t comp = 1;  // compress file
    tfile -> SetCompressionLevel(comp);
    Int_t bufsize = 32000;

// make TOP subdirectory
    tfile -> mkdir("TOP");
 
    gDirectory -> cd("TOP");

// Create a new Tree with branches
 
   TTree *TT = new TTree("TT", "test data");
   TT -> SetAutoSave(100000000); // autosave when 1000 kB is written

   Int_t  EVTNO;
   TT -> Branch("EVTNO", &EVTNO, "EVTNO/i", bufsize);
   for (Int_t ii = 0; ii < 50000; ii++) {
       EVTNO = ii;
       TT -> Fill();
   }
   TT -> MakeClass("TEST_CLASS");
   tfile -> Write();
   tfile -> Close();

   return 0;
}

// -----------------------------------------------------------------------

// This program reads the ROOT Tree  

#include <TROOT.h>
#include <TTree.h>
#include <TEST_CLASS.h>

void TEST_CLASS::Loop()
{
//   In a Root session, you can do:
//      Root > .L TEST_CLASS.C
//      Root > TEST_CLASS t
//      Root > t.GetEntry(12); // Fill t data members with entry number 12
//      Root > t.Show();       // Show values of entry 12
//      Root > t.Show(16);     // Read and show values of entry 16
//      Root > t.Loop();       // Loop on all entries
//

//     This is the loop skeleton
//       To read only selected branches, Insert statements like:
// METHOD1:
//    fTree->SetBranchStatus("*",0);  // disable all branches
//    fTree->SetBranchStatus("branchname",1);  // activate branchname
// METHOD2: replace line
//    fTree->GetEntry(i);  // read all branches
//by  b_branchname->GetEntry(i); //read only this branch
   if (fTree == 0) return;

   Int_t nentries = Int_t(fTree->GetEntries());

   Int_t nbytes = 0, nb = 0;
   for (Int_t i=0; i<nentries;i++) {
      nb = fTree->GetEntry(i);   nbytes += nb;
   }
}

// ----------------------------------------------------------------------

int main(int argc, char **argv)
{
    
   TROOT test_Tree("TEST", "Tree");

   TEST_CLASS TTH(); 

   return 0;
}



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:40 MET