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