I have an issue where my list object gets randomly deleted. I fill a np.array of objects (RooCurves) that are taken from canvas in a root file using GetPrimitives()
in a loop. I when I check to see if the object is there soon after the loop as ended it’s there and everything is fine. But, after going through a second loop that does something similar, when I check to see if my first list of objects is there it seems to be deleted (returns [None]).
def readSamples(INFILE):
infile = open(INFILE,"r")
SAMPLES=[[],[]]
LAST_PROCESS=""
for line in infile:
line=line.rstrip()
line=line.lstrip()
line=line.split("#")[0]
if len(line)<1 : continue
if "%PROCESS" in line :
LAST_PROCESS=line.split("=")[1]
continue
if "%END" in line:
LAST_PROCESS=""
continue
if LAST_PROCESS=="preInj":
SAMPLES[0].append(line)
if LAST_PROCESS=="postInj":
SAMPLES[1].append(line)
return SAMPLES
INFILE = sys.argv[1]
samples = readSamples(INFILE)
#sig
canvas_sig = np.array([])
rc_sig = np.array([])
erc_sig = np.array([])
dataHist_sig = np.array([])
## no Sig
rc_nosig = np.array([])
for x in samples[0]:
file = ROOT.TFile(x,"OPEN")
canvas = file.Get("extrapolation").Clone()
rc = canvas.GetPrimitive("curve_diphoton5_fit_diphoton5_dataHist_extrapFitRange")
rc_nosig = np.append(rc_nosig,rc)
print "RC list: ",rc_nosig #Returns the pointer to the rooCurve
for y in samples[1]:
file = ROOT.TFile(y,"OPEN")
canvas = file.Get("extrapolation").Clone()
rc = canvas.GetPrimitive("curve_diphoton5_fit_diphoton5_dataHist_extrapFitRange")
erc = canvas.GetPrimitive("errorBand")
dataHist = canvas.GetPrimitive("dataHist")
canvas_sig = np.append(canvas_sig,canvas)
rc_sig = np.append(rc_sig,rc)
erc_sig = np.append(rc_nosig,erc)
dataHist_sig = np.append(dataHist_sig,dataHist)
print "RC list2: ",rc_nosig #Returns [None]
_ROOT Version:6.12/04
Platform: Not Provided
Compiler: Not Provided