Rene, When I added TTH.Loop(); to the main program the g++ compiler return following error GNU C++ version 2.8.1 (sparc-sun-solaris2.7) compiled by GNU C version 2.8.1. read_Tree.cxx: In function `int main(int, char **)': read_Tree.cxx:45: request for member `Loop' in `TTH()', which is of non-aggregate type `TEST_CLASS ()()' make: *** [read_Tree] Error 1 I don't know whether it is important but I have been running root 2.22/10 recompiled with gcc 2.8.1 on Solaris 2.7. By the way I overcame this problem using MakeCode output instead. Thank you. Michal > From Rene.Brun@cern.ch Mon Oct 04 14:47:01 1999 > Delivered-To: lijowski@cosray2.wustl.edu > Date: Mon, 04 Oct 1999 14:45:36 +0000 > From: Rene Brun <Rene.Brun@cern.ch> > MIME-Version: 1.0 > To: lijowski@cosray2.wustl.edu > CC: roottalk@hpsalo.cern.ch > Subject: Re: Using MakeClass output > Content-Transfer-Encoding: 7bit > > Hi Michal, > I do not understand your question. > In your main program, you should simply invoke the Loop function of the > generated class: > > int main(int argc, char **argv) > { > > TROOT test_Tree("TEST", "Tree"); > > TEST_CLASS TTH(); > TTH.Loop(); > > return 0; > } > > > Rene Brun > > > lijowski@cosray2.wustl.edu wrote: > > > > 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