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