#include #include "RooWorkspace.h" #include "RooDataSet.h" #include "RooStats/ModelConfig.h" #include "TFile.h" #include "TCanvas.h" #include "RooRealVar.h" #include "RooDataSet.h" #include "RooStats/ProfileLikelihoodCalculator.h" #include "RooPlot.h" #include "RooStats/LikelihoodInterval.h" #include "RooStats/LikelihoodIntervalPlot.h" #include "RooStats/SequentialProposal.h" #include "RooStats/MCMCIntervalPlot.h" #include "RooStats/MCMCCalculator.h" #include "RooGenericPdf.h" #include "RooHistPdf.h" #include "RooProdPdf.h" #include "RooDataHist.h" #include "RooExtendPdf.h" #include "TIterator.h" #include #include "TH1F.h" #include using namespace std; using namespace RooStats; using namespace RooFit; template T AddH(T A, T B, double a=1, double b=1) { A = a*A; B = b*B; int size = A.GetSize()-2; double low = A.GetBinLowEdge(1); double high= A.GetBinLowEdge(size+1); std::string name = string( A.GetName() )+string( B.GetName() ); T C(name.c_str(),"",size,low,high); for(int bin=1;bin<=size;bin++) C.SetBinContent(bin, A.GetBinContent(bin)+B.GetBinContent(bin) ); return C; } std::string character(int i) { std::stringstream s; s << i; return s.str(); } TH1F Interpolate(double x) { int low = (int)x; double z= x-low; TFile *ifile = new TFile("histograms.root","read"); string file_1 = string("h_")+character(low); string file_2 = string("h_")+character(low+1); TH1F *h1=(TH1F*)ifile->Get(file_1.c_str() ); TH1F *h2=(TH1F*)ifile->Get(file_2.c_str() ); TH1F h3=AddH( *h1, *h2,1-z,z ); return h3; } void code(double z) { RooRealVar x ("x" ,"",-2,2); TH1F h_obj=Interpolate(z); TH1F *sign = &h_obj; RooDataHist *sig_n = new RooDataHist("signal_n","",RooArgSet(x),sign); RooHistPdf *sig = new RooHistPdf("sig_pdf","",RooArgSet(x),*sig_n); RooPlot *plot = x.frame(); sig->plotOn(plot); plot->Draw(); }