This page is under revision. To get self-consistent documentation, see previous version (v89)
Event display / xtc file browser
...
Code Block |
---|
[user@psana0XXX myrelease] addpkg XtcEventBrowser V00-00-1718
[user@psana0XXX myrelease] scons
|
...
Run the program with the command 'xtcbrowser' and optionally give the input xtc files that you want to read as arguments. You can also browse to find files after launching the browser.
Code Block |
---|
[user@psana0XXX myrelease] xtcbrowser /reg/d/psdm/cxi/cxi80410/xtc/e55-r0581*
|
Description of the GUIs
files after launching the browser.
Code Block |
---|
[user@psana0XXX myrelease] xtcbrowser /reg/d/psdm/cxi/cxi80410/xtc/e55-r0581*
|
Description of the GUIs
Section |
---|
Column |
---|
Image Added
|
Column |
---|
Main window before any file selection. Click on "File Browser..." to select file(s). |
|
Section |
---|
Column |
---|
Image Added
|
Column |
---|
Main window after a file has been selected. File name and file size is shown in the GUI. If the file is not too big, you can click the "Scan File(s)" button to get exact contents of the whole file. If the file is big, it's better to do a "Quick Scan" which will tell you all you need to know (except count number of events and calibration cycles). |
|
Section |
---|
Column |
---|
Image Added Image Added |
|
Image Removed
![](/download/thumbnails/96707576/xb_pyanactrl3.png?version=2&modificationDate=1299009013000&api=v2)
LCLS Xtc Event Browser
xtcbrowser will launch a GUI, the main browser. It allows you to browse for files, and to run a scan to see what's in the file. (Perhaps "scan" is not a good choice of word... it parses the xtc file and investigate what kind of data is there.)
...
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="965701201ff1e5ec-21da9ae0-435543ec-ad25916a-c5857db81c580deb0eb31868"><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 |
---|
lims = np.zeros((4,2),dtype="float")
plt.axes(a1)
plt.hold(True)
lims[0:2,:] = plt.ginput(2)
plt.axes(a2)
plt.hold(True)
lims[2:4,:] = plt.ginput(2)
|
| 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 declared a 4x2 array of zeros to start with, then fill it with ginput().
|
|
| | |
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 |
| | |