00001 #ifndef _Q_PULSE_BASIC_PARAMS_HH_ 00002 #define _Q_PULSE_BASIC_PARAMS_HH_ 00003 00004 #include "QVector.hh" 00005 #include "QError.hh" 00006 00007 using namespace Cuore; 00008 00009 class QPulseBasicParams { 00010 00011 public: 00012 QPulseBasicParams(int triggerPosition, double baseline, double baselineRMS); 00013 QPulseBasicParams(const QVector& pulse, int triggerPosition, double baseline, double baselineRMS, int ADCMax, int ADCMin); 00014 00015 double GetStart() const {return fStart; } 00016 double GetEnd() const {return fEnd; } 00017 double GetMaxBaseline() const {return fHeight; } 00018 double GetMaxPosition() const {return fMaxPos; } 00019 double GetBaseline() const {return fBaseline; } 00020 double GetBaselineRMS() const {return fBaselineRMS; } 00021 double GetRaise() const {return fRaise;} 00022 double GetDecay() const {return fDecay;} 00023 bool GetIsSaturatedHigh() {return fIsSaturatedHigh;} 00024 bool GetIsSaturatedLow() {return fIsSaturatedLow;} 00025 00026 00027 QError FindMaximumPosition(const QVector& pulse); 00028 QError ComputeHeight(const QVector& pulse); 00029 QError ComputeRaise(const QVector& pulse, double percLow,double percHigh); 00030 QError ComputeDecay(const QVector& pulse, double percHigh,double percLow); 00031 QError FindEnd(const QVector& pulse, size_t meansize, double peakperc); 00032 QError FindStart(const QVector& pulse, int bufsize); 00033 QError CheckSaturation(const QVector& pulse, int ADCMax, int ADCMin); 00034 QError ComputeDecayAndRise(const QVector& pulse,int smoothingSize, float fracMin, float fracMax, float fracMinDecay); 00035 00036 private: 00037 double fStart; 00038 double fEnd; 00039 double fRaise; 00040 double fDecay; 00041 double fHeight; 00042 double fMaxPos; 00043 double fBaseline; 00044 double fBaselineRMS; 00045 size_t fTriggerPosition; 00046 bool fIsSaturatedHigh; 00047 bool fIsSaturatedLow; 00048 }; 00049 00050 #endif