Event browser for Xtc files
This page summarizes initial attempts at an event browser or simple plotting tool for Xtc files that should be easy to use.
Xtc file reader: xtcsummary.py
Text output listing the contents of an xtc file. Similar to pyxtcreader, but instead of listing all datagrams, it loops through and prints only a summary.
Usage
xtcsummary.py <filename(s)>
Analysis with pyana
Pyana is already a complete tool for analyzing xtc files. The user needs to write some code in python to load the data of interest. (We should provide more examples). Matplotlib is suitable for plotting in the pyana framework.
Plotting with MatPlotLib. A comparison with MatLab.
MatLab |
MatPlotLib |
Comments |
---|---|---|
Loglog plot of one array vs. another % % % 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 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. |
test |
test |
Test |
array of limits from graphical input |
array of limits from graphical input |
|
axes(a1) hold on lims(1:2,:) = ginput(2); axes(a2) hold on lims(3:4,:) = ginput(2); |
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, |
|
|
|
filter |
filter |
|
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') |
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 |
|
|
|