...
The main GUI. Allows you to browse for the files you want to inspect. Once you have selected files, click "Scan" to proceed.
After "Scan" has finished, a new window shows you what data is available in the file(s). Select the ones you're interested in.
When you select data for plotting, a pyana configuration file will be displayed. To proceed, save the configuration to file.
After the configuration file has been written, you have the options of editing it by hand, and running pyana. If you hit "Run pyana", another dialog will open with the run command. You can also edit this (e.g. add option -n 100 to run only 100 events), or click "OK" to run as is.
Image Removed An example plot of Once pyana has started running, another button will appear that allow you to quit the pyana job. Tune your configuration script as needed and run again.
Image Added
Image Added
Image Added Example plots: one event from CsPad with background subtraction and filter. Some beamline data plots: Beam energy and position, Gas detector energy measurements.
A few things to note about the different detectors:
...
MatLab | MatPlotLib | Comments |
---|
Loglog plot of one array vs. another Code Block |
---|
%
%
%
a1 = subplot(121);
loglog(channels(:,1),channels(:,2),'o')
xlabel('CH0')
ylabel('CH1')
a2 = subplot(122);
loglog(channels(:,3),channels(:,4),'o')
xlabel('CH2')
ylabel('CH3')
|
| Loglog plot of one array vs. another Code Block |
---|
import matplotlib.pyplot as plt
import numpy as np
a1 = plt.subplot(221)
plt.loglog(channels[:,0],channels[:,1], 'o' )
plt.xlabel('CH0')
plt.ylabel('CH1')
a2 = plt.subplot(222)
plt.loglog(channels[:,2],channels[:,3], 'o' )
plt.xlabel('CH2')
plt.ylabel('CH3')
|
| channels is a 4xN array of floats, where N is the number of events. Each column corresponds to one out of four Ipimb channels.
Note that the arrays are indexed with 1,2,3,4 in MatLab and 0,1,2,3 in MatPlotLib/NumPy/Python.
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1232a198ee71dc18-579f825f-488d406e-b8e3beb5-fdedbbaa17063fe779472baa"><ac:plain-text-body><![CDATA[Note also the use of paranthesis, array() in MatLab, array[] in MatPlotLib. | ]]></ac:plain-text-body></ac:structured-macro> |
test | test | Test |
array of limits from graphical input | array of limits from graphical input | |
Code Block |
---|
axes(a1)
hold on
lims(1:2,:) = ginput(2);
axes(a2)
hold on
lims(3:4,:) = ginput(2);
|
| Code Block |
---|
plt.axes(a1)
plt.hold(True)
limslista = plt.ginput(2)
plt.axes(a2)
plt.hold(True)
limslistb = plt.ginput(2)
limsa = np.array(limslista)
limsb = np.array(limslistb)
lims = np.hstack( [limsa, limsb] )
|
| In MatLab, lims is an expandable array that holds limits as set by input from mouse click on the plot (ginput). NumPy arrays cannot be expanded, so I've chosen to append to a python list first, then fill a NumPy array for the usage to look the same.
The exact usage of the lims array depends on where you place each limit. I think perhaps I've done it differently from the MatLab version. |
| | |
filter | filter | |
Code Block |
---|
fbool1 = (channels(:,1)>min(lims(1:2,1)))&(channels(:,1)<max(lims(1:2,1)))
fbool2 = (channels(:,2)>min(lims(1:2,2)))&(channels(:,2)<max(lims(1:2,2)));
fbool = fbool1&fbool2
loglog(channels(fbool,1),channels(fbool,2),'or')
fbool3 = (channels(:,3)>min(lims(3:4,3)))&(channels(:,3)<max(lims(3:4,3)))
fbool4 = (channels(:,4)>min(lims(3:4,4)))&(channels(:,4)<max(lims(3:4,4)));
fbool = fbool3&fbool4
loglog(channels(fbool,3),channels(fbool,4),'or') |
| Code Block |
---|
fbools0 = (channels[:,0]>lims[:,0].min())&(channels[:,0]<lims[:,0].max())
fbools1 = (channels[:,1]>lims[:,1].min())&(channels[:,1]<lims[:,1].max())
fbools = fbools0 & fbools1
fbools2 = (channels[:,2]>lims[:,2].min())&(channels[:,2]<lims[:,2].max())
fbools3 = (channels[:,3]>lims[:,3].min())&(channels[:,3]<lims[:,3].max())
fbools = fbools2&fbools3
|
| Comment |
| | |