Data Acquisition System - DAQ
This page assumes you have a terminal on extlw-lxs1. If you are not at this computer - ie in the control room - SSH first.
ssh -X extlw-lxs1 -l atfopr
- Up and Running? - If not Restart
- Using The LW GUI
- Manual Control Using Python Programs
- How to access specific hardware
- Data Structure
Up and Running? - If not Restart
cd extlw
source lwprofile
cd run
./extlw.stop
...wait a bit here...
./extlw.start
...wait some more...
screen -r will show you three running screen sessions that the above script should start. These are the EPICS ioc - lwioc, a pulse by pulse simple processing script - lwpyproc and the temperature monitoring software - lwpytemp.
screen -r
...see a list of screens
screen -r 1903.lwpyprocess (for example - different PID each time..)
If everything is working ok, this should update a counter with each pulse. If it is not or it's crashed seek help!
Ctrl A Ctrl D
to diconnect from the screen - don't kill the process or the terminal window when viewing or you'll kill it!
Using The LW GUI
Data acquisition is ideally done through the EDM graphical user interface. From opening a terminal:
cd extlw/
source lwprofile
cd run
edm -x extlw
Manual Control Using Python Programs
Comments are shown indicated by '#'. Everything after the '#' is not programming.
cd extlw/
source lwprofile
cd run
pylab
ls
All LW python scripts begin with 'lw'. The most common ones you'll need are:
File |
Purpose |
lwAcq.py |
Acquire data and write to disk |
lwAna.py |
Load a data file and do some analysis and plotting |
In each case when pylab is running import the file by name without the .py extension. If you then type the name of the file followed by a '.' then press tab, the contents of it will be shown. The first few starting with capital letters are the classes within the file or 'module'. Typically, the repeat of the file name is the one you want. Create an instance of it to proceed. E.g.
- import lwAcq
- lwAcq. # press tab spews out contents here
- a = lwAcq.Acq()
This returns an error as it requires some information to start with. To get help on all classes, simply type them out followed by a questions mark:
- lwAcq.Acq? #use up and down arrows to look through help, then press 'q' to exit back to normal
- a = lwAcq.Acq('log')
- a. #press tab here to see options - capital ones are methods, small letters are objects
- a.AcquireN(10) # acquires 10 machine pulses
- a.AcquireN(3) # acquires 3 machine pulses and appends to same data file - one file per class instance
- a.CloseAcq() # close file to further writing
To read data in the most basic way us lwData in pylab
- import lwData
- c = lwData.Data()
- c.Read('../dat/raw/filename.dat')
- c.data.keys() # shows you all the recorded variables
- c.data['cherenkov']
The last line prints out all the data. Perhaps more usefully, assign it to a variable. E.g.
- ydata = c.data['cherenkov']
- ydata = c.data['chaver'] # vertical chamber position
- plot(xdata,ydata) # plottin is easy!
- clf() # clears figure - otherwise new graph will be on top of old one
- plot(xdata,ydata,'.') # plot points only and not line
How to access specific hardware
From extlw-lxs1 use the following predefined shortcuts or use their names using another application (below shortcut minus 'rd'.
rdextlw-win1 |
Remote desktop to windows 1 |
Laser Control |
rdextlw-win2 |
Remote desktop to windows 2 |
Dead |
rdextlw-win3 |
Remote desktop to windows 3 |
Chamber Control ONLY |
rdextlw-win4 |
Remote desktop to windows 4 |
IP Movers, OTR, Laser energy Meter |
rdextlw-win5 |
Remote desktop to windows 5 |
General Multipurpose |
Each should have compiled labview executables running for the various equipment. This
should be in the startup folder in the start menu or at the very least on the desktop.
Data Structure
Data is recorded in ASCII text files with the extension '.dat'. Filenames are of the format YYYYMMDD_HHMM_suf.dat, where 'suf' is a suffix denoting the purpose of the data file.
Suffix |
Purpose |
lws |
Laser-wire scan of any kind |
otr |
OTR data of any kind |
log |
Data that is not specifically as a scan |
pos |
A single sample of data for positions |
tst |
A file used for testing purposes |
tmp |
Temperature data |
ped |
ADC data for pedestal |
eg. 20121201_1106_lws.dat
Data structure consists of
token 1 > s
token 2 > s
token 3 > s(array)
token 1 > s
token 2 > s
token 3 > s
etc
where s is a sample for that token - this can be a single number or array. For each sample, all tokens are recorded on a new line. Values are separated by a single space ' '. eg: 'cbpmamp> 2031' or cbpmx> 123 32 4245 432 ....'.
This data can be cleverly searched in the command line using egrep (extended grep).
egrep somestring filename.dat
where string is typically a variable name:
- egrep '\<cherenkov\>' 20120406_0026_tst.dat
- cherenkov> 215.0
- cherenkov> 218.0
- cherenkov> 214.0
- cherenkov> 213.0