BesselTransformer.hh
Go to the documentation of this file.00001 #ifndef _BESSEL_TRANSFORMER_HH_
00002 #define _BESSEL_TRANSFORMER_HH_
00003
00011 #include "QVector.hh"
00012 #include "QVectorC.hh"
00013 #include "QError.hh"
00014
00015 using namespace Cuore;
00016
00017 class BesselTransformer
00018 {
00019 public:
00021 typedef double(*pt2Func)(double*);
00022 typedef double(*pt2FuncParam)(double t, double* param);
00023
00031 BesselTransformer(double cutFreq, double duration, double samplFreq, double tauRC, bool zeroPad);
00032
00034 const QVectorC& GetResponseFunction() const { return fTransferFunction; }
00035
00037 const QVector& GetDeltaResponse() const { return fDeltaResponse; }
00038
00040 double GetDeltaResponse(double t) const;
00041
00043 double GetExpResponse(double t_0, double tau, double t) const;
00044
00046 QError ConvolveTD(const QVector& pulse, int t_min, QVector& signal) ;
00047
00049 QError ConvolveTD(const QVector& pulse, QVector& signal) {return ConvolveTD(pulse, 0, signal);}
00051 void ConvolveTD(double (*pulse)(double*)) ;
00052 void ConvolveTD(pt2FuncParam func,double* param) ;
00053 double ConvolvedFuncTD(double* t);
00054
00056 void ConvolveFD(double (*pulse)(double*)) ;
00057 void ConvolveFD(pt2FuncParam,double* param) ;
00058 double ConvolvedFuncFD(double* t);
00059
00061 QError ConvolveFD(const QVector& pulse, QVector& signal) ;
00062
00063 private:
00064
00065 QVector fDeltaResponse;
00066 QVectorC fTransferFunction;
00067 QVector fConvolvedVectorTD;
00068 QVector fConvolvedVectorFD;
00069 double fCutFreq;
00070 double fRCFreq;
00071 double fNormCutFreq;
00072 double fSamplingFrequency;
00073 size_t fSize;
00074 double fDuration;
00075
00076 size_t fAN;
00077 double* fAp;
00078 double* fAq;
00079 double* fAtheta;
00080 double* fAphi;
00081 bool fZeroPad;
00082
00083 };
00084
00085 #endif