# ruby-root testsuite # port of the original $ROOT/ntuple.C tutorial # (20/01/2004) --elathan gBenchmark = TBenchmark.new.Start("ntuple1") # Connect ROOT histogram/ntuple demonstration file # generated by example hsimple.C. f1 = TFile.new("hsimple.root") # Create a canvas, with 4 pads c1 = TCanvas.new("c1","The Ntuple canvas",200,10,700,780) pad1 = TPad.new("pad1","This is pad1",0.02,0.52,0.48,0.98,21) pad2 = TPad.new("pad2","This is pad2",0.52,0.52,0.98,0.98,21) pad3 = TPad.new("pad3","This is pad3",0.02,0.02,0.48,0.48,21) pad4 = TPad.new("pad4","This is pad4",0.52,0.02,0.98,0.48,1) pad1.Draw pad2.Draw pad3.Draw pad4.Draw # Change default style for the statistics box gStyle.SetStatW(0.30) gStyle.SetStatH(0.20) gStyle.SetStatColor(42) # Display a function of one ntuple column imposing a condition # on another column. pad1.cd pad1.SetGrid pad1.SetLogy pad1.GetFrame.SetFillColor(15) ntuple = f1.Get("ntuple").as("TNtuple") ntuple.SetLineColor(1) ntuple.SetFillStyle(1001) ntuple.SetFillColor(45) ntuple.Draw("3*px+2","px**2+py**2>1") ntuple.SetFillColor(38) ntuple.Draw("2*px+2","pz>2","same") ntuple.SetFillColor(5) ntuple.Draw("1.3*px+2","(px^2+py^2>4) && py>0","same") pad1.RedrawAxis # Display the profile of two columns # The profile histogram produced is saved in the current directory with # the name hprofs pad2.cd pad2.SetGrid pad2.GetFrame.SetFillColor(32) ntuple.Draw("pz:px>>hprofs","","goffprofs") hprofs = gDirectory.Get("hprofs").as("TProfile") hprofs.SetMarkerColor(5) hprofs.SetMarkerSize(0.7) hprofs.SetMarkerStyle(21) hprofs.Fit("pol2") # Get pointer to fitted function and modify its attributes fpol2 = hprofs.GetFunction("pol2") fpol2.SetLineWidth(4) fpol2.SetLineColor(2) # Display a scatter plot of two columns with a selection. # Superimpose the result of another cut with a different marker color pad3.cd pad3.GetFrame.SetFillColor(38) pad3.GetFrame.SetBorderSize(8) ntuple.SetMarkerColor(1) ntuple.Draw("py:px","pz>1") ntuple.SetMarkerColor(2) ntuple.Draw("py:px","pz<1","same") # Display a 3-D scatter plot of 3 columns. Superimpose a different selection. pad4.cd ntuple.Draw("pz:py:px","(pz<10 && pz>6)+(pz<4 && pz>3)") ntuple.SetMarkerColor(4) ntuple.Draw("pz:py:px","pz<6 && pz>4","same") ntuple.SetMarkerColor(5) ntuple.Draw("pz:py:px","pz<4 && pz>3","same") l4 = TPaveText.new(-0.9,0.5,0.9,0.95) l4.SetFillColor(42) l4.SetTextAlign(12) l4.AddText("You can interactively rotate this view in 2 ways:") l4.AddText(" - With the RotateCube in clicking in this pad") l4.AddText(" - Selecting View with x3d in the View menu") l4.Draw c1.cd c1.Update gStyle.SetStatColor(19) gBenchmark.Show("ntuple1") gApplication.Run