%%cpp -d #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooCategory.h" #include "RooThresholdCategory.h" #include "RooBinningCategory.h" #include "Roo1DTable.h" #include "RooArgusBG.h" #include "TCanvas.h" #include "TAxis.h" #include "RooPlot.h" using namespace RooFit; RooRealVar x("x", "x", 0, 10); RooArgusBG a("a", "argus(x)", x, 10.0, -1.0); std::unique_ptr data{a.generate(x, 10000)}; RooThresholdCategory xRegion("xRegion", "region of x", x, "Background"); xRegion.addThreshold(4.23, "Background"); xRegion.addThreshold(5.23, "SideBand"); xRegion.addThreshold(8.23, "Signal"); xRegion.addThreshold(9.23, "SideBand"); data->addColumn(xRegion); RooPlot *xframe = x.frame(Title("Demo of threshold and binning mapping functions")); data->plotOn(xframe); data->plotOn(xframe, Cut("xRegion==xRegion::SideBand"), MarkerColor(kRed), LineColor(kRed)); x.setBins(10, "coarse"); RooBinningCategory xBins("xBins", "coarse bins in x", x, "coarse"); Roo1DTable *xbtable = data->table(xBins); xbtable->Print("v"); RooCategory *xb = (RooCategory *)data->addColumn(xBins); xb->setRange("alt", "x_coarse_bin1,x_coarse_bin3,x_coarse_bin5,x_coarse_bin7,x_coarse_bin9"); std::unique_ptr dataSel{data->reduce(CutRange("alt"), EventRange(0, 5000))}; dataSel->plotOn(xframe, MarkerColor(kGreen), LineColor(kGreen)); new TCanvas("rf405_realtocatfuncs", "rf405_realtocatfuncs", 600, 600); xframe->SetMinimum(0.01); gPad->SetLeftMargin(0.15); xframe->GetYaxis()->SetTitleOffset(1.4); xframe->Draw(); %jsroot on gROOT->GetListOfCanvases()->Draw()