The Waf-based build system for the toolkit is recently cleaned up and expanded to support user packages. For existing users this change should be invisible. This post gives the details of the change, what to do when updates to the build system are needed and how to use it for to build your own WCT-related packages.
Updates from the Wire-Cell team.
Wire-Cell and Bee have logos!
Previously posts have discussed Singularity containers which were introduced to provide easy development environments. Recently, Docker container descriptions have been developed to introduce Travis-CI continuous integration to the Wire-Cell Toolkit.
A new Singularity container is available which provides Kerberos clients, kx509 and other stuff that is needed to download DUNE data.
cout and its an error to use
As part of an enjoyable tutorial on applying machine learning techniques to LArTPC given by Kazu at BNL we were introduced to Singularity containers. There's been some WCT-related work in the past using Docker containers but that fizzled due to Docker's complexity and usage barrier (even if that leads to better build performance and features). It was immediately clear from Kazu's tutorial that Singularity reduces the usage barrier and would solve a big problem for the WCT team. Namely the difficulties we have in building FNAL's art and LArSoft (LS) software ecosystem on our computers. With Singularity containers we now have a way for just one person to suffer and let many others benefit.
The WCT configuration language Jsonnet allows to exploit software development patterns such as "don't repeat yourself" (DRY) and object inheritance. They are exploited to factor a configuration into layers so that it may, in total, serve many uses. This post describes how to override a parameter from a base object.
WCT is very configurable. It provides a way for the expert that wrote
the C++ component to provide sane defaults and a way that a user may
override or augment those defaults. WCT helps such intrepid users to
discover the defaults with the
ConfigDumper WCT app component.