#ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooPlot.h" #include "RooFitResult.h" #include "RooGenericPdf.h" #include "RooConstVar.h" #include "RooDataHist.h" #include "RooHistPdf.h" #include "RooArgSet.h" #include "RooAddPdf.h" #include "RooCategory.h" #include "RooSimultaneous.h" #include "RooChebychev.h" #include "RooAbsReal.h" #include "RooMCStudy.h" #include "RooMinuit.h" #include "RooNLLVar.h" #include "RooTrace.h" #include "RooAddition.h" #include "RooProdPdf.h" #include "RooFFTConvPdf.h" #include #include #include #include #include #include #include using namespace RooFit; void fitrange(){ // Define observable of interest RooRealVar signal ("signal", "signal", -10.0, 10.0); // Define amplitude variable RooRealVar n1 ("n1", "n1", 1.0, 0.0, 10000.0); // Define/Create first Gaussian RooRealVar mean1 ("mean1", "mean1", 1.0, -10.0, 10.0); RooRealVar sig1 ("sig1", "sig1", 2.0, -10.0, 10.0); RooGaussian g1 ("g1", "g1", signal, mean1, sig1); // Make histogram for testing TH1D* hh = new TH1D("hh","hh",25,-10,10) ; for (int i=0 ; i<100 ; i++) { hh->Fill(gRandom->Gaus(1.0,2.0)) ; } RooDataHist dh ("dh","dh", signal, Import(*hh)); // Create pdf model RooAddPdf model("model","model",g1,n1); // Create a named range signal.setRange("testRange", 0.0, 5.0); // Fit with range and plot RooFitResult *r = model.fitTo(dh, Extended(), Save(), Range("testRange")); RooPlot *frame = signal.frame(Title("with range (0,5)")); dh.plotOn(frame); g1.plotOn(frame); // Fit without range and plot RooFitResult *r2 = model.fitTo(dh, Extended(), Save()); RooPlot *frame2 = signal.frame(Title("no range")); dh.plotOn(frame2); g1.plotOn(frame2); // Draw frames to canvas and save pdf output TCanvas *c1 = new TCanvas(); c1->Divide(2,1); c1->cd(1); frame->Draw(); c1->cd(2); frame2->Draw(); c1->SaveAs("test.pdf"); } int main(){ fitrange(); return 0; }