#ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "RooRealVar.h" #include "RooDataSet.h" #include "RooDataHist.h" #include "RooGaussian.h" #include "TCanvas.h" #include "RooPlot.h" #include "TTree.h" #include "TH1D.h" #include "TF2.h" #include "TRandom.h" #include "TROOT.h" #include "RooAbsReal.h" #include "RooDataHist.h" #include "RooGenericPdf.h" using namespace RooFit; void pseudo_Dalitz_fit() { const Double_t xLo = 0; const Double_t xHi = 3.5; RooRealVar Mass("Mass","#pi#pi#pi Mass [GeV/c^{2}]",xLo,xHi); Mass.setRange("SignalRegion",xLo, xHi); TFile *data_file =TFile::Open("Projections_Lcrho.root"); TH1 *histo = dynamic_cast(data_file->Get("projX_bin_30_40")); RooDataHist dataSet("dataSet","dataSet",RooArgList(Mass),projX_bin_30_40); // histo->Draw("contz"); RooRealVar dm("dm","Mass shift",0,-.2,.2); RooRealVar k("k","sigma shift",1,.5,1.1); //======================using Voigtian============================================== RooRealVar mean0("mean0","mean of the signal gaussian mass PDF",1.15,1.1,1.3); RooAddition effmean0("effmean0","mean+dm",RooArgSet(mean0,dm)); RooRealVar width0("width0","width/sigma of the signal voigtian mass PDF",0.149); RooRealVar sigma0("sigma0","sigma of the resolution function",0.5,0.45,0.65); RooProduct effsigma0("effsigma0","effsigma1",RooArgSet(sigma0,k)); RooVoigtian gaussian0("gaussian0","Signal with Voigtian pdf",Mass,effmean0,width0,effsigma0) ; //======================using Gaussian=rimetti questa============================================= // RooRealVar mean0("mean0","mean of the signal gaussian mass PDF",1.15,1.1,1.3); // RooAddition effmean0("effmean0","mean+dm",RooArgSet(mean0,dm)); // RooRealVar sigma0("sigma0","sigma of the resolution function",0.5,0.45,0.65); // RooProduct effsigma0("effsigma0","effsigma1",RooArgSet(sigma0,k)); // RooGaussian gaussian0("gaussian0", "gaussian 0for signal peak",Mass,effmean0,effsigma0); //======================using Gaussian=rimetti questa============================================= RooRealVar mean0b("mean0b","mean of the signal gaussian mass PDF",0.75,0.7,0.85); RooAddition effmean0b("effmean0b","mean+dm",RooArgSet(mean0b,dm)); RooRealVar sigma0b("sigma0b","sigma of the resolution function",0.09,0.08,0.15); RooProduct effsigma0b("effsigma0b","effsigma1",RooArgSet(sigma0b,k)); RooGaussian gaussian0b("gaussian0b", "gaussian 0for signal peak",Mass,effmean0b,effsigma0b); RooRealVar peak_frac0("peak_frac0","peak_frac0",0.2,1); RooAddPdf model0("model0","model0",RooArgList(gaussian0,gaussian0b),peak_frac0); dm.setConstant(); k.setConstant(); RooFitResult *fit_res0 = model0.fitTo(dataSet, Save(kTRUE), Range("SignalRegion")); TCanvas *canvas_bin0 = new TCanvas("c0","Projection X",1); RooPlot *Mass_proj = Mass.frame(Title("CDF Montecarlo"),Name("fit_frame")); RooPlot *rp_data = dataSet.plotOn(Mass_proj, LineColor(1),Name("data")); RooPlot *rp_model = model0.plotOn(Mass_proj,LineColor(6),Name("model_full")); // RooPlot *rp_histo = histo->plotOn(Mass_proj,LineColor(6),Name("model_full")); Mass_proj->Draw(); mean0.setConstant(); sigma0.setConstant(); width0.setConstant(); mean0b.setConstant(); sigma0b.setConstant(); peak_frac0.setConstant(); //===================================================================================================== const Double_t xLo = 0.; const Double_t xHi = 3.5; RooRealVar Mass("Mass","#pi#pi#pi Mass [GeV/c^{2}]",xLo,xHi); Mass.setRange("SignalRegion",xLo, xHi); TFile *data_file =TFile::Open("Projections_Lcrho.root"); TH1 *histo1 = dynamic_cast(data_file->Get("projY_bin_30_40")); RooDataHist dataSet1("dataSet1","dataSet1",RooArgList(Mass),projY_bin_30_40); RooRealVar dm("dm","Mass shift",0,-.2,.2); RooRealVar k("k","sigma shift",1,.5,1.1); //======================using Voigtian============================================== RooRealVar mean01("mean01","mean of the signal gaussian mass PDF",1.15,1.1,1.3); RooAddition effmean01("effmean01","mean+dm",RooArgSet(mean01,dm)); RooRealVar width01("width01","width/sigma of the signal voigtian mass PDF",0.149); RooRealVar sigma01("sigma01","sigma of the resolution function",0.5,0.45,0.65); RooProduct effsigma01("effsigma01","effsigma1",RooArgSet(sigma01,k)); RooVoigtian gaussian01("gaussian01","Signal with Voigtian pdf",Mass,effmean01,width01,effsigma01) ; //======================using Gaussian=rimetti questa============================================= // RooRealVar mean0("mean0","mean of the signal gaussian mass PDF",1.15,1.1,1.3); // RooAddition effmean0("effmean0","mean+dm",RooArgSet(mean0,dm)); // RooRealVar sigma0("sigma0","sigma of the resolution function",0.5,0.45,0.65); // RooProduct effsigma0("effsigma0","effsigma1",RooArgSet(sigma0,k)); // RooGaussian gaussian0("gaussian0", "gaussian 0for signal peak",Mass,effmean0,effsigma0); //======================using Gaussian=rimetti questa============================================= RooRealVar mean0b1("mean0b1","mean of the signal gaussian mass PDF",0.75,0.7,0.85); RooAddition effmean0b1("effmean0b1","mean+dm",RooArgSet(mean0b1,dm)); RooRealVar sigma0b1("sigma0b1","sigma of the resolution function",0.09,0.08,0.15); RooProduct effsigma0b1("effsigma0b1","effsigma1",RooArgSet(sigma0b1,k)); RooGaussian gaussian0b1("gaussian0b1", "gaussian 0for signal peak",Mass,effmean0b1,effsigma0b1); RooRealVar peak_frac01("peak_frac01","peak_frac01",0.2,1); RooAddPdf model01("model01","model01",RooArgList(gaussian01,gaussian0b1),peak_frac01); dm.setConstant(); k.setConstant(); RooFitResult *fit_res01 = model01.fitTo(dataSet1, Save(kTRUE), Range("SignalRegion")); TCanvas *canvas_bin01 = new TCanvas("c01","Projection Y",1); RooPlot *Mass_proj1 = Mass.frame(Title("CDF Montecarlo"),Name("fit_frame")); RooPlot *rp_data1 = dataSet1.plotOn(Mass_proj1, LineColor(1),Name("data")); RooPlot *rp_model1 = model01.plotOn(Mass_proj1,LineColor(6),Name("model_full")); Mass_proj1->Draw(); mean01.setConstant(); sigma01.setConstant(); width01.setConstant(); mean0b1.setConstant(); sigma0b1.setConstant(); peak_frac01.setConstant(); TFile *data_file2 =TFile::Open("Dalitz_Rho_hepg_trig_check_mc_Lcrho.root"); RooDataHist *dataSet2 = (RooDataHist*) data_file2->Get("histo1vshisto2_nocut"); RooProdPdf prod_pdf("prod_pdf","prod_pdf",RooArgSet(model0,model01)); RooFitResult *fit_res = prod_pdf.fitTo(*dataSet2,Extended(kTRUE),SumW2Error(kTRUE),Range("SignalRegion"),Save(kTRUE),Minos(kTRUE)); fit_res->Print("v"); TCanvas *canvas_final = new TCanvas("canvas_final","Final fit",1); RooPlot *fit_frame = Mass.frame(Title("CDF Preliminary 2.4 fb^{-1}"),Name("fit_frame"),Bins(100));//,Bins(50) //Bins(100) dataSet2->plotOn(fit_frame); final_pdf.plotOn(fit_frame,Components("model0"),LineColor(kBlue),LineStyle(1),Name("Model0")); final_pdf.plotOn(fit_frame,Components("model01"),LineColor(kRed),LineStyle(1),Name("Model01")); final_pdf.paramOn(fit_frame) ; fit_frame->Draw(); // RooWorkspace *ws = new RooWorkspace("Lcrho_projections_ws","Lcrho_projections template WS"); // ws->import(model0,RenameAllVariablesExcept("Lcrho_projectionsVar","Mass,dm,k"),RenameAllNodes("Lcrho_projectionsPdf")); // ws->writeToFile("Lcrho_projections_WS_template.root"); }