#ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "TCanvas.h" #include "RooPlot.h" #include "TAxis.h" using namespace RooFit ; void TestLinear() { RooRealVar x("x","x",-1,1) ; RooRealVar c0("c0","c0",50,-100,100) ; RooRealVar c1("c1","c1",10,-100,100) ; RooRealVar c2("c2","c2", 2,-100,100) ; RooGenericPdf BkgAngle1("BkgAngle1","c0+c1*x+c2*x*x",RooArgSet(x,c0,c1,c2)); RooPlot* xframe = x.frame(Title("Linear p.d.f.")) ; c0.setVal(50) ; c1.setVal(10) ; c2.setVal(5) ; BkgAngle1.plotOn(xframe,LineColor(kRed)) ; c0.setConstant(false) ; c1.setConstant(false) ; c2.setConstant(false) ; RooDataSet* data = BkgAngle1.generate(x,10000) ; RooPlot* xframe2 = x.frame(Title("Liear p.d.f. with data")) ; data->plotOn(xframe2) ; BkgAngle1.plotOn(xframe2) ; RooRealVar a0("a0","a0",50,-100,100) ; RooRealVar a1("a1","a1",10,-100,100) ; RooRealVar a2("a2","a2", 2,-100,100) ; RooGenericPdf BkgAngle2("BkgAngle2","a0+a1*x",RooArgSet(x,a0,a1)); a0.setVal(0) ; a1.setVal(10) ; a2.setVal(2) ; BkgAngle2.plotOn(xframe,LineColor(kBlue)) ; a0.setConstant(false) ; a1.setConstant(false) ; a2.setConstant(false) ; BkgAngle2.fitTo(*data) ; a0.Print() ; a1.Print() ; a2.Print() ; TCanvas* c = new TCanvas("Basics","Basics",800,400) ; c->Divide(2) ; c->cd(1) ; gPad->SetLeftMargin(0.15) ; xframe->GetYaxis()->SetTitleOffset(1.6) ; xframe->Draw() ; c->cd(2) ; gPad->SetLeftMargin(0.15) ; xframe2->GetYaxis()->SetTitleOffset(1.6) ; xframe2->Draw() ; }