#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace RooFit; void TestRooFit() { stringstream myString; RooRealVar x("x","x",-10,10) ; RooRealVar y("y","y",-10,10) ; RooRealVar meanx("meanx","meanx",2,-10,10) ; RooRealVar sigmax("sigmax","sigmax",1,0.,10.) ; RooGaussian gaussx("gaussx","gaussx",x,meanx,sigmax) ; RooRealVar meany("meany","meany",-2,-10,10) ; RooRealVar sigmay("sigmay","sigmay",5,0.,10.) ; RooGaussian gaussy("gaussy","gaussy",y,meany,sigmay) ; x.setRange("Range",0,4); y.setRange("Range",-10,10); x.setRange("Whole",-10,10); y.setRange("Whole",-10,10); RooRealVar nS("nS","nS",1700) ; RooRealVar nB("nB","nB",500) ; nS.setConstant(kFALSE); nB.setConstant(kFALSE); RooAddPdf myPDF("myPDF","myPDF",RooArgList(gaussx,gaussy),RooArgList(nS,nB)); RooDataSet* data = myPDF.generate(RooArgSet(x,y),10000) ; myPDF.fitTo(*data,Extended(kTRUE),SumCoefRange("Range"), Range("Range")) ; myPDF.fixCoefRange("Range"); TCanvas* Canv = new TCanvas("Canv","Canv",10, 10, 700, 900); Canv->Divide(1,2); Canv->cd(1); RooPlot* framex = x.frame(Range("Whole")) ; data->plotOn(framex,CutRange("Range")) ; myPDF.plotOn(framex,Range("Whole"),NormRange("Range")) ; framex->Draw(); Canv->cd(2); RooPlot* framey = y.frame(Range("Whole")) ; data->plotOn(framey,CutRange("Range")) ; myPDF.plotOn(framey,Range("Whole"),NormRange("Range")) ; framey->Draw(); Canv->Update(); }