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