Diana Software
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
QOptimumFilter Class Reference

Optimum filter implemented with windowing and zeros. More...

Inheritance diagram for QOptimumFilter:
QOptimumShapeFilter

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 &amplitude, 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 &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
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
 

Detailed Description

Optimum filter implemented with windowing and zeros.

Author
Marco Vignati

Definition at line 17 of file QOptimumFilter.hh.

Member Enumeration Documentation

◆ JitterMode

Enumerator
J_ABSMAX 
J_LOCMAX 
J_FIXED 
J_NOJITTER 

Definition at line 20 of file QOptimumFilter.hh.

Constructor & Destructor Documentation

◆ QOptimumFilter() [1/2]

QOptimumFilter::QOptimumFilter ( const Diana::QVector &  ap1,
const Diana::QVector &  an,
int  maxJitter,
bool  useDiff = false,
bool  debugOn = false 
)

constructor

Parameters
ap1Average pulse of comp. 1
anAverage noise power spectrum :
diffapply 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.

◆ ~QOptimumFilter()

QOptimumFilter::~QOptimumFilter ( )
virtual

Definition at line 61 of file QOptimumFilter.cc.

References fTransformer.

◆ QOptimumFilter() [2/2]

QOptimumFilter::QOptimumFilter ( const Diana::QVector &  ap1,
const Diana::QVector &  an 
)
protected

Member Function Documentation

◆ BuildFilter()

QError QOptimumFilter::BuildFilter ( )
protected

◆ Filter()

QError QOptimumFilter::Filter ( const Diana::QVector &  p)

◆ Get() [1/2]

std::vector< double > QOptimumFilter::Get ( ) const

◆ Get() [2/2]

QError QOptimumFilter::Get ( double &  jitter,
double &  chi2,
double &  amplitude,
double &  integral,
double &  left,
double &  right 
) const

◆ GetAveragePulse()

Diana::QVector QOptimumFilter::GetAveragePulse ( ) const
inline

get normalized average pulse

Definition at line 45 of file QOptimumFilter.hh.

References fAveragePulse1.

◆ GetAveragePulseEnergySpectrum()

Diana::QVector QOptimumFilter::GetAveragePulseEnergySpectrum ( ) const
inline

energy spectrum of the average pulse

Definition at line 48 of file QOptimumFilter.hh.

References fAveragePulseEnergySpectrum.

◆ GetCutOffFrequency()

double QOptimumFilter::GetCutOffFrequency ( ) const
inline

Definition at line 42 of file QOptimumFilter.hh.

References fCutOffFrequency.

◆ GetFiltered()

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().

◆ GetFilteredNoise()

Diana::QVector QOptimumFilter::GetFilteredNoise ( ) const
inline

expected filtered noise average power spectrum

Definition at line 60 of file QOptimumFilter.hh.

References fFilteredAverageNoise.

◆ GetFilteredNoiseRMS()

double QOptimumFilter::GetFilteredNoiseRMS ( ) const
inline

expected noise rms after the filter

Definition at line 63 of file QOptimumFilter.hh.

References fFilteredRMS1.

◆ GetFilteredShifted()

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().

◆ GetFilterFD()

Diana::QVectorC QOptimumFilter::GetFilterFD ( ) const
inline

filter in the frequency domain

Definition at line 54 of file QOptimumFilter.hh.

References fFilter1.

◆ GetFilterTD()

Diana::QVector QOptimumFilter::GetFilterTD ( ) const
inline

kernel of the filter in the time domain

Definition at line 57 of file QOptimumFilter.hh.

References fFilterTD.

Referenced by if().

◆ GetFitFunction()

QVector QOptimumFilter::GetFitFunction ( const double  jitter,
const double  a1 
) const

Definition at line 585 of file QOptimumFilter.cc.

References fAveragePulse1.

Referenced by MCOFBiComponent::Do().

◆ GetHighSNRChi2()

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().

◆ GetInterpolated()

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().

◆ GetMaxJitter()

int QOptimumFilter::GetMaxJitter ( ) const
inline

Definition at line 40 of file QOptimumFilter.hh.

References fMaxJitter.

Referenced by MOptimumFilter::Do().

◆ GetNoisePowerSpectrum()

Diana::QVector QOptimumFilter::GetNoisePowerSpectrum ( ) const
inline

power spectrum of the original noise

Definition at line 51 of file QOptimumFilter.hh.

References fAverageNoise.

◆ GetShift()

int QOptimumFilter::GetShift ( ) const
inline

get shift of filter (max pos of avg pulse)

Definition at line 80 of file QOptimumFilter.hh.

References fMaxPos.

◆ GetSNRFD()

Diana::QVector QOptimumFilter::GetSNRFD ( ) const
inline

Get SNR as a function of frequency

Definition at line 66 of file QOptimumFilter.hh.

References fSNRFreq.

◆ ManipulateInputs()

QError QOptimumFilter::ManipulateInputs ( )
protectedvirtual

◆ NormalizeVector()

QVector QOptimumFilter::NormalizeVector ( const Diana::QVector &  vec) const
protected

◆ Parabola()

QError QOptimumFilter::Parabola ( double  xa,
double  xb,
double  xc,
double  ya,
double  yb,
double  yc,
double &  min,
double &  minpos 
) const
private

Definition at line 593 of file QOptimumFilter.cc.

References err, max, QERR_OUT_OF_RANGE, and QERR_SUCCESS.

Referenced by GetInterpolated().

◆ SetJitter()

QError QOptimumFilter::SetJitter ( JitterMode  mode,
int  start = 0 
)

Member Data Documentation

◆ fAverageNoise

Diana::QVector QOptimumFilter::fAverageNoise
private

◆ fAverageNoiseForChi2

Diana::QVector QOptimumFilter::fAverageNoiseForChi2
private

Definition at line 127 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), GetHighSNRChi2(), and GetInterpolated().

◆ fAveragePulse1

Diana::QVector QOptimumFilter::fAveragePulse1
protected

◆ fAveragePulse1Shifted

std::vector<Diana::QVectorC> QOptimumFilter::fAveragePulse1Shifted
private

Definition at line 130 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), GetHighSNRChi2(), and GetInterpolated().

◆ fAveragePulseEnergySpectrum

Diana::QVector QOptimumFilter::fAveragePulseEnergySpectrum
private

Definition at line 128 of file QOptimumFilter.hh.

Referenced by GetAveragePulseEnergySpectrum(), and ManipulateInputs().

◆ fAvgPulseHalfTimeToMax

int QOptimumFilter::fAvgPulseHalfTimeToMax
private

Definition at line 119 of file QOptimumFilter.hh.

Referenced by ManipulateInputs().

◆ fAvgPulseIntegral1

double QOptimumFilter::fAvgPulseIntegral1
private

Definition at line 129 of file QOptimumFilter.hh.

Referenced by Get(), GetInterpolated(), and ManipulateInputs().

◆ fCheckForBuiltFilter

QError QOptimumFilter::fCheckForBuiltFilter
protected

Definition at line 102 of file QOptimumFilter.hh.

Referenced by QOptimumFilter(), and QOptimumShapeFilter::QOptimumShapeFilter().

◆ fCheckForFilteredSamples

QError QOptimumFilter::fCheckForFilteredSamples
protected

◆ fCutOffFrequency

double QOptimumFilter::fCutOffFrequency
private

Definition at line 118 of file QOptimumFilter.hh.

Referenced by BuildFilter(), and GetCutOffFrequency().

◆ fDebugOn

bool QOptimumFilter::fDebugOn
protected

◆ fDebugSpectra

std::vector<Diana::QVector> QOptimumFilter::fDebugSpectra

Definition at line 94 of file QOptimumFilter.hh.

Referenced by BuildFilter().

◆ fDebugVectors

std::vector<Diana::QVector> QOptimumFilter::fDebugVectors

Definition at line 94 of file QOptimumFilter.hh.

Referenced by BuildFilter().

◆ fEffectiveFilterLength

size_t QOptimumFilter::fEffectiveFilterLength
private

Definition at line 135 of file QOptimumFilter.hh.

Referenced by BuildFilter().

◆ fFilter1

Diana::QVectorC QOptimumFilter::fFilter1
protected

◆ fFiltered1

Diana::QVector QOptimumFilter::fFiltered1
private

◆ fFilteredAutoCorrelation

double QOptimumFilter::fFilteredAutoCorrelation
protected

Definition at line 104 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), and GetInterpolated().

◆ fFilteredAverageNoise

Diana::QVector QOptimumFilter::fFilteredAverageNoise
private

Definition at line 136 of file QOptimumFilter.hh.

Referenced by BuildFilter(), and GetFilteredNoise().

◆ fFilteredAveragePulseHalfWidth

int QOptimumFilter::fFilteredAveragePulseHalfWidth
private

Definition at line 120 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), GetInterpolated(), and SetJitter().

◆ fFilteredAveragePulseHalfWidthValueLeft

double QOptimumFilter::fFilteredAveragePulseHalfWidthValueLeft
private

Definition at line 121 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), and GetInterpolated().

◆ fFilteredAveragePulseHalfWidthValueRight

double QOptimumFilter::fFilteredAveragePulseHalfWidthValueRight
private

Definition at line 122 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), and GetInterpolated().

◆ fFilteredRMS1

double QOptimumFilter::fFilteredRMS1
protected

Definition at line 103 of file QOptimumFilter.hh.

Referenced by BuildFilter(), Get(), GetFilteredNoiseRMS(), and GetInterpolated().

◆ fFilterTD

Diana::QVector QOptimumFilter::fFilterTD
private

Definition at line 137 of file QOptimumFilter.hh.

Referenced by BuildFilter(), and GetFilterTD().

◆ fMaxJitter

int QOptimumFilter::fMaxJitter
protected

◆ fMaxPos

int QOptimumFilter::fMaxPos
protected

◆ fOptimumJitter

int QOptimumFilter::fOptimumJitter
private

Definition at line 143 of file QOptimumFilter.hh.

Referenced by Get(), GetHighSNRChi2(), GetInterpolated(), and SetJitter().

◆ fSize

size_t QOptimumFilter::fSize
protected

◆ fSNRFreq

Diana::QVector QOptimumFilter::fSNRFreq
private

Definition at line 131 of file QOptimumFilter.hh.

Referenced by BuildFilter(), and GetSNRFD().

◆ fSNRNorm

Diana::QVector QOptimumFilter::fSNRNorm
private

Definition at line 132 of file QOptimumFilter.hh.

Referenced by BuildFilter(), and GetHighSNRChi2().

◆ fTransformedWaveform

Diana::QVectorC QOptimumFilter::fTransformedWaveform
private

Definition at line 142 of file QOptimumFilter.hh.

Referenced by Filter(), Get(), GetHighSNRChi2(), and GetInterpolated().

◆ fTransformer

Diana::QRealComplexFFT* QOptimumFilter::fTransformer
private

◆ fUseDiff

bool QOptimumFilter::fUseDiff
protected

◆ fValidSample

std::vector<bool> QOptimumFilter::fValidSample
private

Definition at line 138 of file QOptimumFilter.hh.

Referenced by BuildFilter(), and SetJitter().


The documentation for this class was generated from the following files: