Make signal shaping service available in Root
Convolution and deconvolution for the DUNE single-phase detector detectors is done with SignalShapingServiceDUNE. I would like to make this service available at the Root command line.
#1 Updated by David Adams over 3 years ago
- Status changed from New to Assigned
- Assignee set to David Adams
SignalShapingServiceDUNE has many features that cannot be parsed at the Root command line. I have introduced an interface dune/DuneInterface/SignalShapingService and made this a base class for SignalShapingServiceDUNE. I have not (yet) added service interface macros and so the fcl configuration of SignalShapingServiceDUNE is unchanged and the service cannot be accessed with ServiceHandle<SignalShapingService>. This can be added later.
SignalShapingServiceDUNE has template members for convolution and deconvolution and these cannot be inherited from the base. I add float and double interfaces for these methods to the interface and concerte classes.
DuneServiceAccess is modified to enable GetServicePointer<SignalShapingService> to return the SignalShapingServiceDUNE service.
I have verified all tests pass and committed these changes to dunetpc 7dcd326153df34be32ead8731704ea7dca0ce209.
#2 Updated by David Adams over 3 years ago
In order to use the convolution or deconvolution, one must have the correct size for signal vector. SignalShapingServiceDUNE makes use of the lardata utility SignalShaping which throws an exception if this size is not the same as that returned by the LArFFT service. The latter is not avilable in Root and would require some effort. I will add a method to SignalShapingService and SignalShapingServiceDUNE that returns that size.
SignalShapingServiceDUNE (and SignalShapingService) provide access to the SignalShaping utility for a given channel and that utility provides access to its response function, filter and convolution and deconvolution kernels. It would be nice to access these in Root but SignalShaping cannot be parsed because its template function definitions make use of ServiceHandle. We can probably work around that by protecting those with "#ifndef CLING". Gianluca would you object to me making that change?