[ROOT] RE: write selected events in tree...

From: Philippe Canal (pcanal@fnal.gov)
Date: Fri Feb 21 2003 - 16:50:00 MET


Hi Daniela,

Before calling GetTree on a chain, you need to make sure that the tree is loaded.
So adding at least
	fChain->LoadTree(0);
before calling fChain->GetTree()

Cheers,
Philippe

-----Original Message-----
From: owner-about-root@listserv.fnal.gov
[mailto:owner-about-root@listserv.fnal.gov]On Behalf Of Daniela Kaefer
Sent: Friday, February 21, 2003 4:23 AM
To: Rene Brun
Cc: about-root@fnal.gov; roottalk@pcroot.cern.ch
Subject: Re: write selected events in tree...


Hi Rene,

well, I did it exactly as you wrote in your email, but... it didn't work.
It compiles, but then it crashes with:

  [...]
  Initializing wtreeTopData...
  Program running on host aragorn-clued0
  booking stuff
  ...wtreeTopData initialized successfully
  Starting event loop...

    *** Break *** segmentation violation
  Abort


before it even reaches the first event. I started it in gdb and got the
following "error"-message:


[kaefer@aragorn-clued0] ~/analysis/p13.06.01/diem/wtree > gdb runTopData
GNU gdb 5.0 [...]
(gdb) run /work/aragorn-clued0/kaefer/top_analyze/diemroot/
Starting program: /home/kaefer/analysis/p13.06.01/diem/wtree/runTopData
/work/aragorn-clued0/kaefer/top_analyze/diemroot/
[New Thread 1024 (LWP 21346)]
Reading file names from directory
/work/aragorn-clued0/kaefer/top_analyze/diemroot/
Adding files to TChain
FILE: /work/aragorn-clued0/kaefer/top_analyze/diemroot//out_partab.root
added to TChain
FILE: /work/aragorn-clued0/kaefer/top_analyze/diemroot//out_partac.root
added to TChain
FILE: /work/aragorn-clued0/kaefer/top_analyze/diemroot//out_partad.root
added to TChain
FILE: /work/aragorn-clued0/kaefer/top_analyze/diemroot//out_partae.root
added to TChain
FILE: /work/aragorn-clued0/kaefer/top_analyze/diemroot//out_partaf.root
added to TChain
[...]
Initializing wtreeTopData...
Program running on host aragorn-clued0
booking stuff
...wtreeTopData initialized successfully
Starting event loop...

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 21346)]
0x804f2c8 in wtreeTopData::Loop (this=0x8621e48) at wtreeTopData.C:111
111       TTree *newTree = (TTree*)fChain->GetTree()->CloneTree(0);
(gdb)

It seems as if it cannot find the original tree in the fChain, but there
is one, it's called TopTree and it looks like in the Header-file I send in
the previous email... Please, if you have any idea on what could possibly
be wrong, let me know. Thanks a lot for your help, at least it finally
compiles!

Best,
  Daniela

 +-----------------------------------------------------------+
 | Daniela Kaefer     | email: kaefer@physik.rwth-aachen.de  |
 | Fermilab, MS 357   |        kaefer@fnal.gov    \_L_/      |
 | Batavia, IL 60510  |                           /* *\/     |
 |                    |                           \_*_/\     |
 | U.S.A.             | phone: +1-630-840-5439    / | \      |
 +-----------------------------------------------------------+



======================================================================
On Fri, 21 Feb 2003, Rene Brun wrote:

> Hi Daniela,
>
> In your Loop function, you should not call BranchOld. CloneTree will
> recreate an identical Tree header.
> Below, you will find an example of Loop code to copy a subset of
> a Tree (TChain) to a new Tree.
>
> Rene Brun
>
>
>    TFile f("newTree.root","recreate");
>    TTree *newTree = fChain->GetTree()->CloneTree(0);
>
>    Int_t nentries = Int_t(fChain->GetEntriesFast());
>    for (Int_t jentry=0; jentry<nentries;jentry++) {
>       Int_t ientry = LoadTree(jentry);
>       if (ientry < 0) break;
>       fChain->GetEntry(jentry);
>       // if event is rejected continue
>       newTree->Fill();
>    }
>    newTree->AutoSave();



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET