![]() |
Diana Software
|
Optimum filter implemented with windowing and zeros. More...
Public Types | |
| enum | JitterMode { J_ABSMAX , J_LOCMAX , J_FIXED , J_NOJITTER } |
Public Member Functions | |
| QOptimumFilter (const Diana::QVector &ap1, const Diana::QVector &an, int maxJitter, bool useDiff=false, bool debugOn=false) | |
| constructor More... | |
| virtual | ~QOptimumFilter () |
| int | GetMaxJitter () const |
| double | GetCutOffFrequency () const |
| Diana::QVector | GetAveragePulse () const |
| get normalized average pulse More... | |
| Diana::QVector | GetAveragePulseEnergySpectrum () const |
| energy spectrum of the average pulse More... | |
| Diana::QVector | GetNoisePowerSpectrum () const |
| power spectrum of the original noise More... | |
| Diana::QVectorC | GetFilterFD () const |
| filter in the frequency domain More... | |
| Diana::QVector | GetFilterTD () const |
| kernel of the filter in the time domain More... | |
| Diana::QVector | GetFilteredNoise () const |
| expected filtered noise average power spectrum More... | |
| double | GetFilteredNoiseRMS () const |
| expected noise rms after the filter More... | |
| Diana::QVector | GetSNRFD () const |
| Get SNR as a function of frequency More... | |
| QError | Filter (const Diana::QVector &p) |
| filter. In case of failure an error is returned. More... | |
| const Diana::QVector & | GetFiltered () const |
| get filtered samples More... | |
| Diana::QVector | GetFilteredShifted () const |
| get filtered and shifted samples by fMaxPos More... | |
| int | GetShift () const |
| get shift of filter (max pos of avg pulse) More... | |
| QError | SetJitter (JitterMode mode, int start=0) |
| QError | Get (double &jitter, double &chi2, double &litude, double &integral, double &left, double &right) const |
| QError | GetHighSNRChi2 (const double &threshold, double &chi2) const |
| get chi^2 (mean 0, variance 1) restricting the DoF to frequencies with SNR > threshold More... | |
| QError | GetInterpolated (double &jitter, double &chi2, double &litude, double &integral, double &left, double &right) const |
| get values at interpolated chi^2 minimum. Three points around the minimum are used for a parabolic interpolation. if Filter()!=QERR_SUCCESS throws the error More... | |
| std::vector< double > | Get () const |
| Diana::QVector | GetFitFunction (const double jitter, const double a1) const |
Public Attributes | |
| std::vector< Diana::QVector > | fDebugVectors |
| std::vector< Diana::QVector > | fDebugSpectra |
Protected Member Functions | |
| QOptimumFilter (const Diana::QVector &ap1, const Diana::QVector &an) | |
| Diana::QVector | NormalizeVector (const Diana::QVector &vec) const |
| virtual QError | ManipulateInputs () |
| QError | BuildFilter () |
Protected Attributes | |
| QError | fCheckForFilteredSamples |
| QError | fCheckForBuiltFilter |
| double | fFilteredRMS1 |
| double | fFilteredAutoCorrelation |
| Diana::QVector | fAveragePulse1 |
| size_t | fSize |
| int | fMaxPos |
| int | fMaxJitter |
| bool | fDebugOn |
| bool | fUseDiff |
| Diana::QVectorC | fFilter1 |
Private Member Functions | |
| QError | Parabola (double xa, double xb, double xc, double ya, double yb, double yc, double &min, double &minpos) const |
Private Attributes | |
| Diana::QRealComplexFFT * | fTransformer |
| double | fCutOffFrequency |
| int | fAvgPulseHalfTimeToMax |
| int | fFilteredAveragePulseHalfWidth |
| double | fFilteredAveragePulseHalfWidthValueLeft |
| double | fFilteredAveragePulseHalfWidthValueRight |
| Diana::QVector | fAverageNoise |
| Diana::QVector | fAverageNoiseForChi2 |
| Diana::QVector | fAveragePulseEnergySpectrum |
| double | fAvgPulseIntegral1 |
| std::vector< Diana::QVectorC > | fAveragePulse1Shifted |
| Diana::QVector | fSNRFreq |
| Diana::QVector | fSNRNorm |
| size_t | fEffectiveFilterLength |
| Diana::QVector | fFilteredAverageNoise |
| Diana::QVector | fFilterTD |
| std::vector< bool > | fValidSample |
| Diana::QVector | fFiltered1 |
| Diana::QVectorC | fTransformedWaveform |
| int | fOptimumJitter |
Optimum filter implemented with windowing and zeros.
Definition at line 17 of file QOptimumFilter.hh.
| Enumerator | |
|---|---|
| J_ABSMAX | |
| J_LOCMAX | |
| J_FIXED | |
| J_NOJITTER | |
Definition at line 20 of file QOptimumFilter.hh.
| QOptimumFilter::QOptimumFilter | ( | const Diana::QVector & | ap1, |
| const Diana::QVector & | an, | ||
| int | maxJitter, | ||
| bool | useDiff = false, |
||
| bool | debugOn = false |
||
| ) |
constructor
| ap1 | Average pulse of comp. 1 |
| an | Average noise power spectrum : |
| diff | apply derivative filter to avoid boundary effects when ap does not return to the baseline. |
Definition at line 44 of file QOptimumFilter.cc.
References BuildFilter(), DianaThrow, err, fCheckForBuiltFilter, fDebugOn, fMaxJitter, fUseDiff, and QERR_SUCCESS.
|
virtual |
Definition at line 61 of file QOptimumFilter.cc.
References fTransformer.
|
protected |
Definition at line 16 of file QOptimumFilter.cc.
References an(), DianaThrow, err, fAverageNoise, fAveragePulse1, fCheckForBuiltFilter, fCheckForFilteredSamples, fSize, fTransformer, QERR_SIZE_NOT_MATCH, QERR_UNKNOWN_ERR, and QError::SetDescription().
|
protected |
Definition at line 227 of file QOptimumFilter.cc.
References ap, cos(), err, QCFirData::fAttDB, fAverageNoise, fAverageNoiseForChi2, fAveragePulse1, fAveragePulse1Shifted, fCheckForFilteredSamples, QCFirData::fCutoff, fCutOffFrequency, fDebugOn, fDebugSpectra, fDebugVectors, fEffectiveFilterLength, fFilter1, fFiltered1, fFilteredAutoCorrelation, fFilteredAverageNoise, fFilteredAveragePulseHalfWidth, fFilteredAveragePulseHalfWidthValueLeft, fFilteredAveragePulseHalfWidthValueRight, fFilteredRMS1, fFilterTD, QFir::Filter(), Filter(), QCFirData::fM, fMaxJitter, QCFirData::fMethod, fSize, fSNRFreq, fSNRNorm, fTransformer, fUseDiff, fValidSample, QFir::GetFilterReduction(), QFFT::GetWindow(), QCFirData::KayserBessel, QFFT::kSymmetric, ManipulateInputs(), QERR_SUCCESS, QERR_UNKNOWN_ERR, QError::SetDescription(), QFFT::WT_Cosinus, and QFFT::ZeroPad().
Referenced by QOptimumFilter(), and QOptimumShapeFilter::QOptimumShapeFilter().
| QError QOptimumFilter::Filter | ( | const Diana::QVector & | p | ) |
filter. In case of failure an error is returned.
Definition at line 69 of file QOptimumFilter.cc.
References diff, err, fCheckForFilteredSamples, fFilter1, fFiltered1, fSize, fTransformedWaveform, fTransformer, fUseDiff, QERR_SIZE_NOT_MATCH, and QERR_SUCCESS.
Referenced by BuildFilter(), MOptimumFilter::Do(), and QOptimumShapeFilter::QOptimumShapeFilter().
| std::vector< double > QOptimumFilter::Get | ( | ) | const |
Definition at line 564 of file QOptimumFilter.cc.
References fAverageNoiseForChi2, fAveragePulse1Shifted, fAvgPulseIntegral1, fCheckForFilteredSamples, fFiltered1, fOptimumJitter, fSize, fTransformedWaveform, and QERR_SUCCESS.
Referenced by GetInterpolated().
| QError QOptimumFilter::Get | ( | double & | jitter, |
| double & | chi2, | ||
| double & | amplitude, | ||
| double & | integral, | ||
| double & | left, | ||
| double & | right | ||
| ) | const |
Definition at line 506 of file QOptimumFilter.cc.
References err, fAverageNoiseForChi2, fAveragePulse1Shifted, fAvgPulseIntegral1, fCheckForFilteredSamples, fFiltered1, fFilteredAutoCorrelation, fFilteredAveragePulseHalfWidth, fFilteredAveragePulseHalfWidthValueLeft, fFilteredAveragePulseHalfWidthValueRight, fFilteredRMS1, fOptimumJitter, fSize, fTransformedWaveform, pow(), and QERR_SUCCESS.
Referenced by MOptimumFilter::Do().
|
inline |
get normalized average pulse
Definition at line 45 of file QOptimumFilter.hh.
References fAveragePulse1.
|
inline |
energy spectrum of the average pulse
Definition at line 48 of file QOptimumFilter.hh.
References fAveragePulseEnergySpectrum.
|
inline |
Definition at line 42 of file QOptimumFilter.hh.
References fCutOffFrequency.
| const Diana::QVector & QOptimumFilter::GetFiltered | ( | ) | const |
get filtered samples
Definition at line 91 of file QOptimumFilter.cc.
References DianaThrow, fCheckForFilteredSamples, fFiltered1, and QERR_SUCCESS.
Referenced by MOptimumFilter::Do(), and GetFilteredShifted().
|
inline |
expected filtered noise average power spectrum
Definition at line 60 of file QOptimumFilter.hh.
References fFilteredAverageNoise.
|
inline |
expected noise rms after the filter
Definition at line 63 of file QOptimumFilter.hh.
References fFilteredRMS1.
| Diana::QVector QOptimumFilter::GetFilteredShifted | ( | ) | const |
get filtered and shifted samples by fMaxPos
Definition at line 97 of file QOptimumFilter.cc.
References fMaxPos, and GetFiltered().
Referenced by MOptimumFilter::Do(), Fill(), if(), and QOptimumShapeFilter::QOptimumShapeFilter().
|
inline |
filter in the frequency domain
Definition at line 54 of file QOptimumFilter.hh.
References fFilter1.
|
inline |
kernel of the filter in the time domain
Definition at line 57 of file QOptimumFilter.hh.
References fFilterTD.
Referenced by if().
| QVector QOptimumFilter::GetFitFunction | ( | const double | jitter, |
| const double | a1 | ||
| ) | const |
Definition at line 585 of file QOptimumFilter.cc.
References fAveragePulse1.
Referenced by MCOFBiComponent::Do().
| QError QOptimumFilter::GetHighSNRChi2 | ( | const double & | threshold, |
| double & | chi2 | ||
| ) | const |
get chi^2 (mean 0, variance 1) restricting the DoF to frequencies with SNR > threshold
Definition at line 532 of file QOptimumFilter.cc.
References err, fAverageNoiseForChi2, fAveragePulse1Shifted, fCheckForFilteredSamples, fFiltered1, fOptimumJitter, fSNRNorm, fTransformedWaveform, QERR_OUT_OF_RANGE, and QERR_SUCCESS.
Referenced by MOptimumFilter::Do().
| QError QOptimumFilter::GetInterpolated | ( | double & | jitter, |
| double & | chi2, | ||
| double & | amplitude, | ||
| double & | integral, | ||
| double & | left, | ||
| double & | right | ||
| ) | const |
get values at interpolated chi^2 minimum. Three points around the minimum are used for a parabolic interpolation. if Filter()!=QERR_SUCCESS throws the error
Definition at line 105 of file QOptimumFilter.cc.
References err, fAverageNoiseForChi2, fAveragePulse1Shifted, fAvgPulseIntegral1, fFiltered1, fFilteredAutoCorrelation, fFilteredAveragePulseHalfWidth, fFilteredAveragePulseHalfWidthValueLeft, fFilteredAveragePulseHalfWidthValueRight, fFilteredRMS1, fOptimumJitter, fSize, fTransformedWaveform, Get(), Parabola(), pow(), and QERR_SUCCESS.
Referenced by MOptimumFilter::Do().
|
inline |
Definition at line 40 of file QOptimumFilter.hh.
References fMaxJitter.
Referenced by MOptimumFilter::Do().
|
inline |
power spectrum of the original noise
Definition at line 51 of file QOptimumFilter.hh.
References fAverageNoise.
|
inline |
get shift of filter (max pos of avg pulse)
Definition at line 80 of file QOptimumFilter.hh.
References fMaxPos.
|
inline |
Get SNR as a function of frequency
Definition at line 66 of file QOptimumFilter.hh.
References fSNRFreq.
|
protectedvirtual |
Reimplemented in QOptimumShapeFilter.
Definition at line 185 of file QOptimumFilter.cc.
References err, fAverageNoise, fAveragePulse1, fAveragePulseEnergySpectrum, fAvgPulseHalfTimeToMax, fAvgPulseIntegral1, fMaxJitter, fMaxPos, fSize, fTransformer, NormalizeVector(), QERR_OUT_OF_RANGE, and QERR_SUCCESS.
Referenced by BuildFilter(), and QOptimumShapeFilter::ManipulateInputs().
|
protected |
Definition at line 175 of file QOptimumFilter.cc.
References vec.
Referenced by ManipulateInputs(), QOptimumShapeFilter::ManipulateInputs(), and QOptimumShapeFilter::QOptimumShapeFilter().
|
private |
Definition at line 593 of file QOptimumFilter.cc.
References err, max, QERR_OUT_OF_RANGE, and QERR_SUCCESS.
Referenced by GetInterpolated().
| QError QOptimumFilter::SetJitter | ( | JitterMode | mode, |
| int | start = 0 |
||
| ) |
Definition at line 446 of file QOptimumFilter.cc.
References err, fCheckForFilteredSamples, fFiltered1, fFilteredAveragePulseHalfWidth, fOptimumJitter, fSize, fValidSample, J_ABSMAX, J_FIXED, J_LOCMAX, J_NOJITTER, QERR_OUT_OF_RANGE, and QERR_SUCCESS.
Referenced by MOptimumFilter::Do().
|
private |
Definition at line 126 of file QOptimumFilter.hh.
Referenced by BuildFilter(), GetNoisePowerSpectrum(), ManipulateInputs(), and QOptimumFilter().
|
private |
Definition at line 127 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), GetHighSNRChi2(), and GetInterpolated().
|
protected |
Definition at line 105 of file QOptimumFilter.hh.
Referenced by BuildFilter(), GetAveragePulse(), GetFitFunction(), ManipulateInputs(), QOptimumShapeFilter::ManipulateInputs(), and QOptimumFilter().
|
private |
Definition at line 130 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), GetHighSNRChi2(), and GetInterpolated().
|
private |
Definition at line 128 of file QOptimumFilter.hh.
Referenced by GetAveragePulseEnergySpectrum(), and ManipulateInputs().
|
private |
Definition at line 119 of file QOptimumFilter.hh.
Referenced by ManipulateInputs().
|
private |
Definition at line 129 of file QOptimumFilter.hh.
Referenced by Get(), GetInterpolated(), and ManipulateInputs().
|
protected |
Definition at line 102 of file QOptimumFilter.hh.
Referenced by QOptimumFilter(), and QOptimumShapeFilter::QOptimumShapeFilter().
|
protected |
Definition at line 101 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Filter(), Get(), QOptimumShapeFilter::GetChiLeft(), QOptimumShapeFilter::GetChiRight(), QOptimumShapeFilter::GetDecayTime(), GetFiltered(), GetHighSNRChi2(), QOptimumShapeFilter::GetRiseTime(), QOptimumFilter(), and SetJitter().
|
private |
Definition at line 118 of file QOptimumFilter.hh.
Referenced by BuildFilter(), and GetCutOffFrequency().
|
protected |
Definition at line 109 of file QOptimumFilter.hh.
Referenced by BuildFilter(), QOptimumFilter(), and QOptimumShapeFilter::QOptimumShapeFilter().
| std::vector<Diana::QVector> QOptimumFilter::fDebugSpectra |
Definition at line 94 of file QOptimumFilter.hh.
Referenced by BuildFilter().
| std::vector<Diana::QVector> QOptimumFilter::fDebugVectors |
Definition at line 94 of file QOptimumFilter.hh.
Referenced by BuildFilter().
|
private |
Definition at line 135 of file QOptimumFilter.hh.
Referenced by BuildFilter().
|
protected |
Definition at line 111 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Filter(), GetFilterFD(), and QOptimumShapeFilter::QOptimumShapeFilter().
|
private |
Definition at line 141 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Filter(), Get(), GetFiltered(), GetHighSNRChi2(), GetInterpolated(), and SetJitter().
|
protected |
Definition at line 104 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), and GetInterpolated().
|
private |
Definition at line 136 of file QOptimumFilter.hh.
Referenced by BuildFilter(), and GetFilteredNoise().
|
private |
Definition at line 120 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), GetInterpolated(), and SetJitter().
|
private |
Definition at line 121 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), and GetInterpolated().
|
private |
Definition at line 122 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), and GetInterpolated().
|
protected |
Definition at line 103 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Get(), GetFilteredNoiseRMS(), and GetInterpolated().
|
private |
Definition at line 137 of file QOptimumFilter.hh.
Referenced by BuildFilter(), and GetFilterTD().
|
protected |
Definition at line 108 of file QOptimumFilter.hh.
Referenced by BuildFilter(), GetMaxJitter(), ManipulateInputs(), QOptimumFilter(), and QOptimumShapeFilter::QOptimumShapeFilter().
|
protected |
Definition at line 107 of file QOptimumFilter.hh.
Referenced by GetFilteredShifted(), GetShift(), ManipulateInputs(), and QOptimumShapeFilter::ManipulateInputs().
|
private |
Definition at line 143 of file QOptimumFilter.hh.
Referenced by Get(), GetHighSNRChi2(), GetInterpolated(), and SetJitter().
|
protected |
Definition at line 106 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Filter(), Get(), GetInterpolated(), ManipulateInputs(), QOptimumShapeFilter::ManipulateInputs(), QOptimumFilter(), and SetJitter().
|
private |
Definition at line 131 of file QOptimumFilter.hh.
Referenced by BuildFilter(), and GetSNRFD().
|
private |
Definition at line 132 of file QOptimumFilter.hh.
Referenced by BuildFilter(), and GetHighSNRChi2().
|
private |
Definition at line 142 of file QOptimumFilter.hh.
Referenced by Filter(), Get(), GetHighSNRChi2(), and GetInterpolated().
|
private |
Definition at line 117 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Filter(), ManipulateInputs(), QOptimumFilter(), and ~QOptimumFilter().
|
protected |
Definition at line 110 of file QOptimumFilter.hh.
Referenced by BuildFilter(), Filter(), QOptimumFilter(), and QOptimumShapeFilter::QOptimumShapeFilter().
|
private |
Definition at line 138 of file QOptimumFilter.hh.
Referenced by BuildFilter(), and SetJitter().