WienerFilter.hh
Go to the documentation of this file.00001
00008
00009
00010 #ifndef __QWIENERFILTER_HH__
00011 #define __QWIENERFILTER_HH__
00012 #include <vector>
00013
00014
00015 #include "QVector.hh"
00016 #include "QVectorC.hh"
00017 #include "QError.hh"
00018
00019 using namespace std;
00020 using namespace Cuore;
00021
00022 class WienerFilter {
00023
00024 public:
00025
00029 WienerFilter();
00030
00031 virtual ~WienerFilter();
00032
00036 QError Compute();
00037
00042 QError Compute_d();
00043
00048 QError SetFilters_d(const QVector &avg, const QVector &noise);
00053 QError SetFilters(const QVector &avg, const QVector &noise);
00054
00058 double GetADC2mV(){return 0.152587890625;};
00062 QError Filter(const QVector &pSamples, QVector &samplesFiltered);
00063
00067 QError Filter_d(const QVector &pSamples, QVector &samplesFiltered,double);
00068
00073 QError Compute_2();
00074
00079 QError PowerSpectrum(const QVector &pSamples, QVector& samplesFiltered);
00080
00085 void SetBaseLineWidth(double value) {blwidth=value;}
00086
00091 double GetThresh(const QVector &pSamples);
00092
00093
00099 void SetThresh(int thresh) { fThreshold = thresh; };
00100
00105 int FindPeaks(const QVector &pSamples, QVector &positions,QVector &relamp);
00106
00111 QError Amplitude(QVector &pSamples, float &) ;
00112
00117 void GetNoise(QVector & output);
00118
00123 void GetAvg(QVector & output);
00124
00129 void BiPol(double, double, double, double,double,double,double&,double&,double&);
00130
00135 void SetNormType(int i){norm_type=i;};
00136
00137 private:
00138
00139 QVector AvgPulse;
00140 QVector AvgPS;
00141
00142 int nSigPulses,norm_type,fTriggerPos;
00143
00144
00145 QVector fPS;
00146 int nNoisePS;
00147
00148 double n_energy, avg_energy, conv,blwidth,fThreshold;
00149
00150 QVectorC H;
00151
00152
00153
00154 };
00155
00156 #endif
00157