#include #include #include #include #include #include #include #include using namespace RooFit; int FitSample2() { // Model RooRealVar x("x","x",5000,8500); // Polynomial RooRealVar a1("a1","a1",0.18,0.08,0.28); RooRealVar a2("a2","a2",0.11,0.01,0.21); RooRealVar a3("a3","a3",0.04,-0.05,0.12); RooRealVar a4("a4","a4",0.01,-0.08,0.10); RooChebychev model("model","Model",x,RooArgSet(a1,a2,a3,a4)); RooDataHist* data = SampleData(x); //model.fitTo(*data); // -------------------- Debug graphs -------------------- TCanvas* canvas1 = new TCanvas("canvas1","signal",600,600); canvas1->Divide(1,2); canvas1->cd(1); RooPlot* xframe = x.frame(); data->plotOn(xframe); model.plotOn(xframe); xframe->Draw(); canvas1->cd(2); RooPlot* xframe2 = x.frame(); xframe2->addPlotable(xframe->residHist(), "P"); xframe2->Draw(); /*// Likelihood PLots TCanvas* canvas2 = new TCanvas("canvas2","signal",600,600); canvas2->Divide(2,2); RooAbsReal* modelnll = model.createNLL(*data); canvas2->cd(1); RooPlot* a1frame = a1.frame(); modelnll->plotOn(a1frame,ShiftToZero()); a1frame->Draw(); canvas2->cd(2); RooPlot* a2frame = a2.frame(); modelnll->plotOn(a2frame,ShiftToZero()); a2frame->Draw(); canvas2->cd(3); RooPlot* a3frame = a3.frame(); modelnll->plotOn(a3frame,ShiftToZero()); a3frame->Draw(); canvas2->cd(4); RooPlot* a4frame = a4.frame(); modelnll->plotOn(a4frame,ShiftToZero()); a4frame->Draw();*/ return 0; } RooDataHist* SampleData(RooRealVar x) { // Model x.setBins(100); // Polynomial RooRealVar dataGenA1("dataGenA1","a1",0.18); RooRealVar dataGenA2("dataGenA2","a2",0.11); RooRealVar dataGenA3("dataGenA3","a3",0.04); RooRealVar dataGenA4("dataGenA4","a4",0.01); RooChebychev dataGenModel("dataGenModel","Generating Model",x,RooArgSet(dataGenA1,dataGenA2,dataGenA3,dataGenA4)); // Generate data return dataGenModel.generateBinned(x,2500000,kTRUE); } int main(int argc, char* argv[]) { TApplication* rootapp = new TApplication("example",&argc, argv); FitSample2(); rootapp->Run(kTRUE); return 0; }