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.
Updates on 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.
In WCT we try to follow the mantra "everything is a component". One corollary to that is we try to avoid hard-wiring dependencies by having functionality accessed by hard-wired construction of concrete classes. The various classes having to do with responses suffered from not being available as components. This led to the entire toolkit having hard-wired behavior which hampers support for multiple detectors. This post describes some recent steps to fix this problem.
A powerful new idiom has been developed to simplify developing Jsonnet configuration files for Wire-Cell toolkit's Pgrapher app component.
The Wire Cell Toolkit is based on functional components which can be used as arbitrary "tools" (in the Gaudi sense of the word). But, they can also composed together following the paradigm of data flow programming (DFP). Each component thus becomes a node (aka "vertex") in a graph joined to other nodes via edges that represent the transfer of data from an output port of one to the input port of the other. A new way to perform this execution has been added to WCT in the form of the Pgrapher app.