..............................................................................
1. GENERAL
This is a test code for a monitor application under development. The code is
arranged in a client-server architecture, the two parts communicate through
a socket, i.e. the server runs in one pc and receives and displays the info
that the client sends to it, the client may run in a different pc and its
task is to process the data that the daq writes out.
The graphical user interface is arranged in one main panel to the left to
display plots that should be always visible, and a panel to the right
with multiple overlayed tabs, currently DAQ, Display, TDC, Chambers,
Status, Messages, Options. Also there are some buttons with basic functions,
Start, Exit, Pause, Print.
The following info is transmitted and displayed
. event time, run, index
. 8 status counters (#ofevents processed, #ofevents found with "NOTRIGGER",
"BadTrigger", "BadReadout", #of good pedestal and trigger events, #of
events found with "TdcOverflown", "BadTrack")
. 3d event display
. hist number of hits hit per event
hist energy per event
. hist number of hits hit per layer
hist energy per layer
. hist daq rate in Hz vs time
hist average pedestal vs time
hist number of channels read
. tdc time per chamber (8 histos)
track coordinates (8 histos)
The purpose of the test is first of all to check the code is running
smoothly. Then given the main framework is in place to get feedabck from
potential users on issues like what sort of histograms would be
useful/vital to have during a testbeam, what sort of output one would
like to have that can be accessed in more detail and in short time after
the end of a run? What is shown is adequate or not, what to add, what
to omit. Is the functionality transparent or error prone (how to install
and run, settings-options, buttons, etc)
For the current test the client transmits about 35 histos (only 23
displayed) every 100 events. For the real testbeam a transmission every
3 to 5 minutes is expected.
..............................................................................
2. HOWTO INSTALL
ROOT 4.02/04 or higher and LCIO 01-04 or higher should have been installed
in your system.
The source of the code can be downloaded from:
www.hep.phy.cam.ac.uk/~gmavroma/temp/testcode.tgz
Get a sample of a run (Run100122) from last year's testbeam with a couple
of thousands events, just to test that the code is running, from:
www.hep.phy.cam.ac.uk/~gmavroma/temp/testsample.tgz
To install:
tar zxvf testcode.tgz;
tar zxvf testsample.tgz;
cd testcode;
make clean;
make;
..............................................................................
3. HOWTO RUN
Open 2 window terminals, one for the gui-server and the other for the
client. Go to directory testcode in both terminals.
In the gui-server, open the gui with ./gui_monitor/MyGUI&
then press button "Start" to open a socket where the client will connect
and send the data.
In the client window, start the client with the command
cd ./raw2cnc/raw2cnc_v00_01;
./bin/raw2cnc 100122 -threshold 0.5 -sample 10000;
where 0.5 is the cell threshold (in mips) applied
Then you should see the generated histograms and plots at the gui panels.
If you press "Pause" the updating is paused and you can invoke root
interactively i.e. you can click on histos, do fit, change scale, save it
and so on. You can continue updating with "Continue".
If you press "Print" the current plots are dumped in a postscript file
and gv is launched to open it. When the client is finished the socket is
closed, so in order to run again, say for another sequence of runs,
you should press "Start" and then start the client.
..............................................................................
4. INPUT - OUTPUT
The input to the client is the binary files that the daq produces, along
with the mapping files and tentative calibration constants.
At the end of each run the client saves the histos in a root file
with name MonitorXXXX.root, where XXXX is the run number, so that can be
checked later. It produces also an lcio file with name SelectRunXXXX.slcio
which contains clean and calibrated data ala mokka format for later
analysis.
The gui does not produce any persistent output per run. For every
transmission it dumps graphically the info on screen and also it saves
some key plots as gif files that can be accessed from a web page. You can
check this by pointing your web browesr to the file testbeam/testbeam.html
under directory testcode, then click "Monitor" and if the gui is running
you should see the plots updating accordingly every xxx seconds.
..............................................................................
5. HOWTO TRANSMIT BETWEEN 2 PC's
If you want to try to run the client in one pc (say pc_client) where it
will
process the data and transmit the info to a different pc (say pc_gui)
where
the gui is running to display it then do the following
in pc_gui
. install the gui only (the client+data are not needed here)
tar zxvf testcode.tgz;
cd testcode;
make clean;
make gui;
. find the pc's name or ip address
host $HOSTNAME;
. run the gui
./gui_monitor/MyGUI&;
then press button "Start"
in pc_client
. put the code and the data in a dir
tar zxvf testcode.tgz;
tar zxvf testsample.tgz;
. edit the file testcode/raw2cnc/raw2cnc_v00_01/package/inc/SocketClient.hh
line ... sock = new TSocket("localhost", 9097); In place of localhost
put the name or ip address of pc_gui
. then install
cd testcode;
make clean;
make;
. run the client
cd ./raw2cnc/raw2cnc_v00_01;
./bin/raw2cnc 100122 -threshold 0.5 -sample 10000;
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<