%%cpp -d #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; RooRealVar dt("dt", "dt", -20, 20); RooRealVar dm("dm", "dm", 0.472); RooRealVar tau("tau", "tau", 1.547); RooRealVar w("w", "mistag rate", 0.1); RooRealVar dw("dw", "delta mistag rate", 0.); RooCategory mixState("mixState", "B0/B0bar mixing state"); mixState.defineType("mixed", -1); mixState.defineType("unmixed", 1); RooCategory tagFlav("tagFlav", "Flavour of the tagged B0"); tagFlav.defineType("B0", 1); tagFlav.defineType("B0bar", -1); RooRealVar bias1("bias1", "bias1", 0); RooRealVar sigma1("sigma1", "sigma1", 0.1); RooGaussModel gm1("gm1", "gauss model 1", dt, bias1, sigma1); RooBMixDecay bmix("bmix", "decay", dt, mixState, tagFlav, tau, dm, w, dw, gm1, RooBMixDecay::DoubleSided); std::unique_ptr data{bmix.generate(RooArgSet(dt, mixState, tagFlav), 2000)}; RooBinning tbins(-15, 15); tbins.addUniform(60, -15, 0); tbins.addUniform(15, 0, 15); RooPlot *dtframe = dt.frame(Range(-15, 15), Title("dt distribution with custom binning")); data->plotOn(dtframe, Binning(tbins)); bmix.plotOn(dtframe); RooBinning abins(-10, 10); abins.addBoundary(0); abins.addBoundaryPair(1); abins.addBoundaryPair(2); abins.addBoundaryPair(3); abins.addBoundaryPair(4); abins.addBoundaryPair(6); RooPlot *aframe = dt.frame(Range(-10, 10), Title("mixState asymmetry distribution with custom binning")); data->plotOn(aframe, Asymmetry(mixState), Binning(abins)); bmix.plotOn(aframe, Asymmetry(mixState)); aframe->SetMinimum(-1.1); aframe->SetMaximum(1.1); TCanvas *c = new TCanvas("rf108_plotbinning", "rf108_plotbinning", 800, 400); c->Divide(2); c->cd(1); gPad->SetLeftMargin(0.15); dtframe->GetYaxis()->SetTitleOffset(1.6); dtframe->Draw(); c->cd(2); gPad->SetLeftMargin(0.15); aframe->GetYaxis()->SetTitleOffset(1.6); aframe->Draw(); %jsroot on gROOT->GetListOfCanvases()->Draw()