St9bad_alloc when doing TTree::Draw

Hello

I’m just trying to draw some plots using TTree::Draw and hitting some memory problem. It appears that it depends on the size of available memory as the error occurs at different points depending on the machine.

I’m doing the following

def DelR(histo, chain , inserted, obj):
  varString= inserted+obj+"DeltaR"
  cutString= inserted+"N>0"+" && "+inserted+obj+"DeltaR<"+str(dRMax) +" && "+inserted+obj+"DeltaR>=0"

  entry = chain.Draw(varString+">>"+histo.GetName(),cutString)
  print "entry:", entry
  gPad.SetLogx()
  histo.GetXaxis().SetTitle("#Delta R (Log Scale)")

for inserted in listAOD:
  canvas=TCanvas()
  canvas.SetCanvasSize(600, 400)
  canvas.Divide(3,2)

  canvasNo=1
  plots=[]
  
  for obj in listAOD:
    canvas.cd(canvasNo)
    histoName="DeltaR_"+inserted+obj
    plot=TH1F(histoName, "DelR - "+inserted+obj, 100, Logbin(100,0.000000001, 10.))
    plots+=[plot]

    DelR(plot, chain, inserted, obj )
    plot.Draw("")
    
    canvasNo+=1

  canvas.Print(inserted+"DelR_"+FileSuffix+".eps")

Logbin just returns an array suitable for log binning.
I’m trying to plot 6 of these plots and I have 11000 events. At some point, I get

C++ exception caught: St9bad_alloc
C++ exception caught: St9bad_alloc
Traceback (most recent call last):
  File "../../rootMacro/DeltaRPlots.py", line 39, in ?
    DelR(plot, chain, inserted, obj )
  File "../../rootMacro/DeltaRPlots.py", line 18, in DelR
    entry = chain.Draw(varString+">>"+histo.GetName(),cutString)
TypeError: none of the 3 overloaded methods succeeded

and as I noted above, this doesn’t always happens at the same time but it is more like it needs more memory or something like that…

Is my code above leaking some memory or is it that this is the limit of what I can do on this machine?

Thanks for your help.

Akira

Hi,

The problem seems to come from the number of files I was reading. My data was spread over 11 files (each 5M). Now when I merged all of them and did the same plot, it runs super fast and no more memory problems…

So sorry for the noise but I hope the performance will improve with separate files.

Thanks
Akira