Hi Andre,
The problem has been indentified in TTreeFormula (not connected with
TCut).
The class does not expand correctly an array when more than 16 operators
"||" are defined in the same formula.
Thanks for reporting the problem.
Rene Brun
On Sat, 28 Apr 2001, Andre Holzner wrote:
> Hello,
>
> I think I came across a bug in root (if this has not been
> fixed yet), I'm using Version 3.00/06 12 March 2001
> from /afs/cern.ch/na49/library.4/ROOT/pro/rootsys/
> on RH6.1/i386.
>
> Here's test.C
>
> {
> nt = new TNtuple("ntuple","ntuple","x:y");
> nt->Fill(1.0,2.0);
>
>
> TString cut = "(x>0)";
>
> while (nt->Draw("y:x",cut,"goff")>0)
>
> {
> cut.Prepend("(x<0)||");
> cout << cut.Length() << endl;
> cout << cut << endl;
>
> }
>
> }
>
> i.e. cut is a string of n times (x<0) || ...
> and the last condition is (x>0) so the event
> in the ntuple should always be selected, the
> program should continue forever.
>
> However, it stops quite early:
>
> root [0] .x test.C
> 12
> (x<0)||(x>0)
> 19
> (x<0)||(x<0)||(x>0)
> 26
> (x<0)||(x<0)||(x<0)||(x>0)
> 33
> (x<0)||(x<0)||(x<0)||(x<0)||(x>0)
> 40
> (x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x>0)
> 47
> (x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x>0)
> 54
> (x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x>0)
> 61
> (x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x<0)||(x>0)
> root [1]
>
> When using a cut like 0||0||0||(x>0), I manage to get to
> longer strings (I stopped the program at about 500).
>
> Any ideas ?
>
>
> best regards & thanks for looking into this & sorry if this
> has been fixed already,
>
>
> André
>
>
> --
> ------------------+----------------------------------
> Andre Holzner | +41 22 76 76750
> Bureau 32 2-C13 | Building 32
> CERN | Office 2-C13
> CH-1211 Geneve 23 | http://wwweth.cern.ch/~holzner/
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:44 MET