///////////////////////////////////////////////////////////////////////// // // 'BASIC FUNCTIONALITY' RooFit tutorial macro #108 // // Plotting unbinned data with alternate and variable binnings // // // 07/2008 - Wouter Verkerke // ///////////////////////////////////////////////////////////////////////// #ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussModel.h" #include "RooDecay.h" #include "RooBMixDecay.h" #include "RooCategory.h" #include "RooBinning.h" #include "RooPlot.h" #include "TCanvas.h" #include "TAxis.h" #include "TH1.h" using namespace RooFit ; void rf108_plotbinning() { RooRealVar dt("dt","dt",-15,15) ; RooRealVar mean("mean", "", 0); RooRealVar sigma("sigma", "", 5); RooGaussModel bmix ("bmix","bmix",dt,mean,sigma); RooDataSet *data = bmix.generate(RooArgSet(dt), 1000) ; RooPlot* dtframe = dt.frame(Range(-15,15),Title("dt distribution with custom binning"),Bins(2)) ; data->plotOn(dtframe) ; RooPlot* dtframe2 = dt.frame(Range(-15,15),Title("dt distribution with custom binning"),Bins(4)) ; data->plotOn(dtframe2) ; RooBinning tbins3(-15,15) ; tbins3.addUniform(4, -15.,0.) ; tbins3.addUniform(2, 0., 15.) ; RooPlot* dtframe3 = dt.frame(Range(-15,15),Title("dt distribution with custom binning")) ; data->plotOn(dtframe3,Binning(tbins3)) ; RooBinning tbins4(-15,15) ; tbins4.addUniform(1, -15., 0.) ; tbins4.addUniform(2, 0., 15.) ; RooPlot* dtframe4 = dt.frame(Range(-15,15),Title("dt distribution with custom binning")) ; data->plotOn(dtframe4, Binning(tbins4)) ; RooBinning tbins5(-15,15) ; tbins5.addBoundary(-15) ; tbins5.addBoundary(-5) ; tbins5.addBoundary(0) ; tbins5.addBoundary(5) ; tbins5.addBoundary(10) ; tbins5.addBoundary(-15) ; RooPlot* dtframe5 = dt.frame(Range(-15,15),Title("dt distribution with custom binning")) ; data->plotOn(dtframe5, Binning(tbins5)) ; // Draw plots on canvas TCanvas* c = new TCanvas("rf108_plotbinning","rf108_plotbinning",800,800) ; c->Divide(2,3) ; c->cd(1) ; gPad->SetLeftMargin(0.15) ; data->statOn(dtframe); dtframe->GetYaxis()->SetTitleOffset(1.6) ; dtframe->Draw() ; c->cd(2) ; gPad->SetLeftMargin(0.15) ; data->statOn(dtframe2); dtframe2->GetYaxis()->SetTitleOffset(1.6) ; dtframe2->Draw() ; c->cd(3) ; gPad->SetLeftMargin(0.15) ; data->statOn(dtframe3); dtframe3->GetYaxis()->SetTitleOffset(1.6) ; dtframe3->Draw() ; c->cd(4) ; gPad->SetLeftMargin(0.15) ; data->statOn(dtframe4); dtframe4->GetYaxis()->SetTitleOffset(1.6) ; dtframe4->Draw() ; c->cd(5) ; gPad->SetLeftMargin(0.15) ; data->statOn(dtframe5); dtframe5->GetYaxis()->SetTitleOffset(1.6) ; dtframe5->Draw() ; }