void rs500b_PrepareWorkspace_Poisson_withSystematics( TString fileName = "WS_Poisson_withSystematics.root", int type = 1 ) { // use a RooWorkspace to store the pdf models, prior informations, list of parameters,... RooWorkspace myWS("myWS"); // Observable myWS.factory("x[0,0,1]") ; // Pdf in observable, myWS.factory("Uniform::sigPdf(x)") ; myWS.factory("Uniform::bkgPdf(x)") ; myWS.factory("SUM::model(S[100,0,1500]*sigPdf,B[1000,0,3000]*bkgPdf)") ; // Background only pdf myWS.factory("ExtendPdf::modelBkg(bkgPdf,B)") ; // Priors myWS.factory("Gaussian::priorNuisance(B,1000,200)") ; myWS.factory("Uniform::priorPOI(S)") ; // Definition of observables and parameters of interest myWS.defineSet("observables","x"); myWS.defineSet("POI","S"); myWS.defineSet("parameters","B") ; // Generate data RooAbsData* data = 0; // binned data with fixed number of events if (type ==0) data = myWS.pdf("model")->generateBinned(*myWS.set("observables"),myWS.var("S")->getVal(),Name("data")); // binned data with Poisson fluctuations if (type ==1) data = myWS.pdf("model")->generateBinned(*myWS.set("observables"),Extended(),Name("data")); // Asimov data: binned data without any fluctuations (average case) if (type == 2) data = myWS.pdf("model")->generateBinned(*myWS.set("observables"),Name("data"),ExpectedData()); myWS.import(*data) ; myWS.writeToFile(fileName); std::cout << "\nRooFit model initialized and stored in " << fileName << std::endl; // control plot of the generated data RooPlot* plot = myWS.var("x")->frame(); data->plotOn(plot); plot->DrawClone(); }