Signal processing now in component form
Following in the footsteps of the recently announced porting of its functionality from the prototype to the toolkit the signal processing, is now usable in the form of WCT components. This is important as it paves the way to embedding the signal processing in other applications or frameworks, notably LArSoft.
What are WCT Components? They are simply C++ classes which:
- inherit from a WCT Interface base class
- give registration code in a WCT plugin library
- optionally, make use of WCT Configuration.
By developing code in the form of components we can strongly define its boundary in terms of data and configuration. This lets us test bits of code in well constrained ways and be confident that when these components are aggregated into larger applications, and possibly embedded into even larger ones, that they will function as expected.
The simplest way to run WCT components is with the wire-cell
command
line. This example will exercise the components related to the signal processing:
$ export WIRECELL_PATH=/path/to/cfg:/path/to/data $ wire-cell \ -V detector=uboone \ -V input=magnify-input.root \ -V output=magnify-output.root \ -c uboone/main/magnify-sigproc-magnify.jsonnet $ root -l magnify-output.root
Notes:
- The configuration in this example is subject to change
- You can browse the example configuration files and learn about Jsonnet.
- The job is configured with a "Magnify" file source and file sink component bookend the signal processing and the
input
andouput
configuration variables giving these files are "injected" from the command line. - You may find examples of "Magnify" ROOT files for input here.
- As usual, see the manual for installation and setup.