Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

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

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="b92d3400-c7c4-4ff6-ba16-70e5a96c611d"><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