#ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "RooWorkspace.h" #include "RooRealVar.h" #include "RooAbsPdf.h" #include "RooGenericPdf.h" #include "RooArgList.h" #include "RooDataSet.h" #include "RooHist.h" #include "RooDataHist.h" #include "RooHistPdf.h" #include "RooPlot.h" #include "RooDataSet.h" #include "RooGlobalFunc.h" #include "RooGaussian.h" #include "RooConstVar.h" #include "RooTruthModel.h" #include "RooFormulaVar.h" #include "RooRealSumPdf.h" #include "RooPolyVar.h" #include "RooProduct.h" #include "RooFitResult.h" #include "TH1.h" #include "TCanvas.h" #include "TAxis.h" #include "RooStats/HistFactory/PiecewiseInterpolation.h" #include "RooMCStudy.h" #include "RooStats/ModelConfig.h" #include "RooStats/BernsteinCorrection.h" #include "TH1F.h" #include "TPad.h" #include "TLatex.h" #include "TCanvas.h" #include "TString.h" using namespace RooFit; using namespace RooStats; void do_workspace_histfunc() { TFile* file_analysis= new TFile("analysis.root"); int x= 38; int min_bin=60; int max_bin=250; RooRealVar y("y","y",min_bin,max_bin); RooWorkspace* w = new RooWorkspace("w"); w->import(y); w->var("y")->setBins(38) ; y.setBins(38); TH1F* signal=(TH1F*)file_analysis->Get("signal"); TH1F* bkg_model_full=(TH1F*)file_analysis->Get("bkg_model_full__y"); TH1F* HighHistForSyst4=(TH1F*)file_analysis->Get("HighHistForSyst4__y"); TH1F* LowHistForSyst4=(TH1F*)file_analysis->Get("LowHistForSyst4__y"); RooDataHist signal_h("signal_h","signal_h",y,Import(*signal)); RooDataHist Bkg_Model_Full_h("Bkg_Model_Full_h","Bkg_Model_Full_h",y,Import(*bkg_model_full)); RooDataHist HighHistForSyst4_h("HighHistForSyst4_h","HighHistForSyst4_h",y,Import(*HighHistForSyst4)); RooDataHist LowHistForSyst4_h("LowHistForSyst4_h","LowHistForSyst4_h",y,Import(*LowHistForSyst4)); RooHistPdf Bkg_Model_Full_pdf("Bkg_Model_Full_pdf","Bkg_Model_Full_pdf",y,Bkg_Model_Full_h,0); RooDataHist *data=Bkg_Model_Full_pdf.generateBinned(y,2036834); w->import(*data); w->import(signal_h,RooFit::Rename("template_signal_h")) ; w->import(Bkg_Model_Full_h,RooFit::Rename("template_Bkg_Model_Full_h")) ; w->import(HighHistForSyst4_h,RooFit::Rename("template_HighHistForSyst4_h")) ; w->import(LowHistForSyst4_h,RooFit::Rename("template_LowHistForSyst4_h")) ; w->factory("HistFunc::signal_hf(y,template_signal_h)") ; w->factory("HistFunc::Bkg_Model_Full_hf(y,template_Bkg_Model_Full_h)") ; w->factory("HistFunc::HighHistForSyst4_hf(y,template_HighHistForSyst4_h)") ; w->factory("HistFunc::LowHistForSyst4_hf(y,template_LowHistForSyst4_h)") ; w->factory("binw[1.]") ; w->factory("expr::S('mu*binw',mu[1.],binw)") ; w->factory("expr::B_cr('B1*binw',B1[1.],binw)") ; w->factory("ASUM::total_model(S*signal_hf,B_cr*Bkg_Model_Full_hf)") ; auto modello=w->pdf("total_model"); //modello finale modello->SetName("modello"); RooStats::ModelConfig model_config("ModelConfig",w); model_config.SetPdf(*modello); model_config.SetParametersOfInterest(*w->var("mu")); model_config.SetObservables(*w->var("y")); w->import(model_config); TString fileName = "model_config_hist_func.root"; w->writeToFile(fileName,true); w->Print(); /* RooRealVar alpha("alpha","alpha",-5,5);w->import(alpha); w->factory("PiecewiseInterpolation::correct(mod_final_1_pdf,mod_final_m1_pdf,mod_final_p1_pdf,alpha)"); w->factory("Gaussian::corr_sys_gauss(0,alpha,1)"); w->factory("PROD::piecwised_correct(ASUM(0*correct,1*correct),corr_sys_gauss)"); w->factory("SUM::bkg_only_model(n_bkg_qcd*piecwised_correct,n_Zbb*Zbb_pdf,n_Hbb*Hbb_pdf,n_Zcc*Zcc_pdf)"); // SAVE TRANSFER FUNCTION PDF w->factory("expr::N_bkg('n_bkg_qcd+n_Zbb+n_Hbb+n_Zcc', n_bkg_qcd,n_Zbb,n_Hbb,n_Zcc)"); w->factory("SUM::total_model(N_bkg*bkg_only_model,n_Hcc*Hcc_pdf)"); //cambiare nome higgs */ }