#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "generateSimulation.h" using namespace std; using namespace RooFit; TApplication Runner("gui",0,NULL); string bkg_generating="B",bkg_fitting="B"; int num_simulations=0; RooRealVar *x; RooRealVar *a0_gen; RooRealVar *a1_gen; RooRealVar *a2_gen; RooRealVar *a3_gen; RooRealVar *a4_gen; RooRealVar *e0_gen; RooRealVar *e1_gen; RooRealVar *e2_gen; RooRealVar *nb; RooRealVar *nZ; RooRealVar *a0_fit; RooRealVar *a1_fit; RooRealVar *a2_fit; RooRealVar *a3_fit; RooRealVar *a4_fit; RooRealVar *e0_fit; RooRealVar *e1_fit; RooRealVar *e2_fit; RooRealVar *mean_fit; RooRealVar *sigma_fit; int n_bkg=250000,n_signal=800; void inizializeParameters(); int main(int narg,char* argv[]){ RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL); RooRandom::randomGenerator()->SetSeed(0); if(narg!=3){ cout<<"USE: ./Executable --nsim=zzz --sim=XY"<Get("Zmass5"); RooDataHist h_Z("h_Z","h_Z",*x,myz); RooHistPdf pdf_Z("pdf_Z","pdf_Z",RooArgList(*x),h_Z,2); nb=new RooRealVar("nb","nb",n_bkg,0.,5*n_bkg); nZ=new RooRealVar("nZ","nZ",n_signal,-100*n_signal,100*n_signal); RooAddPdf *fit_pdf; if(bkg_fitting=="B")fit_pdf=new RooAddPdf("fit_pdf","fit_pdf",RooArgList(Bern_fit,pdf_Z),RooArgList(*nb,*nZ)); if(bkg_fitting=="E")fit_pdf=new RooAddPdf("fit_pdf","fit_pdf",RooArgList(Expo_fit,pdf_Z),RooArgList(*nb,*nZ)); vector results_chi2,results_nll; vector value_chi2,err_chi2,value_nll,err_nll; for(int i=0;isetPrintLevel(-1); int status_migrad=minuit_chi2->migrad(); int status_hesse=minuit_chi2->hesse(); int status_minos=minuit_chi2->minos(); results_chi2.push_back((nZ->getValV()-n_signal)/nZ->getError()); value_chi2.push_back(nZ->getValV()); err_chi2.push_back(nZ->getError()); inizializeParameters(); RooNLLVar *NLL=new RooNLLVar("NLL","NLL",*fit_pdf,simulatedData,Extended(true)); RooMinimizer *minuit_nll=new RooMinimizer(*NLL); minuit_nll->setPrintLevel(-1); status_migrad=minuit_nll->migrad(); status_hesse=minuit_nll->hesse(); status_minos=minuit_nll->minos(); results_nll.push_back((nZ->getValV()-n_signal)/nZ->getError()); value_nll.push_back(nZ->getValV()); err_nll.push_back(nZ->getError()); simulation->Reset("ICES"); } ofstream file_chi2,file_nll; string name_chi2="./Ztry/",name_nll="./Ztry/"; name_chi2+=bkg_generating; name_chi2+=bkg_fitting; name_chi2+="/datas/datas_"; name_chi2+=bkg_generating; name_chi2+=bkg_fitting; name_chi2+="_Chi2.txt"; name_nll+=bkg_generating; name_nll+=bkg_fitting; name_nll+="/datas/datas_"; name_nll+=bkg_generating; name_nll+=bkg_fitting; name_nll+="_NLL.txt"; file_chi2.open(name_chi2.c_str()); file_nll.open(name_nll.c_str()); for(int i=0;iClone(); for(int i=0;iFill(results_chi2[i]); histo_nll->Fill(results_nll[i]); } RooRealVar *y=new RooRealVar("y","y",-6,6); RooDataHist Histo_chi2("Histo_chi2","Histo_chi2",*y,histo_chi2); RooDataHist Histo_nll("Histo_nll","Histo_nll",*y,histo_nll); RooRealVar mean_chi2("mean_chi2","mean_chi2",0,-6,6); RooRealVar sigma_chi2("sigma_chi2","sigma_chi2",1,0.,6.); RooGaussian gauss_chi2("gauss_chi2","gauss_chi2",*y,mean_chi2,sigma_chi2); RooRealVar mean_nll("mean_nll","mean_nll",0,-6,6); RooRealVar sigma_nll("sigma_nll","sigma_nll",1,0.,6.); RooGaussian gauss_nll("gauss_nll","gauss_nll",*y,mean_nll,sigma_nll); gauss_chi2.fitTo(Histo_chi2,Hesse(true),Minos(true),Extended(true)); gauss_nll.fitTo(Histo_nll,Hesse(true),Minos(true),Extended(true)); TCanvas *c0=new TCanvas; RooPlot *final_frame=y->frame(); Histo_chi2.plotOn(final_frame,LineColor(2),MarkerColor(2)); gauss_chi2.plotOn(final_frame,LineColor(2),LineStyle(2)); Histo_nll.plotOn(final_frame,LineColor(4),MarkerColor(4)); gauss_nll.plotOn(final_frame,LineStyle(2)); final_frame->Draw(); gPad->SetGridx(); gPad->SetGridy(); cout<Draw(); string name_plot="./Ztry/"; name_plot+=bkg_generating; name_plot+=bkg_fitting; name_plot+="/plots/plot_"; name_plot+=bkg_generating; name_plot+=bkg_fitting; name_plot+=".pdf"; c0->SaveAs(name_plot.c_str()); Runner.Run(true); } void inizializeParameters(){ a0_fit->setVal(a0_gen->getValV()); a1_fit->setVal(a1_gen->getValV()); a2_fit->setVal(a2_gen->getValV()); a3_fit->setVal(a3_gen->getValV()); a4_fit->setVal(a4_gen->getValV()); e0_fit->setVal(e0_gen->getValV()); e1_fit->setVal(e1_gen->getValV()); e2_fit->setVal(e2_gen->getValV()); nb->setVal(n_bkg); nZ->setVal(n_signal); }