Re: [ROOT] Tree MakeSelector problem

From: Jacek M. Holeczek (holeczek@us.edu.pl)
Date: Fri Feb 15 2002 - 15:32:08 MET


Hi,
Thanks for your help.
First let me notify you that there are possibly errors in the ROOT User's
Guide. In the 3.2a version on page 278 in the chapter "Using
TTree::MakeSelector" in three example boxes you show the usage of
	T->Process("MySelector.C", 1000, 100);
I think there is a missing "option" parameter, so it should be :
	T->Process("MySelector.C", "", 1000, 100);

> It seems that you have a problem in one of your Selector functions.
I don't think so. The "Selector functions" were unmodified - just like
they come from the TTree::MakeSelector().
The problem seems to be related to the fact that I use the same TSelector
for many Trees :
	nSM->Process("z1selector.C","250");
	nNS->Process("z1selector.C","250");
	(...)
In this case the ROOT/CINT gets angry by every "reload" of the file
"z1selector.C".
According to your mail, I modified it into :
	TSelector *sel = TSelector::GetSelector("z1selector.C");
	(...)
	nSM->Process(sel,"250");
	nNS->Process(sel,"250");
	(...)
and it ALMOST works. In the beginning I get the "usual" warning, but then
there are no further errors reported.
I'm sure you wonder why I say "almost works" ?
Well, In the z1selector class I added a public "TString MyNameIs;" and in
the "z1selector::Begin" I added :
	MyNameIs = GetOption();
	cout << "My Name Is : " << MyNameIs << endl;
Now, I process my trees :
	nSM1->Process(sel,"Vac250SM");
	nNS1->Process(sel,"Vac250NS");
	nSM2->Process(sel,"Mat250SM");
	nNS2->Process(sel,"Mat250NS");
and I would expect to get :
	My Name Is : Vac250SM
	My Name Is : Vac250NS
	My Name Is : Mat250SM
	My Name Is : Mat250NS
but instead I get :
	My Name Is : Vac250SM
	My Name Is : Vac250SM
	My Name Is : Vac250SM
	My Name Is : Vac250SM
Note that the "MyNameIs" was initialized only once, by the first "Process".
Best regards,
Jacek.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET