QWienerFilter.hh
00001
00008
00009
00010 #ifndef _Q_WIENER_FILTER_HH__
00011 #define _Q_WIENER_FILTER_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
00107
00112 void GetNoise(QVector & output);
00113
00118 void GetAvg(QVector & output);
00119
00120
00125 void SetNormType(int i){norm_type=i;};
00126
00127 private:
00128
00129 QVector AvgPulse;
00130 QVector AvgPS;
00131
00132 int nSigPulses,norm_type,fTriggerPos;
00133
00134
00135 QVector fPS;
00136 int nNoisePS;
00137
00138 double n_energy, avg_energy, conv,blwidth,fThreshold;
00139
00140 QVectorC H;
00141
00142
00143
00144 };
00145
00146 #endif
00147