knoepfel / wire-cell-toolkit

Toolkit for Liquid Argon TPC Reconstruction and Visualization

Home Page:https://wire-cell.bnl.gov/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wire-Cell Toolkit

Welcome to the Wire-Cell Toolkit source repository.

See http://wirecell.bnl.gov/ for documentation including user manual and news “blog”.

https://api.travis-ci.org/WireCell/wire-cell-toolkit.svg?branch=master

Installation

Wire-Cell Toolkit provides simple and automatic installation which gives you, the installer, some options.

External software dependencies

The WCT dependency tree:

wct-deps.png

Anything that the WireCellUtil package depends on is required. The rest are optional. Missing optional dependencies will cause the dependent WCT package to not be built.

Some external dependencies have explicit minimum required versions:

  • TBB (oneAPI) 2021.1.1
  • Boost 1.75.0

You may provide the necessary external software dependencies in a manner of your own choosing and some options include:

Developer Source

Developers check out master branch via SSH.

$ git clone git@github.com:WireCell/wire-cell-toolkit.git wct

User Source

Users typically should build a release branch, either the tip or a tagged release on that branch. Tagged releases are shown on the this GitHub release page.

Users may also anonymously clone in the usual way:

$ git clone https://github.com/WireCell/wire-cell-toolkit.git wct

Configuring the source

On well-behaved systems, configuring the source may be as simple as:

$ ./wcb configure --prefix=/path/to/install

Software dependencies which can not automatically be located in system areas or via pkg-config can be manually specified. For a list of options run:

$ ./wcb --help

Here is an example where some packages are found automatically and some need help and others are explicitly turned off:

$ ./wcb configure \
        --prefix=$HOME/dev/wct/install \
        --with-jsonnet=$HOME/opt/jsonnet \
        --with-root=no
...
Removing submodule "dfp" due to lack of external
Removing package "tbb" due to lack of external dependency
Removing package "root" due to lack of external dependency
Removing package "cuda" due to lack of external dependency
Configured for submodules: apps, cfg, gen, iface, img, pgraph, ress, sigproc, sio, util
'configure' finished successfully (5.683s)

Building

It is suggested to first build the code before running tests.

$ ./wcb -p --notests

Installing

To install the built toolkit and its configuration support files while still avoiding the tests do:

$ ./wcb -p --notests install

Optionally, the reference configuration and data files for one or more supported experiments may be installed by giving naming them with the --install-config option. A name matches a sub-directory under cfg/pgrapher/experiment/ or the special all name will install all.

$ ./wcb -p --notests --install-config=<name> install

Testing

Running the tests can take a while but should be run on new installations and after any significant development. The developers try not to leave broken tests so any test failure should be treated as important. However, some tests require proper environment to run successfully. In particular, tests need to find Wire-Cell configuration and the shared libraries of the external software dependencies need to be located. Below shows an example:

$ export WIRECELL_PATH=$HOME/dev/wct/wire-cell-data:$HOME/dev/wct/wire-cell-toolkit/cfg
$ export LD_LIBRARY_PATH=$HOME/dev/wct/install/lib:$HOME/opt/jsonnet/lib
$ ./wcb -p --alltests
...
execution summary 
  tests that pass 83/83
    ... 
  tests that fail 0/83 
'build' finished successfully (15.192s)

Release management

To make releases, the above details are baked into two test scripts make-release.sh and test-release.sh. See comments at the top of each for how to run them. These scripts can be used by others but are meant for developers to make official releases.

Meta

A new wcb build script is made from waf source via:

$ cd waf-tools
$ ./refresh-wcb -o /path/to/wire-cell-toolkit/wcb
$ cd /path/to/wire-cell-toolkit/
$ git commit -am "update wcb" && git push

About

Toolkit for Liquid Argon TPC Reconstruction and Visualization

https://wire-cell.bnl.gov/


Languages

Language:C++ 95.4%Language:Jsonnet 4.2%Language:Python 0.3%Language:Shell 0.0%Language:JavaScript 0.0%Language:C 0.0%Language:Cuda 0.0%Language:Makefile 0.0%