Hi @eguiraud,
Thank you for your response. Here is a working example;
using namespace RooFit;
using namespace RooStats;
void toyMC(){
const int nbkg_mumu = 553;
const int nbkg_ee = 389;
const int nsig =0;
RooRealVar Mbc("Mbc","Mbc",5.2,5.29);
RooRealVar deltaE("deltaE","deltaE", -0.15, 0.1);
//Mbc backgrund fit for mumu channel
RooRealVar a0("a0","a0",0);
RooArgusBG bkg_mbc_mumu("bkg_mbc_mumu","bkg_mbc_mumu",Mbc, RooConst(5.289), a0);
//Mbc signal fit for mumu channel
RooRealVar mean_mbc_mumu("mean_mbc_mumu","mean_mbc_mumu",5.27945);
RooRealVar sigma_mbc_mumu("sigma_mbc_mumu","sigma_mbc_mumu",0.00268);
RooRealVar a_mbc_mumu("a_mbc_mumu", "a_mbc_mumu", 2.02);
RooRealVar n_mbc_mumu("n_mbc_mumu", "n_mbc_mumu", 10.0);
RooCBShape sig_mbc_mumu("sig_mbc_mumu", "sig_mbc_mumu", Mbc, mean_mbc_mumu, sigma_mbc_mumu, a_mbc_mumu, n_mbc_mumu);
//Delta E background fit for mumu channel
RooRealVar pol1("pol1","pol1",-0.609);
RooChebychev bkg_de_mumu("bkg_de_mumu","bkg_de_mumu", deltaE,RooArgList(pol1));
//Delta E signal fit for mumu channel
RooRealVar mean_de_mumu("mean_de_mumu","mean_de_mumu",0.012);
RooRealVar lmbda_de_mumu("lmbda_de_mumu","lmbda_de_mumu",0.0311);
RooRealVar gamma_de_mumu("gamma_de_mumu", "gamma_de_mumu", 0.96);
RooRealVar delta_de_mumu ("delta_de_mumu", "delta_de_mumu", 1.41);
RooJohnson johnson_mumu("johnson_mumu", "johnson_mumu", deltaE, mean_de_mumu, lmbda_de_mumu, gamma_de_mumu, delta_de_mumu);
RooRealVar sigma_de_mumu ("sigma_de_mumu","sigma_de_mumu",0.0212);
RooGaussian gauss_de_mumu("gauss_de_mumu","gauss_de_mumu",deltaE,mean_de_mumu,sigma_de_mumu);
RooRealVar frac_de_mumu("frac_de_mumu","frac_de_mumu",0.75);
RooAddPdf sig_de_mumu("sig_de_mumu","sig_de_mumu", RooArgList(johnson_mumu,gauss_de_mumu), RooArgList(frac_de_mumu));
//Mbc backgrund fit for ee channel
RooArgusBG bkg_mbc_ee ("bkg_mbc_ee","bkg_mbc_ee",Mbc,RooConst(5.289), a0);
//Mbc signal fit
RooRealVar mean_mbc_ee("mean_mbc_ee","mean_mbc_ee",5.27949);
RooRealVar sigma_mbc_ee("sigma_mbc_ee","sigma_mbc_ee",0.00271);
RooRealVar a_mbc_ee("a_mbc_ee", "a_mbc_ee",1.71);
RooRealVar n_mbc_ee("n_mbc_ee", "n_mbc_ee", 10.0);
RooCBShape sig_mbc_ee("sig_mbc_ee", "sig_mbc_ee", Mbc, mean_mbc_ee, sigma_mbc_ee, a_mbc_ee, n_mbc_ee);
//Delta E background fit for ee channel
RooChebychev bkg_de_ee("bkg_de_ee","bkg_de_ee", deltaE, RooArgList(pol1));
//Delta E signal fit for ee channel
RooRealVar mean_de_ee("mean_de_ee","mean_de_ee",0.0171);
RooRealVar lmbda_de_ee("lmbda_de_ee","lmbda_de_ee",0.0336);
RooRealVar gamma_de_ee("gamma_de_ee", "gamma_de_ee",1.09);
RooRealVar delta_de_ee("delta_de_ee", "delta_de_ee",1.29);
RooJohnson sig_de_ee("sig_de_ee", "sig_de_ee", deltaE, mean_de_ee, lmbda_de_ee, gamma_de_ee, delta_de_ee);
//model
RooProdPdf sig_mumu("sig_mumu","sig_mumu", RooArgList(sig_mbc_mumu,sig_de_mumu));
RooProdPdf bkg_mumu("bkg_mumu","bkg_mumu",RooArgList(bkg_mbc_mumu,bkg_de_mumu));
RooProdPdf sig_ee("sig_ee","sig_ee", RooArgList(sig_mbc_ee,sig_de_ee));
RooProdPdf bkg_ee("bkg_ee","bkg_ee",RooArgList(bkg_mbc_ee,bkg_de_ee));
RooRealVar Nsig("Nsig","Nsig",nsig,-60,50);
RooRealVar Nbkg_mumu("Nbkg_mumu","Nbkg_mumu",nbkg_mumu);
RooRealVar Nbkg_ee("Nbkg_ee","Nbkg_ee",nbkg_ee);
RooAddPdf model_mumu("model_mumu","model_mumu",RooArgList(sig_mumu,bkg_mumu),RooArgList(Nsig,Nbkg_mumu));
RooAddPdf model_ee("model_ee","model_ee",RooArgList(sig_ee,bkg_ee),RooArgList(Nsig,Nbkg_ee));
RooCategory sample("sample", "sample");
sample.defineType("mumu");
sample.defineType("ee");
RooSimultaneous simPdf("simPdf", "simultaneous pdf", sample);
simPdf.addPdf(model_mumu,"mumu");
simPdf.addPdf(model_ee,"ee");
RooMCStudy *mcstudy = new RooMCStudy(simPdf, RooArgList(Mbc,deltaE, sample), Silence(), Extended(), FitOptions(Save(true), PrintEvalErrors(0)));
mcstudy->generateAndFit(1001);
// E x p l o r e r e s u l t s o f s t u d y
// ------------------------------------------------
// Make plots of the distributions of mean, the error on mean and the pull of mean
RooPlot *frame1 = mcstudy->plotParam(Nsig, Bins(40), FitGauss(true));
RooPlot *frame2 = mcstudy->plotError(Nsig, Bins(40));
RooPlot *frame3 = mcstudy->plotPull(Nsig, Bins(40), FitGauss(true));
// Plot distribution of minimized likelihood
RooPlot *frame4 = mcstudy->plotNLL(Bins(40));
// Draw all plots on a canvas
gStyle->SetOptStat(0);
TCanvas *c = new TCanvas(" ", " ", 900, 900);
c->Divide(2, 2);
c->cd(1);
gPad->SetLeftMargin(0.15);
frame1->GetYaxis()->SetTitleOffset(1.4);
frame1->Draw();
c->cd(2);
gPad->SetLeftMargin(0.15);
frame2->GetYaxis()->SetTitleOffset(1.4);
frame2->Draw();
c->cd(3);
gPad->SetLeftMargin(0.15);
frame3->GetYaxis()->SetTitleOffset(1.4);
frame3->Draw();
c->cd(4);
gPad->SetLeftMargin(0.15);
frame4->GetYaxis()->SetTitleOffset(1.4);
frame4->Draw();
}