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