Extracts PMT activity as optical hits (recob::OpHit
).
More...
Classes | |
struct | Config |
Public Types | |
using | Parameters = art::ReplicatedProducer::Table< Config > |
Public Member Functions | |
ICARUSOpHitFinder (Parameters const &config, art::ProcessingFrame const &frame) | |
virtual void | produce (art::Event &, art::ProcessingFrame const &) override |
Private Types | |
using | FWInterfacedPedAlgo = opdet::factory::FWInterfacedIF< pmtana::PMTPedestalBase, ArtTraits > |
Private Member Functions | |
std::vector< sim::BeamGateInfo const * > | fetchBeamGates (art::Event const &event) const |
Optionally reads the beam gates from fBeamGateTag , empty if none. More... | |
std::vector< raw::OpDetWaveform > | selectWaveforms (std::vector< raw::OpDetWaveform > const &waveforms) const |
Returns a vector with copies of only the waveforms not in masked channels. More... | |
Private Attributes | |
art::InputTag const | fWaveformTags |
Input PMT waveform data product tags. More... | |
art::InputTag const | fBeamGateTag |
std::vector< unsigned int > const | fChannelMasks |
Sorted list of channels to skip. More... | |
float const | fHitThreshold |
Hit finding threshold. More... | |
bool const | fUseStartTime |
Whether to store start instead of peak time. More... | |
std::unique_ptr < calib::IPhotonCalibrator > | fMyCalib |
Storage for our own calibration algorithm, if any. More... | |
unsigned int const | fMaxOpChannel |
Number of channels in the detector. More... | |
calib::IPhotonCalibrator const * | fCalib = nullptr |
The calibration algorithm to be used (not owned). More... | |
pmtana::PulseRecoManager | fPulseRecoMgr |
std::unique_ptr < pmtana::PMTPulseRecoBase > const | fThreshAlg |
std::unique_ptr < FWInterfacedPedAlgo > const | fPedAlg |
Extracts PMT activity as optical hits (recob::OpHit
).
This module runs hit-finding algorithms, and is tailored to allow for an update of the hit finding parameters event by event.
This module is a branch of the standard LArSoft opdet::OpHitFinder
by Gleb Sinev, Ben Jones and others. That module itself is an interface to the hit finding mini-framework also in larana
, authored by Kazuhiro Terao.
That framework independently analyzes each waveform and performs hit finding using general timing and geometry information (from detinfo::DetectorClocks
and geo::GeometryCore
service providers), a threshold parameter and configurable algorithms for baseline evaluation, hit finding and calibration.
It is believed that the baseline of ICARUS PMT is remarkably stable in the short time, and it is conceivable to use a single steady value for many waveforms on each channel. Unfortunately the existing module is not suitable for a baseline that may change event by event or in time: the mini-framework does not explicitly allow this, and the module is not equipped with the necessary workarounds.
This module is a replica of LArSoft's, with the additional workarounds needed to allow for a baseline learnt from an external source and changing event by event.
The configuration parameters are intentionally left the same as in opdet::OpHitFinder
, with a few exceptions and additions where needed.
InputModule
(input tag): data product with the optical waveforms to analyze.GenModule
(input tag, mandatory): data product with the beam gate (either generated or from trigger information).UseStartTime
(flag, default: false
): store the start time in the hit instead of the peak time.ChannelMasks
(list of channel numbers, default: empty): skip waveforms on the channels specified in this list.HitAlgoPset
(table, mandatory): configuration of the hit finding algorithm; its content depends on the algorithm itself, but the following elements are nonetheless mandatory:Name
(text): algorithm name; the supported algorithms are hard-coded by name.PedAlgoPset
(table, mandatory): configuration of the pedestal algorithm; its content depends on the algorithm itself, but the following elements are nonetheless mandatory:Name
(text): algorithm name; the supported algorithms are hard-coded by name.HitThreshold
(real): hit threshold [ADC counts]UseCalibrator
(flag, default: false
): if set, use the calibration service configured in the job; otherwise, use the simpler calibration configured in this module (see the following parameters).AreaToPE
(flag): whether the conversion factor goes from hit area (total ADC) or from amplitude (ADC), to photoelectrons.SPEArea
(real): area or amplitude (depending on AreaToPE
) of the response signal to a single photoelectron.SPEShift
(real, default: 0
)Noticeable differences with LArSoft's opdet::OpHitFinder
configuration:
InputModule
is a complete input tag and no list of instance names can be specified.In order to support the algorithms that require an event-specific configuration, the module is not shared. While the algorithms could be written to keep track of different event configurations, at the time the algorithms are executed on a waveform they have no mean to know which event the waveforms belong to. Rather than writing complex workarounds on this problem, the module is replicated so that there are multiple algorithms (and multiple managers) but each of them sees an event at a time, in a way that the module (replica) can predict.
Definition at line 202 of file ICARUSOpHitFinder_module.cc.
|
private |
Definition at line 312 of file ICARUSOpHitFinder_module.cc.
using opdet::ICARUSOpHitFinder::Parameters = art::ReplicatedProducer::Table<Config> |
Definition at line 280 of file ICARUSOpHitFinder_module.cc.
|
explicit |
Definition at line 484 of file ICARUSOpHitFinder_module.cc.
|
private |
Optionally reads the beam gates from fBeamGateTag
, empty if none.
Definition at line 637 of file ICARUSOpHitFinder_module.cc.
|
overridevirtual |
Definition at line 567 of file ICARUSOpHitFinder_module.cc.
|
private |
Returns a vector with copies of only the waveforms not in masked channels.
Definition at line 653 of file ICARUSOpHitFinder_module.cc.
|
private |
Data product with beam gates.
Definition at line 291 of file ICARUSOpHitFinder_module.cc.
|
private |
The calibration algorithm to be used (not owned).
Definition at line 305 of file ICARUSOpHitFinder_module.cc.
|
private |
Sorted list of channels to skip.
Definition at line 293 of file ICARUSOpHitFinder_module.cc.
|
private |
Hit finding threshold.
Definition at line 294 of file ICARUSOpHitFinder_module.cc.
|
private |
Number of channels in the detector.
Definition at line 302 of file ICARUSOpHitFinder_module.cc.
|
private |
Storage for our own calibration algorithm, if any.
Definition at line 300 of file ICARUSOpHitFinder_module.cc.
|
private |
Definition at line 316 of file ICARUSOpHitFinder_module.cc.
|
private |
Definition at line 314 of file ICARUSOpHitFinder_module.cc.
|
private |
Definition at line 315 of file ICARUSOpHitFinder_module.cc.
|
private |
Whether to store start instead of peak time.
Definition at line 295 of file ICARUSOpHitFinder_module.cc.
|
private |
Input PMT waveform data product tags.
Definition at line 290 of file ICARUSOpHitFinder_module.cc.