Bug #1083

filter::ChannelFilter should be made into a service

Added by Brian Rebel about 10 years ago. Updated almost 4 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:
(Total: 6.00 h)
Spent time:
Occurs In:


Currently is it just an object that can be made anywhere. In time, when bad channels are kept in a database with different validity ranges, that information should be gotten on a run by run basis, ie from a service.


Support #10366: Move ChannelStatus service interface into a non-DB place and namespaceClosedGianluca Petrillo

Bug #10381: Event display uses IChannelStatusService in a non-interoperable wayClosed

Associated revisions

Revision 27928f02 (diff)
Added by Gianluca Petrillo over 5 years ago

Introducing channel status (formerly channel filtering) as a service (issue #1083)

The name of the service implementation is transient, it will become SimpleChannelStatusService


#1 Updated by Brian Rebel almost 9 years ago

  • Status changed from New to Accepted

#2 Updated by Erica Snider over 7 years ago

  • Project changed from LArSoft to LArSoft cvs (legacy site)

#3 Updated by Marc Mengel over 6 years ago

  • Project changed from LArSoft cvs (legacy site) to LArSoft

#4 Updated by Lynn Garren over 6 years ago

  • Assignee set to Gianluca Petrillo

#5 Updated by Gianluca Petrillo over 5 years ago

  • % Done changed from 0 to 100

A filter::ChannelFilterProvider (service provider) and a filter::ChannelFilter Service (art interface) interface are provided in feature branch feature/Issue1083 in larevt.
An implementation (filter::SimpleChannelFilter and filter::SimpleChannelFilterProvider) with unit test is provided.
Also, FHiCL file configurations for Bo, ArgoNeuT and MicroBooNE are provided (Filters/channelfilter_bo.fcl, Filters/channelfilter_argoneut.fcl and Filters/channelfilter_microboone.fcl respectively), although the latter two should be moved into argoneutcode and uboonecode.
A (trivial) configuration file is provided for DUNE as lbne/Utilities/channelfilter_dune.fcl in lbnecode, and the service is added to the standard service configuration.

The old ChannelFilter class has been reimplemented to rely internally on the service, but it will be deprecated, and therefore eventually removed.
Using the service in place of the old class takes a few changes in the code and it requires the addition of ChannelFilterService configuration.
Using the old ChannelFilter does not require changes in the code, but it still needs the addition of ChannelFilterService configuration.

The code in larevt (and only that) has been migrated to use the new service directly.

#6 Updated by Gianluca Petrillo over 5 years ago

  • Status changed from Accepted to Assigned

#7 Updated by Gianluca Petrillo over 5 years ago

  • % Done changed from 100 to 80

The outline of the solution, in branch feature/Issue1083 in larevt and lbnecode, has been accepted by the LArSoft Coordinators' Meeting (

Conversion of most of the code and of FHiCL configuration files still to come.

#8 Updated by Gianluca Petrillo over 5 years ago

Candidate code has been published by Brandon Eberly in

  • feature/Issue1083 branch on lardata
  • feature/eberly_channelfilter on lareventdisplay
  • feature/eberly_channelfilter on uboonecode

This code provides a DB implementation of the service, plus a MicroBooNE-specific variation of it.

The code has been presented on Sept. 22nd, 2015 at LArSoft Coordinators meeting .

The introduction of the new service mandates the update of all FHiCL files using ChannelFilter.

#9 Updated by Gianluca Petrillo over 5 years ago

  • Category set to Other

I have completed code review.
The proposed amendment was pushed in larevt as commit:6acbf11857ec81af41b65fc8d6d19de40d50ef83 , on branch feature/Issue1083.

The following actions have been taken (but keep reading...):

  • renamed GetFilter[Ptr]() into GetProvider[Ptr](); I aim to have this a LArSoft's standard
  • removed the references to database from the interface (including switching from DB-specific channel ID to LArSoft's)
  • removed Update() function from service provider interface
  • renamed SimpleChannelFilterXxx into SimpleChannelStatusXxxx
  • shipped ArgoNeuT configuration to argoneutcode
  • minor coding changes
Since then:
  • GetFilter[Ptr]() has been restored to be compatible with code from LArSoft v04_25_00 that might use it (commit:83f12a5c99c3b71f65663bb9b9bb644fe6685586); GetProvider[Ptr]() are the functions I recommend anyway
  • ArgoNeuT configuration has been moved back to larevt

#10 Updated by Gianluca Petrillo over 5 years ago

ChannelFilter class is deprecated.
All the code in LArSoft using that class has been updated to use IChannelStatusService.
Instructions on how to do that are in larevt/CalibrationDBI/Interface/IChannelStatusService.h (that for some funny reason does not show up in LArSoft Doxygen web page...).

ChannelFilter class has not been tagged with the [[deprecated]] attribute yet.
LArSoft would compile successfully if that were done.
On the other end, in uboonecode, dunetpc and argoneutcode some instances of ChannelFilter are known to persist.

#11 Updated by Gianluca Petrillo over 5 years ago

  • Status changed from Assigned to Resolved

All features have been merged in LArSoft v04_26_00 .

Setting up a two week time for feedback and complaints.

#12 Updated by Lynn Garren almost 5 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF