[ROOT] Problems with TSelector

From: Christian Vogel (vogel@skunk.physik.uni-erlangen.de)
Date: Thu Dec 18 2003 - 17:16:05 MET


Hi roottalk,

I tried to make a really primitive analysis in root using a TSelector
(and two derived classes) because I wanted to encapsulate stuff I have
to do several times in a intermediate class... And I want to iterate
over several files in a TChain. My selector-hierarchy looks like:

TSelector
  |
  +-- GsiSelector  (load stuff from branches, later: do cuts, prepare
        |           intermediate values...)
        |
        +-- gsi_calc_pedestals
        |
        +-- other stuff

Now in principle, I think it works, but it seems to call Notify() at
strange locations. Possibly it's doing strange things which also slow
everything down quite a lot. If I run the code[*] it does the following:

GsiSelector() - constructor is called (fine)
GsiCalcPedestals() - constructor is called (fine)
 Begin() is called (fine), this saves the TTree* in fTree member variable
 Notify() is called (fine)
 Notify() is called AGAIN. WHY? <---------

 --->  for all Events in the first file
 |  ProcessCut/ProcessFill is called for events (fine)
 |   |
 +---+

 Notify() is called (fine), new file
 Notify() is called AGAIN. WHY? <------

 ProcessCut/ProcessFile for first event in second file

 Now, Notify() is called for EVERY EVENT in the second file.
 Things get very, very, very slow.

Have I done something completely wrong and/or stupid?

	Chris

[*] you can have a look here:
	http://pi2.physik.uni-erlangen.de/~vogel/gsi_analysis_root/


-- 
There are three types of people in the world; those who can count,
and those who can't.



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