00001 #ifndef _M_THERMALMODELFIT_HH_
00002 #define _M_THERMALMODELFIT_HH_
00003
00039 #include "MPulseFit.hh"
00040 #include <string>
00041 #include <map>
00042
00043 namespace Cuore {
00044 class QMathFunction;
00045 class QFitter;
00046 }
00047 class TF1;
00048 extern "C" double square(double square);
00049 class MBoloModelFit : public MPulseFit {
00050
00051 public:
00053 MBoloModelFit(QSequence* s);
00054
00056 ~MBoloModelFit();
00057
00059 void Init();
00060
00062 QEvent* Do(QEvent* ev);
00063
00065 void Done();
00066 private:
00067
00068 class ChannelInfo {
00069 public:
00070 int HeaterChan;
00071 int Relative;
00072 float Gain;
00073 float V_B;
00074 float R_S;
00075 float R_L;
00076 float c_p;
00077 std::string Name;
00078 std::string Comment;
00079 };
00080
00081 void CreateFunctions(float samplingFrequency,int nsamples);
00082 static double TwoDecayRoot(double* x,double* params);
00083 static double BolometerModelRoot(double* x, double* params);
00084
00085 bool fFitDebug;
00086 bool fFitBessel;
00087 bool fFitCP;
00088 bool fFitRS;
00089 bool fFitHeater;
00090 static bool fUseRK;
00091 double fBesselCutOff;
00092 QFitter* fInit2Decay;
00093 TF1* fInit2DecayRoot;
00094 QFitter* fBolometerModel;
00095 TF1* fBolometerModelRoot;
00096 std::map<int,ChannelInfo> fChannelInfo;
00097 };
00098
00099 #endif