searches the beginning of a channel's waveform to determine baselineBaseline finder searches for a (possibly) moving baseline DC offset in pulse data. It does this by taking a moving average (pre_samps before and post_samps after) for those points where the sample amplitude within the full average window is less than max_amplitude (or max_sum_amplitude) More...
#include <BaselineFinder.hh>
Public Member Functions | |
int | Initialize () |
Initialize the module before starting a run. Return 0 if no error. | |
int | Finalize () |
Finalize state after a run has processed. Return 0 if no error. | |
int | Process (ChannelData *chdata) |
Process a single channel in a single trigger. Return 0 if no error. | |
Static Public Member Functions | |
static const std::string | GetDefaultName () |
Public Attributes | |
bool | fixed_baseline |
bool | linear_interpolation |
int | segment_samps |
int | min_valid_samps |
double | max_sigma |
double | max_sigma_diff |
double | max_mean_diff |
int | avg_samps |
double | max_sigma_factor |
double | pulse_threshold |
int | cooldown |
int | pre_cooldown |
double | max_amplitude |
max amplitude for sample to be part of baseline | |
double | max_sum_amplitude |
max_amplitude for sum channel | |
double | signal_begin_time |
position to start searching for baseline | |
int | pre_samps |
samples before point to average | |
int | post_samps |
samples after point to average | |
bool | save_interpolations |
Save drift baseline interpolation regions as spe. | |
double | laserwindow_begin_time |
double | laserwindow_end_time |
bool | laserwindow_freeze |
Private Member Functions | |
int | FixedBaseline (ChannelData *chdata) |
int | DriftingBaseline (ChannelData *chdata) |
searches the beginning of a channel's waveform to determine baseline
Baseline finder searches for a (possibly) moving baseline DC offset in pulse data. It does this by taking a moving average (pre_samps before and post_samps after) for those points where the sample amplitude within the full average window is less than max_amplitude (or max_sum_amplitude)
The algorithm goes: 1) Find the highest sample in the time before signal_begin_time 2) search for a region which is pre_samps+post_samps long which has no sample below the max found in the last step - 2*max_amplitude Call this the original baseline. If no clean region is found before signal_begin_time, we fail and abort 3) Once a first guess at baseline is found, call that moving_base. From then on, the baseline is evaluated if all samples in a window are within max_amplitude of the last evaluated moving baseline. 4) For samples of large amplitude, the baseline is linearly interpolated from the nearest good points. 5) Finally we subtract the moving baseline from the signal and store it in the subtracted_waveform
Definition at line 36 of file BaselineFinder.hh.
int BaselineFinder::DriftingBaseline | ( | ChannelData * | chdata | ) | [private] |
pass_amp
Definition at line 93 of file BaselineFinder.cc.