#include #include "TH1D.h" //mirar root makefile #include "RooRealVar.h" #include "RooConstVar.h" #include "RooGaussian.h" #include "RooBreitWigner.h" //#include "RooRelBreitWigner.h" #include "RooArgusBG.h" #include "RooAddPdf.h" #include "RooAbsPdf.h" #include "RooDataSet.h" #include "TTree.h" #include "TFile.h" #include "TBranch.h" #include "RooExponential.h" #include "RooStats/SPlot.h" #include "RooDataHist.h" #include "RooExtendPdf.h" using namespace RooFit; using namespace RooStats; void pruebavalor(){ //importando el tree TFile *file = new TFile("mass.root"); TTree* tree = (TTree*)file->Get("Tree;1"); RooRealVar DP_Mass("DP_Mass","DP_Mass",2860,2900); //DP_Mass.setBins(200); RooDataSet data("data","dataset with x",RooArgSet(DP_Mass),Import(*tree)); //RooDataHist controlar los puntos //RooDataHist data("data","dataset with x",RooArgSet(DP_Mass),Import(*tree),200); //cout<GetMaximum("DP_Mass")<GetYieldFromSWeight("Ns") << std::endl; std::cout << " Yield of background (Nb) " << Nb.getVal() << ". From SWeight it is " << sData-> GetYieldFromSWeight("Nb") << std::endl; // calculando el peso para cada evento /* ---------------------------------------------------- for (int i=0; i<228825; i++) { std::cout << "Ns Weight for event " << i << std::right << std::setw(12) << sData->GetSWeight(i,"Ns") << " Nb Weight " << std::setw(12) << sData->GetSWeight(i, "Nb") << " Total Weight" << std::setw(12) << sData->GetSumOfEventSWeight(i) << std::endl; } std::cout << std::endl; ------------------------------------------------------- */ data.Print(); // create weighted data set RooDataSet * dataw_sig = new RooDataSet(data.GetName(),data.GetTitle(),&data,*data.get(),0,"Ns_sw"); RooDataSet * dataw_bac = new RooDataSet(data.GetName(),data.GetTitle(),&data,*data.get(),0,"Nb_sw"); //------------------ meter numero ente 0 y 1 para los eventos------------- el numero aleatorio se mete en la Rootopla // plotear el ajuste de Breit-Wigner y la exponencial--------------------------------------------------------------------------------- TCanvas *cdata = new TCanvas("sPlot", "sPlot", 2860, 2900); cdata->Divide(1); cdata->cd(1); RooPlot* xframe = DP_Mass.frame(); //se plotea puntos, que corresponden al tree DP_Mass con el ajuste data.plotOn(xframe) ; sigbac.plotOn(xframe); xframe->SetTitle("Fit"); xframe->Draw(); // plotear el SWeight TCanvas *cdata2 = new TCanvas("sPlot2", "sPlot2", 2860, 2900); cdata2->Divide(1); cdata2->cd(1); RooPlot* frame2 = DP_Mass.frame(); dataw_sig->plotOn(frame2, RooFit::DataError(RooAbsData::SumW2)); frame2->SetTitle("pesos signal"); frame2->Draw(); TCanvas *cdata3 = new TCanvas("sPlot3", "sPlot3", 2860, 2900); cdata3->Divide(1); cdata3->cd(1); RooPlot* frame3 = DP_Mass.frame(); dataw_bac->plotOn(frame3, RooFit::DataError(RooAbsData::SumW2)); frame3->SetTitle("pesos background"); frame3->Draw(); // ------------ creando la Rootopla, para el hacerle un RootBranch----------- std::cout<<"----------------------creando un arbol con los pesos------------------"<GetSWeight(i,"Ns"); B[0]=sData->GetSWeight(i, "Nb"); N[0]= (i+0.0)/228824; tree2.Fill(); } tree2.Print(); //tree2.Scan(); tree2.Write(); }