Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagebash
mkdir /scratch && cd /scratch
git clone https://github.com/JeffersonLab/hps-java && cd hps-java && git checkout online-recon-dev
mvn clean install -DskipTests
cd online-recon

# TheThis dir argument should be where you wantwill install the online recon scripts installed to your scratch dir... 
mvn install -DskipTests -DskipCheckstyle -DassembleDirectory=/scratch

# Optionally add script dir to path.
export PATH=/scratch/bin:$PATH

cd /scratch/

Running the Server and Client

...


Starting the Server 

You can launch the server now using a command like:

...

Instead of writing to your terminal, the server will create a log file at logs/server.log which you can tail to check the server's log messages.

The server cannot startup without a running ET ring present. The connection parameters for this can be specified in the server config file.

Client Command Line

Now you can connect to the running server using the online recon client:

Code Block
languagebash
hps-recon-client --host localhost -c station.prop

You can leave out the --host to have the server and client use the actual system name (usually equivalent to the result of the uname command on Linux).

An initial configuration can be provided to the client using the -c switch.

You can create a an initial file called station.prop and paste this into it which will usually have settings specific to the data format/year like detector name, run number, reconstruction steering file:

Code Block
languagebash
lcsim.detector=HPS-PhysicsRun2016-Pass2
lcsim.run=7798
lcsim.steering=/org/hps/steering/recon/PhysicsRun2016OnlineRecon.lcsim
lcsim.detector=HPS-PhysicsRun2016-Pass2

These settings are usually going to be specific to the year of the HPS data being read from the ET ring. The above are settings based on the 2016 physics reconstruction.

The client can also be used without a config file (the server may have been started with one to provide valid defaults).

Client Console

If you run the client without any command options, it will This opens the interactive online reconstruction console which can be used to configure, create, start/stop and remove stations that run the HPS physics event reconstruction on data from the ET ring.

Code Block
languagebash
hps-recon-client --host localhost

Whenever you see online> it means the command is run in the online reconstruction console, not the system shell (like bash).

...

You can set the connection settings to the server using the port and host commands, though the defaults should usually work fine.

If the server was started with a custom port or it is running with a particular hostname, this can be specified like:

Code Block
languagebash
online> port 12345
online> host myactualhostname

By default, output from the server read by the client is printed to the console, but it can be saved to a log file using commands such as:


Code Block
online> file client.log
online> append true


Configuration of the online reconstruction stations can be provided using the set command, for instanceset using:

Code Block
languagebash
# lcsim detector name for conditions
online>set lcsim.detector HPS-PhysicsRun2016-Pass2

# run number for conditions
online>set lcsim.run 7798

# lcsim steering resource
online>set lcsim.steering /org/hps/steering/recon/PhysicsRun2016OnlineRecon.lcsim

online>set lcsim.detector HPS-PhysicsRun2016-Pass2

...

You will need to test how many stations you can run simultaneously given the specific configuration being used and the number of plots being created/updated.The start command will start all inactive stations.

Stations that have been created but not started are in the inactive state. Stations which are inactive have no running system process and no registration in the plot aggregation engine that adds plots from different stations, so their plots will not be shown in the remote tree.

Inactive stations can be started using a command like:

Code Block
languagebash
online>start

...

Many of the online recon commands are similar in that they take no arguments (usually meaning all stations or all stations in a certain state) or a space-delimited list of station IDs as in the above example.

Once a station is started, it will process events from the ET ring or sit in wait mode waiting for more data to appear.


The status of the stations and the ET ring can be checked using:

Code Block
languagebash
online>status


Log data can be streamed from each station using its station ID as an argument:

Code Block
languagebash
online>log 1


When streaming log data from one of the stations you can hit any key on the keyboard to exit.


Stop all jobs:

Code Block
languagebash
online>log 1online>stop


Stop

...

stations by ID:

Code Block
languagebash
online>stop 1 2 3


Remove all inactive stations (active stations need to be stopped first before they are removable).

Code Block
languagebash
online>remove


Remove stations by ID:

Code Block
languagebash
online>remove 1 2 3


Save some plots to an AIDA file:

Code Block
languagebash
online>save myplots.aida

JAS3 can be used to view AIDA plots.


Save some plots to a ROOT file:

Code Block
languagebash
online>save myplots.root

You can use rootbrowse command to look at the plots saved in the ROOT format.


When you'll all done, shutdown the server using a command like:

...

This will wait 5 seconds before stopping and destroying all stations and cleanly shutting down the server and its connection to the ET ring.


Running a Command File

Code Block
languagebash
hps-recon-client --host localhost my.cmd



Example Scripts

x

Configuration Properties

x


Saving Plots

x


Creating and Accessing Plots using Remote AIDA

x


Using JAS3 to Access Remote AIDA Plots

x


Using a Java Webapp to Access Remote AIDA Plots

x

Running a Local ET Ring and Producer

Installing the ET Software

If you are running outside Hall B for testing purposes, the ET project is required for creating a local ET ring and using a producer to stream EVIO files onto it. (This is not needed for actual data runs in Hall B.)Installing the ET Software

Code Block
languagebash
# download and untar sources
https://coda.jlab.org/drupal/system/files/et-16.1.tgz
tar -zxvf et-16.1.tgz

# fix up build files (for some reason this is needed even with Python 2?)
cd et-16.1.GIT
2to3-2.7 -w ./coda.py ./SConstruct
autopep8 -i SConstruct
autopep8 -i coda.py

# build it
export CODA=`pwd`
scons install

# setup the environment (need to do this everytime you run)
export LD_LIBRARY_PATH=${CODA}/Linux-x86_64/lib
export PATH=${CODA}/Linux-x86_64/bin:${CODA}/Linux-x86_64/bin/examples:$PATH

The scons command may not be present in your environment (installation not covered here).

Running the ET Ring

If you are testing and not taking data from a run then you need to start your own ET server to provide EVIO events, Start the ET ring using a command like:

Code Block
languagebash
et_start -rb 8000000 -sb 8000000 -nd -p 11111 -f /tmp/ETBuffer -s 20000 -n 1000 -v -d

...

The other settings are mainly to try and improve the network performance of the tool by setting generous read/write buffers and using the no delay flag.

Experiment with the settings that seem to work best for your machine.

Event Producer

To do anything useful with thisthe ET ring, we need to stream HPS event data onto the ET ringit, which can be done using a command like:

...

The text file contains a list of EVIO files that should be compatible with the settings on the client/server (e.g. 2016 data for the example settings from above).

These settings need to match those of the ET start from above or you will not be able to connect.

TODO: Experiment with using broadcast mode to pickup any running ET rings.