Hello,
I am attempting to create a simple TGraph of information from a root file. All the PyROOT demos work appropriately and I am essentially attempting to recreate the graph.py demo. However, when I run my code from the command line as:
python Plot.py
The resulting canvas is blank. If I run the code from the interpreter, the canvas is again blank until I ‘quit’, due to the piece of code at the end of my Plot.py file to keep the canvas from disappearing once the code was executed. After I ‘quit’ the code, then the canvas is filled with the TGraph I intended to plot. It also works if I remove the code from the function definition and simply execute the file from the interpreter with execfile(). Below is the code I have:
def fileTimePlots(path, Act, Eng):
L = []
X = []
fname = path + "/INFO/Activation_Scalers.txt"
with open(fname,"r") as f:
line1 = int(f.readline().strip().split()[-1])
line2 = int(f.readline().strip().split()[-1])
T0 = line1-line2
fname = path + "/DATA/gamma/" + "GammaData_{}_{}MeV.root".format(Act.replace("_",""), Eng)
tfile = ROOT.TFile(fname)
ttree = tfile.fileInfo
for ev in ttree:
L.append((datetime.strptime((ev.DateTime).rstrip('\x00'),"%Y%m%d.%H%M%S")-datetime(1970,1,1)).total_seconds())
L.sort()
L = [int(T-T0) for T in L]
x = array('i', L)
for key in tfile.GetListOfKeys():
if key.GetName() != "fileInfo":
X.append(int((key.GetName()).split("_")[3]))
y = array('i',X)
n = len(L)
print x
print y
gr = ROOT.TGraph(n,x,y)
gr.SetMarkerStyle(20);
gr.SetMarkerSize(.6);
gr.Draw("ZPA")
I am trying to understand why the TGraph does not appear when this function is run.
I was able to get the same behavior from the graph.py tutorial by adding
## wait for input to keep the GUI (which lives on a ROOT event dispatcher) alive
if __name__ == '__main__':
rep = ''
while not rep in [ 'q', 'Q' ]:
rep = raw_input( 'enter "q" to quit: ' )
if 1 < len(rep):
rep = rep[0]
and then running the graph.py from the command line with ‘python graph.py’. There again, the canvas was blank.
I am wanting to call this function from a gui, and see the resulting plot. I have checked that all the data in the arrays is correct, but there must be some pythonic issue that I don’t understand that keeps the TGraph from actually plotting.
Thank you.
ROOT Version: 6.14.06
Platform: OSX 10.14
Compiler: Not Provided