Hi!

I am drawing two TGraphs (which work), then I want to draw the ratio between the curves in another pad. I get the ratio by evaluating (graph.Eval(i)) the curves at a number of points and then taking the ratio and storing that into another TGraph. The ratio-TGraph however I cant draw.

Here is the code (pyROOT):

def graph4(graph_vec):

c1 = r.TCanvas(“c1”,“Graphs”,700,700)

c1.cd()

p1 = r.TPad(“p1”,“p1”,0.,0.35,1.,1.)

p1.Draw()

p1.SetBottomMargin(0.001)

p1.cd()

p1.SetGrid()

p1.SetLogy()

gr1 = graph_vec[0]

gr2 = graph_vec[1]

gr1.SetLineColor(4)

gr1.SetMarkerColor(1)

gr1.SetMarkerStyle(8)

gr1.SetMarkerSize(0.8)

gr1.SetTitle("")

gr1.SetTitle("")

gr1.GetXaxis().SetTitle(“Eff_HS”)

gr1.GetXaxis().CenterTitle()

gr1.GetYaxis().SetTitle(“EFF_PU”)

gr1.GetYaxis().CenterTitle()

gr1.GetYaxis().SetRangeUser(0,1)

gr1.GetYaxis().SetTitleOffset(1.5)

gr1.GetXaxis().SetTickSize(0.)

gr1.Draw(“AP”)

gr2.SetMarkerColor(r.kRed)

gr2.SetMarkerStyle(33)

gr2.SetMarkerSize(0.8)

gr2.Draw(“P”)

#TLegend *leg = new TLegend(0.15,0.75,0.5,0.85)

#leg.AddEntry(gr1,“QGSP_BIC_HP”,“lp”)

#leg.AddEntry(gr2,“QGSP_BERT_HP”,“lp”)

#leg.Draw()

c1.cd()

p2 = r.TPad(“p2”,“p3”,0.,0.05,1.,0.3)#xmin,ymin,xmax,ymax

p2.Draw()

p2.SetTopMargin(0.001)

p2.SetBottomMargin(0.3)

p2.SetGrid()

##Ratio ##

p2.cd()

x = []

rat_vec=[]

for i in np.arange(0, 1, 0.1):

#print ('i = ', i )

if (graph_vec[1].Eval(i)) == 0:

rat_vec.append(1)

#continue

else:

rat_vec.append((graph_vec[0].Eval(i))/(graph_vec[1].Eval(i)))

x.append(i)

gr_ratio = r.TGraph( len(x), np.asarray(x), np.asarray(rat_vec) )

#gr_ratio.GetXaxis().SetLabelSize(0.075)

#gr_ratio.GetYaxis().SetLabelSize(0.075)

gr_ratio.SetLineColor(4)

gr_ratio.SetMarkerColor(1)

gr_ratio.SetMarkerStyle(8)

gr_ratio.SetMarkerSize(0.8)

gr_ratio.SetTitle("")

gr_ratio.SetTitle("")

gr_ratio.GetXaxis().SetTitle(“Eff_HS”)

gr_ratio.GetXaxis().CenterTitle()

gr_ratio.GetYaxis().SetRangeUser(0,1)

gr_ratio.GetYaxis().SetTitleOffset(1.5)

gr_ratio.GetXaxis().SetTickSize(0.)

gr_ratio.Draw(“AL”)

gr1.Draw(“AL”)

return c1, p2 , p1

Then in main…

def main ( …)

.

.

canv_rat1, pad_rat1, pad_rat2 = graph4(graph_vec)

canv_rat1.SaveAs (args.output_dir + ‘/’ + outputname + ‘_graph4.png’)

Some further info. If I draw one of the inital graphs it shows up in the lower pad. If I try and draw the ratio in a separate canvas it does not show.

Any thoughts about what is going wrong?

Thanks a lot!

All best,

Tom