RE: [ROOT] Problem to copy selected entries of tree friends (additional info)

From: Philippe Canal (pcanal@fnal.gov)
Date: Tue Apr 27 2004 - 00:44:05 MEST


Hi Christian,

In addition you do:
      tmptree->Branch("DataBranch", "MyData", &data, 64000, split);

      for (Int_t i=0; i<nentries; i++) {
         // Test: filter mask!!!!
         if (i%2) continue;

         treej[j]->GetEntry(i);
         data->SetID(dataj[j]->GetID());
         data->SetX(dataj[j]->GetX());
//if (i<4) cout << "i= " << i <<  " j= " << j << "  data= " << data->GetX() << endl;
         tmptree->Fill();
      }//for_i

      tmptree->Write();

      if (j == 0) {
         newtree = tmptree;
      } else {
         newtree->AddFriend(tmptree, alias.Data());
      }//if

	delete data;

The last delete data is invalid since tmptree still relies on it!

In general I would recommend that you
	a) always compile your macros
	b) run valgrind (http://valgrind.kde.org) on the macro each time you have
a problem.

Cheers,
Philippe.

-----Original Message-----
From: Philippe Canal [mailto:pcanal@fnal.gov]
Sent: Monday, April 26, 2004 5:36 PM
To: cstrato; roottalk@pcroot.cern.ch
Subject: RE: [ROOT] Problem to copy selected entries of tree friends


Hi,

In this macro you also define a class and try to store in a TTree.
You should compile the macro in order to use it.

Cheers,
Philippe.

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of cstrato
Sent: Sunday, April 25, 2004 4:28 PM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] Problem to copy selected entries of tree friends


Dear Rooters

Sorry to bother you again with a version of my macro, but since
days I am trying to find an error in my program.

This is my intention:
Having a tree fTree with friend trees, I want to copy all trees
to a new file, but only with a subset of tree entries. Variable
fTree should now contain the new tree with friends.

The enclosed macro "macroFriends1.C" should create a new tree
containing as entries the mean value of the corresponding entries
of the friend trees.

Running the macro ".x macroFriends1.C(0)" uses all tree entries
to calculate the mean. It works both with CINT and ACLiC.

However, macro ".x macroFriends1.C(1)", using only every second
tree entry, crashes at different points when using CINT or ACLiC.

There must be a severe mistake in my macro, but I am unable to
detect it. It would be great if someone could tell me what the
error may be?

Thank you in advance for your help.

P.S.: To give you an idea how severe the crash of my program is,
here is part of the output that I get after calling atree->GetTitle():
nentries(atree)= 173
atree_title= <Test@T_(W9
Then the xterm produces only random characters.

Best regards
Christian
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
C.h.r.i.s.t.i.a.n. .S.t.r.a.t.o.w.a
V.i.e.n.n.a.         .A.u.s.t.r.i.a
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET