Diana Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
QBiComponentOptimumFilter Class Reference

Dual component optimum filter. More...

Public Member Functions

 QBiComponentOptimumFilter (const Diana::QVector &ap1, const Diana::QVector &ap2, const Diana::QVector &an, size_t maxJitter, bool diff=false)
 constructor More...
 
virtual ~QBiComponentOptimumFilter ()
 
double GetFilteredNoiseRMS1 () const
 expected noise rms on filtered comp. 1 More...
 
double GetFilteredNoiseRMS2 () const
 expected noise rms on filtered comp. 1 More...
 
const std::vector< int > & GetJitters () const
 get array of jitters. They range between (-maxJitter,+maxJitter), 2 extra jitters on both sides are given to check that the chi^2 is at minimum More...
 
QError Filter (const Diana::QVector &p)
 filter p. In case of failure an error is returned. More...
 
void GetFiltered (Diana::QVector &f1, Diana::QVector &f2) const
 get filtered waveforms. if Filter()==QERR_SIZE_NOT_MATCH throws the error More...
 
const std::vector< double > & GetChiSquareWithJitter () const
 get chi square as a function of jitter, same indexing of GetJitters(). if Filter()==QERR_SIZE_NOT_MATH throws the error More...
 
int GetJitterAtMinimum () const
 get jitter at the minimum of the chi square. if Filter()!=QERR_SUCCESS throw the error More...
 
double GetChiSquareAtMinimium () const
 get chi square value at its minimum, if Filter()!=QERR_SUCCESS throw the error More...
 
void GetAmplitude (double &a1, double &a2, double &integral) const
 get amplitudes at chi^2 minimum. if Filter()!=QERR_SUCCESS throws the error
More...
 
QError GetInterpolated (double &jitter, double &a1, double &a2, double &integral) 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...
 
Diana::QVector GetFitFunction (const double jitter, const double a1, const double a2) const
 

Private Member Functions

Diana::QVector NormalizeVector (const Diana::QVector &vec) const
 
void BuildFilter (const Diana::QVector &ap1, const Diana::QVector &ap2)
 
QError ComputeAmplitude (const Diana::QVectorC &transformed)
 
std::vector< double > ChiSquare (const Diana::QVectorC &p, const Diana::QVector &ap1Filtered, const Diana::QVector &ap2Filtered) const
 

Private Attributes

QError fCheck
 
size_t fSize
 
bool fIsDiff
 
int fMaxJitter
 
Diana::QRealComplexFFT * fTransformer
 
Diana::QVectorC fFilter1
 
Diana::QVectorC fFilter2
 
Diana::QVector fAverageNoise
 
std::vector< int > fJitters
 
std::vector< Diana::QVectorC > fAveragePulse1Shifted
 
std::vector< Diana::QVectorC > fAveragePulse2Shifted
 
Diana::QVector fAveragePulse1
 
Diana::QVector fAveragePulse2
 
Diana::QVector fFiltered1
 
Diana::QVector fFiltered2
 
std::vector< double > fChiSquareWithJitter
 
int fOptimumJitter
 
double fAvgPulseIntegral1
 
double fAvgPulseIntegral2
 
double fAmplitude1
 
double fAmplitude2
 
double fFilteredRMS1
 
double fFilteredRMS2
 

Detailed Description

Dual component optimum filter.

Author
Marco Vignati

Definition at line 17 of file QBiComponentOptimumFilter.hh.

Constructor & Destructor Documentation

◆ QBiComponentOptimumFilter()

QBiComponentOptimumFilter::QBiComponentOptimumFilter ( const Diana::QVector &  ap1,
const Diana::QVector &  ap2,
const Diana::QVector &  an,
size_t  maxJitter,
bool  diff = false 
)

constructor

Parameters
ap1Average pulse of comp. 1
ap2Average pulse of comp. 1
anAverage noise power spectrum
maxJittermaximum jitter (samples) allowed for the filtered pulse with respect to average pulses.
diffapply derivative filter to avoid boundary effects when ap does not return to the baseline.

Definition at line 14 of file QBiComponentOptimumFilter.cc.

References an(), ap2, BuildFilter(), cos(), DianaThrow, err, fAverageNoise, fAveragePulse1, fAveragePulse2, fAvgPulseIntegral1, fAvgPulseIntegral2, fCheck, fIsDiff, fSize, fTransformer, NormalizeVector(), QERR_SIZE_NOT_MATCH, and QERR_UNKNOWN_ERR.

◆ ~QBiComponentOptimumFilter()

QBiComponentOptimumFilter::~QBiComponentOptimumFilter ( )
virtual

Definition at line 52 of file QBiComponentOptimumFilter.cc.

References fTransformer.

Member Function Documentation

◆ BuildFilter()

void QBiComponentOptimumFilter::BuildFilter ( const Diana::QVector &  ap1,
const Diana::QVector &  ap2 
)
private

◆ ChiSquare()

vector< double > QBiComponentOptimumFilter::ChiSquare ( const Diana::QVectorC &  p,
const Diana::QVector &  ap1Filtered,
const Diana::QVector &  ap2Filtered 
) const
private

◆ ComputeAmplitude()

QError QBiComponentOptimumFilter::ComputeAmplitude ( const Diana::QVectorC &  transformed)
private

◆ Filter()

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

filter p. In case of failure an error is returned.

Definition at line 60 of file QBiComponentOptimumFilter.cc.

References ComputeAmplitude(), err, fCheck, fFilter1, fFilter2, fFiltered1, fFiltered2, fIsDiff, fSize, fTransformer, QERR_SIZE_NOT_MATCH, and QERR_SUCCESS.

◆ GetAmplitude()

void QBiComponentOptimumFilter::GetAmplitude ( double &  a1,
double &  a2,
double &  integral 
) const

get amplitudes at chi^2 minimum. if Filter()!=QERR_SUCCESS throws the error

Definition at line 111 of file QBiComponentOptimumFilter.cc.

References DianaThrow, fAmplitude1, fAmplitude2, fAvgPulseIntegral1, fAvgPulseIntegral2, fCheck, and QERR_SUCCESS.

◆ GetChiSquareAtMinimium()

double QBiComponentOptimumFilter::GetChiSquareAtMinimium ( ) const

get chi square value at its minimum, if Filter()!=QERR_SUCCESS throw the error

Definition at line 105 of file QBiComponentOptimumFilter.cc.

References DianaThrow, fCheck, fChiSquareWithJitter, fOptimumJitter, and QERR_SUCCESS.

◆ GetChiSquareWithJitter()

const std::vector< double > & QBiComponentOptimumFilter::GetChiSquareWithJitter ( ) const

get chi square as a function of jitter, same indexing of GetJitters(). if Filter()==QERR_SIZE_NOT_MATH throws the error

Definition at line 93 of file QBiComponentOptimumFilter.cc.

References DianaThrow, fCheck, fChiSquareWithJitter, and QERR_SIZE_NOT_MATCH.

◆ GetFiltered()

void QBiComponentOptimumFilter::GetFiltered ( Diana::QVector &  f1,
Diana::QVector &  f2 
) const

get filtered waveforms. if Filter()==QERR_SIZE_NOT_MATCH throws the error

Definition at line 87 of file QBiComponentOptimumFilter.cc.

References DianaThrow, fCheck, fFiltered1, fFiltered2, and QERR_SIZE_NOT_MATCH.

◆ GetFilteredNoiseRMS1()

double QBiComponentOptimumFilter::GetFilteredNoiseRMS1 ( ) const
inline

expected noise rms on filtered comp. 1

Definition at line 35 of file QBiComponentOptimumFilter.hh.

References fFilteredRMS1.

◆ GetFilteredNoiseRMS2()

double QBiComponentOptimumFilter::GetFilteredNoiseRMS2 ( ) const
inline

expected noise rms on filtered comp. 1

Definition at line 38 of file QBiComponentOptimumFilter.hh.

References fFilteredRMS2.

◆ GetFitFunction()

QVector QBiComponentOptimumFilter::GetFitFunction ( const double  jitter,
const double  a1,
const double  a2 
) const

Definition at line 262 of file QBiComponentOptimumFilter.cc.

References fAveragePulse1, and fAveragePulse2.

◆ GetInterpolated()

QError QBiComponentOptimumFilter::GetInterpolated ( double &  jitter,
double &  a1,
double &  a2,
double &  integral 
) 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 119 of file QBiComponentOptimumFilter.cc.

References DianaThrow, err, fAvgPulseIntegral1, fAvgPulseIntegral2, fCheck, fChiSquareWithJitter, fFiltered1, fFiltered2, fJitters, fOptimumJitter, fSize, QERR_OUT_OF_RANGE, and QERR_SUCCESS.

◆ GetJitterAtMinimum()

int QBiComponentOptimumFilter::GetJitterAtMinimum ( ) const

get jitter at the minimum of the chi square. if Filter()!=QERR_SUCCESS throw the error

Definition at line 99 of file QBiComponentOptimumFilter.cc.

References DianaThrow, fCheck, fJitters, fOptimumJitter, and QERR_SUCCESS.

◆ GetJitters()

const std::vector<int>& QBiComponentOptimumFilter::GetJitters ( ) const
inline

get array of jitters. They range between (-maxJitter,+maxJitter), 2 extra jitters on both sides are given to check that the chi^2 is at minimum

Definition at line 42 of file QBiComponentOptimumFilter.hh.

References fJitters.

◆ NormalizeVector()

QVector QBiComponentOptimumFilter::NormalizeVector ( const Diana::QVector &  vec) const
private

Definition at line 161 of file QBiComponentOptimumFilter.cc.

References vec.

Referenced by QBiComponentOptimumFilter().

Member Data Documentation

◆ fAmplitude1

double QBiComponentOptimumFilter::fAmplitude1
private

Definition at line 92 of file QBiComponentOptimumFilter.hh.

Referenced by ComputeAmplitude(), and GetAmplitude().

◆ fAmplitude2

double QBiComponentOptimumFilter::fAmplitude2
private

Definition at line 93 of file QBiComponentOptimumFilter.hh.

Referenced by ComputeAmplitude(), and GetAmplitude().

◆ fAverageNoise

Diana::QVector QBiComponentOptimumFilter::fAverageNoise
private

Definition at line 79 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), ChiSquare(), and QBiComponentOptimumFilter().

◆ fAveragePulse1

Diana::QVector QBiComponentOptimumFilter::fAveragePulse1
private

Definition at line 83 of file QBiComponentOptimumFilter.hh.

Referenced by GetFitFunction(), and QBiComponentOptimumFilter().

◆ fAveragePulse1Shifted

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

Definition at line 81 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), and ChiSquare().

◆ fAveragePulse2

Diana::QVector QBiComponentOptimumFilter::fAveragePulse2
private

Definition at line 83 of file QBiComponentOptimumFilter.hh.

Referenced by GetFitFunction(), and QBiComponentOptimumFilter().

◆ fAveragePulse2Shifted

std::vector<Diana::QVectorC> QBiComponentOptimumFilter::fAveragePulse2Shifted
private

Definition at line 82 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), and ChiSquare().

◆ fAvgPulseIntegral1

double QBiComponentOptimumFilter::fAvgPulseIntegral1
private

◆ fAvgPulseIntegral2

double QBiComponentOptimumFilter::fAvgPulseIntegral2
private

◆ fCheck

QError QBiComponentOptimumFilter::fCheck
private

◆ fChiSquareWithJitter

std::vector<double> QBiComponentOptimumFilter::fChiSquareWithJitter
private

◆ fFilter1

Diana::QVectorC QBiComponentOptimumFilter::fFilter1
private

Definition at line 76 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), and Filter().

◆ fFilter2

Diana::QVectorC QBiComponentOptimumFilter::fFilter2
private

Definition at line 77 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), and Filter().

◆ fFiltered1

Diana::QVector QBiComponentOptimumFilter::fFiltered1
private

◆ fFiltered2

Diana::QVector QBiComponentOptimumFilter::fFiltered2
private

◆ fFilteredRMS1

double QBiComponentOptimumFilter::fFilteredRMS1
private

Definition at line 94 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), and GetFilteredNoiseRMS1().

◆ fFilteredRMS2

double QBiComponentOptimumFilter::fFilteredRMS2
private

Definition at line 95 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter(), and GetFilteredNoiseRMS2().

◆ fIsDiff

bool QBiComponentOptimumFilter::fIsDiff
private

Definition at line 72 of file QBiComponentOptimumFilter.hh.

Referenced by Filter(), and QBiComponentOptimumFilter().

◆ fJitters

std::vector<int> QBiComponentOptimumFilter::fJitters
private

◆ fMaxJitter

int QBiComponentOptimumFilter::fMaxJitter
private

Definition at line 73 of file QBiComponentOptimumFilter.hh.

Referenced by BuildFilter().

◆ fOptimumJitter

int QBiComponentOptimumFilter::fOptimumJitter
private

◆ fSize

size_t QBiComponentOptimumFilter::fSize
private

◆ fTransformer

Diana::QRealComplexFFT* QBiComponentOptimumFilter::fTransformer
private

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