#ifndef PLFIT_H #define PLFIT_H #include #include #include #include #include #include #include #include "PLUtil.h" using namespace std; class PLFit { public: PLFit(double xMin, double xMax, int nBin, vector truePdfPar, double nuTot, vector trueScalePar, int fitOption); TH1D* dataHist(){ return m_dataHist; } TH1D* trueHist(){ return m_trueHist; } TH1D* modelHist(){ return m_modelHist; } double xMin(){ return m_xMin; } double xMax(){ return m_xMax; } int nBin(){ return m_nBin; } double nuTot(){ return m_nuTot; } double dx(){ return (m_xMax - m_xMin)/(double)m_nBin; } double modelPdf (double, vector); double scaleFactor (double, vector); vector truePdfPar(){ return m_truePdfPar; } vector trueScalePar(){ return m_trueScalePar; } void setModelHist(vector pdfPar, vector scalePar); void integrateModel(int a, int b, double& y, double& sigma, vector thetaHat, vector > V); void checkHist(TH1D* h); void plotSetup(TCanvas* canvas); // void plotFit(double par[], TCanvas* canvas, bool logY); void printCanvas(TCanvas* canvas, string fileName); int fitOption(){ return m_fitOption; } void setFitOption(int fitOption) { m_fitOption = fitOption; } void generateData(TRandom* ran); private: TH1D* m_dataHist; TH1D* m_trueHist; TH1D* m_trueBernPar; TH1D* m_modelHist; int m_fitOption; double m_xMin; double m_xMax; int m_nBin; double m_nuTot; vector m_truePdfPar; vector m_trueScalePar; }; // TMinuit needs non-member fcn void fcn(int& n, double* d, double& f, double par[], int flag); #endif