{ // observable // RooRealVar* mass = new RooRealVar("mass", "", 180., 600.); // normalization // RooRealVar* mu = new RooRealVar("mu", "signal yield", 100., 0., 100000.); RooRealVar* correction = new RooRealVar("correction", "Wg signal correction", 1., 0., 100000.); // TODO: replace with efficiency * luminosity correction->setConstant(kTRUE); RooFormulaVar* N_sig = new RooFormulaVar("N_sig", "@0*@1", RooArgList(*mu, *correction)); //RooRealVar* N_sig = new RooRealVar("N_sig", "signal yield", 200., 0., 100000.); // RooRealVar* N_bkg = new RooRealVar("N_bkg", "Wg background yield ", 5000., 0., 100000.); // ROOADDPDF // // signal // RooRealVar* mymean = new RooRealVar("mymean", "", 300., -10., 10.); RooRealVar* mysigma = new RooRealVar("mysigma", "", 80., 0., 10.); RooGaussian* mygauss = new RooGaussian("mygauss", "", *mass, *mymean, *mysigma); RooExtendPdf* extended_mass_signal = new RooExtendPdf("extended_mass_signal_", "", *mygauss, *N_sig); // background // RooRealVar* mass_exp_c = new RooRealVar("mass_exp_c", "", -0.6, -10., 10.); RooExponential* mass_exp = new RooExponential("mass_exp", "", *mass, *mass_exp_c); RooExtendPdf* extended_mass_background = new RooExtendPdf("extended_mass_background_", "", *mass_exp, *N_bkg); // total // RooAddPdf* myaddpdf = new RooAddPdf("myaddpdf", "", RooArgSet(*extended_mass_signal, *extended_mass_background)); // generate data // /* RooDataSet* data = myaddpdf->generate(*mass); // fit data // mymean->setConstant(kTRUE); mysigma->setConstant(kTRUE); mass_exp_c->setConstant(kTRUE); //extended_mass_background->fitTo(*data); myaddpdf->fitTo(*data); // plot // RooPlot* myframe = mass->frame(100); data->plotOn(myframe); myaddpdf->plotOn(myframe, RooFit::LineColor(kBlue+2)); myframe->Draw(); */ /////////////////////////////////////////////////// // DO FULL TOY MC STUDY // mymean->setConstant(kTRUE); mysigma->setConstant(kTRUE); mass_exp_c->setConstant(kTRUE); RooMCStudy *mcs = new RooMCStudy(*myaddpdf, RooArgSet(*mass), RooFit::FitModel(*myaddpdf), RooFit::Extended(kTRUE), RooFit::Silence(), RooFit::FitOptions(RooFit::PrintEvalErrors(-1), RooFit::PrintLevel(2), RooFit::Warnings(kFALSE), RooFit::Save(kTRUE), RooFit::Minos(kTRUE))); //mcs->generateAndFit(200); mu->setVal(0.); mu->setConstant(kTRUE); mcs->generate(200, 0, kFALSE, "/sps/atlas/c/cmaiani/ToyStudy_Wg2012/check_bias/prova_%04d.dat"); mu->setVal(0.); mu->setConstant(kFALSE); mcs->fit(200, "/sps/atlas/c/cmaiani/ToyStudy_Wg2012/check_bias/prova_%04d.dat"); // plot relevant distributions // RooPlot* frame1 = mcs->plotParam(*mu, RooFit::Bins(25)) ; RooPlot* frame2 = mcs->plotError(*mu, RooFit::Bins(25)) ; RooPlot* frame3 = mcs->plotPull(*mu, -3., 3., 25, kTRUE); TCanvas* c1 = new TCanvas("c1", "", 600, 600); c1->Divide(2,2); c1->cd(1); frame1->Draw(); c1->cd(2); frame2->Draw(); c1->cd(3); frame3->Draw(); // RooPlot* frame4 = mcs->plotPull(*N_bkg, RooFit::Bins(50), RooFit::FitGauss(kTRUE)) ; new TCanvas; frame4->Draw(); /////////////////////////////////////////////////// }