// g++ $(root-config --cflags) -o example example.cc $(root-config --libs) -lRooFitCore -lRooFit // https://root-forum.cern.ch/t/how-to-write-a-function-in-roofit/43542 #include "RooPlot.h" #include "RooRealVar.h" #include "RooGenericPdf.h" #include "RooDataSet.h" #include "RooGamma.h" #include "RooFormulaVar.h" #include "TCanvas.h" int main() { RooRealVar x("x","x", 1.0, 0.0, 10.0); RooRealVar x0("x0","x0", 0.0); RooRealVar a("a","a", 1.1); RooRealVar b("b","b", 1); // You can define a pdf according to a function with RooGenericPdf... //RooGenericPdf model("model", "pow((x-x0),a)*exp(-b*(x-x0))", RooArgList(x, x0, a, b)); // ...or you can recognize your case as a gamma distribution and use RooGamma RooFormulaVar gamma("gamma", "a + 1", RooArgList(a)); RooFormulaVar beta("beta", "1./b", RooArgList(b)); RooGamma model("model", "model", x, gamma, beta, x0); RooDataSet *data = model.generate(x, 2000); TCanvas canvas("canvas", "canvas", 500, 500); RooPlot* xframe = x.frame(); data->plotOn(xframe); model.plotOn(xframe); xframe->Draw(); canvas.SaveAs("example.png"); }