#include "RooStats/HistFactory/Measurement.h" using namespace RooStats; struct results{ int status; double MU,B1,B2; }; results minmzr(){ results tmp; const char* filename = "results/StatModel_combined_meas_model.root"; TFile* file = TFile::Open(filename); RooWorkspace* ws = (RooWorkspace*) file->Get("combined"); // ws->Print(); ModelConfig* mc = (ModelConfig*) ws->obj("ModelConfig"); RooAbsData* data = (RooAbsData*) ws->data("obsData"); RooSimultaneous* simPdf = (RooSimultaneous*) mc->GetPdf(); RooAbsReal* nll = simPdf->createNLL(*data); RooMinimizer m(*nll); m.setStrategy(0); int status=m.minimize("Minuit2","Migrad"); m.hesse(); RooAbsReal* POI = (RooAbsReal*) mc->GetParametersOfInterest()->first(); double Nui1 = ws->var("gamma_B1_bin_0")->getVal(); double Nui2 = ws->var("gamma_B2_bin_0")->getVal(); // cout<<"Status="<getVal()<getVal(); tmp.B1=Nui1; tmp.B2=Nui2; cout<<"MU="<SetBinContent(1,s1); hs2->SetBinContent(1,s2); hb->SetBinContent(1,b); hc->SetBinContent(1,c); // n1[i]=r.Poisson(b1); // m1[i]=r.Poisson(b1+mu*s1); // n2[i]=r.Poisson(b2); // m2[i]=r.Poisson(b2+mu*s2); n1[i]=1; m1[i]=0; n2[i]=2; m2[i]=3; hn1->SetBinContent(1,n1[i]); hm1->SetBinContent(1,m1[i]); hn2->SetBinContent(1,n2[i]); hm2->SetBinContent(1,m2[i]); f.Write(); buildWS(); results output=minmzr(); hstatus->Fill(output.status); hMU->Fill(output.MU); hB1->Fill(output.B1); hB2->Fill(output.B2); if(output.status==0){ hMU_bli->Fill(output.MU); hB1_bli->Fill(output.B1); hB2_bli->Fill(output.B2); } // Print in txtfile // if(i==0) { // txtfile << s1 << " " << s2 << " " << b1 << " " << b2 << " " << mu; // } // txtfile << "\n" << n1[i] << " " << m1[i] <<" " << n2[i] <<" " << m2[i]; // txtfile << " " << output.MU << " " << output.B1 << " " << output.B2 << " " << output.status; f.Close(); } f1.Write(); f1.Close(); // txtfile.close(); return; }