QFitter.hh
Go to the documentation of this file.00001 #ifndef _Q_FITTER_HH_
00002 #define _Q_FITTER_HH_
00003
00011 #include "QError.hh"
00012 #include "QCuore.hh"
00013 #include "QVector.hh"
00014 #include "QMathFunction.hh"
00015
00016 Q_BEGIN_NAMESPACE
00017
00018 class QFitter : public QMathFunction
00019 {
00020 public:
00021
00023 QFitter(QRoutinePointer funcpointer, unsigned int NParameters, double LowBound, double UpBound);
00024
00026 QFitter(const QMathFunction& func);
00027
00029 ~QFitter();
00030
00032 void SetParameter(unsigned int p, double val, double min, double max);
00033
00035 void SetParameter(unsigned int p, const char* name, double val, double min, double max);
00036
00038 void FixParameter(unsigned int p, double val);
00039
00041 void FixParameter(unsigned int p, const char* name, double val);
00042
00044 void Print();
00045
00047 void PrintResult();
00048
00050 QError Fit(const QVector& data, double minfit, double maxfit, double binsize);
00051
00054 QError Fit(const QVector& data, double error, double minfit, double maxfit, double binsize);
00055
00061 QError Fit(const QVector& data, const QVector& errors, double minfit, double maxfit, double binsize);
00062
00064 QMathFunction GetFittedFunction();
00065
00067 QVector& GetResiduals() {return fResiduals;}
00068
00070 double GetChiSquare() {return fChiSquare;}
00071
00073 void SetTF1(TF1& f1);
00074
00075 private:
00076
00078 static double RootRoutine(double* x, double* params);
00079
00081 static const QMathFunction* fFunctionP;
00082
00083 double* fParMin;
00084 double* fParMax;
00085 double* fParErr;
00086 bool* fIsFixed;
00087
00088 QVector fResiduals;
00089 QVector fErrors;
00090 double fChiSquare;
00091
00092 };
00093
00094 Q_END_NAMESPACE
00095
00096 #endif