Search/Navigation:
Related:
SLAC/EPP/HPS Public
Jefferson Lab/Hall B/HPS Run Wiki
S30XL-LESA/LDMX
...
Code Block | ||
---|---|---|
| ||
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
...
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.
Now you can connect to the running server using the online recon client:
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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).
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
# 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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
online>status |
Log data can be streamed from each station using its station ID as an argument:
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
online>log 1online>stop |
Stop
...
stations by ID:
Code Block | ||
---|---|---|
| ||
online>stop 1 2 3 |
Remove all inactive stations (active stations need to be stopped first before they are removable).
Code Block | ||
---|---|---|
| ||
online>remove |
Remove stations by ID:
Code Block | ||
---|---|---|
| ||
online>remove 1 2 3 |
Save some plots to an AIDA file:
Code Block | ||
---|---|---|
| ||
online>save myplots.aida |
JAS3 can be used to view AIDA plots.
Save some plots to a ROOT file:
Code Block | ||
---|---|---|
| ||
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.
Code Block | ||
---|---|---|
| ||
hps-recon-client --host localhost my.cmd |
Example Scripts
x
Configuration Properties
x
Saving Plots
x
x
x
x
Running a Local ET Ring and Producer
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 | ||
---|---|---|
| ||
# 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).
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 | ||
---|---|---|
| ||
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.
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.