MPulseShapeChiSquare.hh
Go to the documentation of this file.00001 #ifndef _M_PULSESHAPECHISQUARE_HH_
00002 #define _M_PULSESHAPECHISQUARE_HH_
00003
00044 #include "QModule.hh"
00045 #include "QVector.hh"
00046 #include "QFitter.hh"
00047 #include <map>
00048 #include <gsl/gsl_spline.h>
00049
00050
00051 class MPulseShapeChiSquare : public QModule {
00052
00053 public:
00055 MPulseShapeChiSquare(QSequence* s);
00056
00058 ~MPulseShapeChiSquare();
00059
00061 void Init();
00062
00064 QEvent* Do(QEvent* ev);
00065
00067 void Done();
00068 private:
00069 QFitter* fFitter;
00070
00071 struct ChannelInfo {
00072 bool BlackSheep;
00073 QVector fAveragePulse;
00074 gsl_spline* fSpline;
00075 double fRMS;
00076 double fAPRMS;
00077 int fMinFit;
00078 int fMaxFit;
00079 };
00080
00081 std::string fAvgPulsesFile;
00082 std::string fAvgNoiseFile;
00083 bool fDebugMode;
00084 int fMaxDelay;
00085 static std::map<int,ChannelInfo> fChannelInfos;
00086 static gsl_interp_accel *fSplineAcc;
00087 bool SetupChannel(int ch,size_t n);
00088 static double AvgPulseFunc(double x, double* params);
00089 };
00090
00091 #endif
00092