Event browser for Xtc files
Xtc is the online data format. For a faster look at the data, we need a quick tool to make simple analysis plots from the xtc data.
Xtc file reader: xtcsummary.py
Text output listing the contents of an xtc file.
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 |
|
---|---|---|---|
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') |
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. |
]]></ac:plain-text-body></ac:structured-macro> |
test |
test |
Test |
|
axes(a1) hold on lims(1:2,:) = ginput(2); 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') axes(a2) hold on lims(3:4,:) = ginput(2); 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') |
plt.axes(a1) plt.hold(True) limslista = plt.ginput(2) # list: (x0,y0),(x1,y1) plt.axes(a2) plt.hold(True) limslistb = plt.ginput(2) # list: (x2,y2),(x3,y3) limsa = np.array(limslista) #[ x0 y0 # x1 y1 ] limsb = np.array(limslistb) #[ x2 y2 # x3 y3 ] lims = np.hstack( [limsa, limsb] ) # [ x0 y0 x2 y2 = [ ch0 ch1 ch2 ch3 ] # x1 y1 x3 y3 ] # now each column corresponds to one channel. 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 |
In MatLab, |