Hi Hannes, Please note that the result you are currently getting from h1.Draw are very likely to be wrong. h1.Draw("Event", "(abs(Etac-Eta2dsk)>0.1) && (Eta2dsk <99) && (Ncsc==1)"); currently make the following comparison (due to a bug related to the fact that there is only one element in Etac) (abs(Etac[0]-Eta2dsk[0])>0.1) && (Eta2dsk[0] <99) && (Ncsc==1) and (abs(Etac[1]-Eta2dsk[1])>0.1) && (Eta2dsk[1] <99) && (Ncsc==1) and since Etac[1] does not exist (sizeof(Etac)==Ncsc), you get a random result. If the bug was corrected (not trivial to do, so it will take a little bit before it is fixed), you would then have gottent ONLY the following test: (abs(Etac[0]-Eta2dsk[0])>0.1) && (Eta2dsk[0] <99) && (Ncsc==1) This is because in TTree::Draw when you use several arrays in the same expression, all unspecified indexes are varied together. This means that if you used: h1.Draw("Event", "(abs(Etac-Eta2dsk)>0.1) && (Eta2dsk <99) && (Ncsc==2)"); the following test would have been done: (abs(Etac[0]-Eta2dsk[0])>0.1) && (Eta2dsk[0] <99) && (Ncsc==2) (abs(Etac[1]-Eta2dsk[1])>0.1) && (Eta2dsk[1] <99) && (Ncsc==2) Anyway, since you specified that Etac has only one elements (Nscs==1), I assume that you meant to have the comparaisons: (abs(Etac[0]-Eta2dsk[0])>0.1) && (Eta2dsk[0] <99) && (Ncsc==1) and (abs(Etac[0]-Eta2dsk[1])>0.1) && (Eta2dsk[1] <99) && (Ncsc==1) In which case you should use the command: h1.Draw("Event", "(abs(Etac[0]-Eta2dsk)>0.1) && (Eta2dsk <99) && (Ncsc==1)"); You should find that there is no Event that meets this critiria on your sample file. Cheers, Philippe -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Hannes Sakulin Sent: Friday, August 16, 2002 5:54 AM To: roottalk@pcroot.cern.ch Subject: [ROOT] TTree::Scan() and TTree::Draw() selection different? Hello, I wanted to use TTree::Scan() to dump a few events that I had Drawn from a Tree. It seems that TTree::Draw() and TTree::Scan() use a different selection. While Draw() finds the events (in the example it is 1 event), Scan() does not find them. Is there any explanation for this? root [0] TFile f("gmt_1.root") root [1] h1.Draw("Event", "(abs(Etac-Eta2dsk)>0.1) && (Eta2dsk <99) && (Ncsc==1)") <TCanvas::MakeDefCanvas>: created default TCanvas with name c1 (Int_t)1 root [2] h1.Scan("Event", "(abs(Etac-Eta2dsk)>0.1) && (Eta2dsk <99) && (Ncsc==1)") ************************ * Row * Event * ************************ ************************ ==> 0 selected entries (Int_t)0 The behavior is the same in versions 3.02/07, 2.03/02, 3.03/07. You can find the Tree in ~hsakulin/public/gmt_1.root. Cheers, Hannes. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hannes Sakulin Institute for High Energy Physics, Vienna, Austria CERN / EP Phone: +41 22 767 7372 CH-1211 Geneva 23, Switzerland Fax: +41 22 767 8940 E-mail: Hannes.Sakulin@cern.ch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:07 MET