Re: [ROOT] Tree MakeSelector problem

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Feb 15 2002 - 23:19:00 MET


Hi Jacek,

Thanks for reporting the typos in the doc. Will be fixed.

If you use the form:
      TSelector *sel = TSelector::GetSelector("z1selector.C++");
instead of
      TSelector *sel = TSelector::GetSelector("z1selector.C");
the problem with GetOption will disappear.
The problem is connected with the new version of CINT that seems to be
confused by the interpreted class deriving from the compiled TSelector.

Rene Brun


On Fri, 15 Feb 2002, Jacek M. Holeczek wrote:

> 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