#include using namespace RooFit; double CheckInt(double integral, double fwhm){ double max = integral/(TMath::Sqrt(2*TMath::Pi())*fwhm); return max; } void Fit1(){ //File Import TFile *f = new TFile("Forum.root"); TTree *t = (TTree*)f->Get("Data"); double fwhm = 5/(2*TMath::Sqrt(2*TMath::Log(2))); //RooFit Definitions //Signal RooRealVar En("Energy","Energy",536.1-50,536.1+50); RooRealVar mean("mean","mean",536.1); RooRealVar sigma("sigma","sigma",fwhm); RooGaussian gss("gss","gss",En,mean,sigma); RooRealVar yield("yield","yield",0,0,100000); //Background //Range of this is different RooRealVar poly_c1("c1","c1",0,-1000,1000); RooPolynomial background("background","background",En,RooArgList(poly_c1)); RooRealVar bkgy("bkgy","yield background",1,0,100000); //Setup Model RooAddPdf model("model","Total PDF",RooArgList(gss,background),RooArgList(yield,bkgy)); //Import data RooDataSet data("data","data",RooArgSet(En),Import(*t),Cut(Form("%e < Energy && Energy < %e",536.1-50,536.1+50))); //Fit model.fitTo(data,Extended(),Verbose(false)); //RooPlot RooPlot *P = En.frame(Bins(100),Range(536.1-50,536.1+50)); data.plotOn(P); model.plotOn(P,LineColor(kBlue)); model.plotOn(P,Components(background),LineColor(kRed)); Double_t chi = P->chiSquare(); En.setVal(536.1); Double_t max = model.getVal(RooArgSet(En))*data.sumEntries(); //Cosmetic TLatex lax; lax.SetNDC(); lax.SetTextAlign(22); TText *intL = new TText(); intL->SetNDC(); intL->SetText(.5,.03,Form("Integral: %f",yield.getVal())); intL->SetTextAlign(22); intL->SetTextSize(0.03); intL->SetTextColor(kBlue); TText *cLab = new TText(); cLab->SetNDC(); cLab->SetText(.9,.95,Form("Chi2: %f",chi)); cLab->SetTextAlign(32); cLab->SetTextSize(0.03); cLab->SetTextColor(kRed); TText *mLab = new TText(); mLab->SetNDC(); mLab->SetText(.1,.02,Form("Max: %f:",max)); mLab->SetTextAlign(12); mLab->SetTextSize(0.03); mLab->SetTextColor(kRed); TText *mLab1 = new TText(); mLab1->SetNDC(); mLab1->SetText(.1,.05,Form("Th. Max: %f",CheckInt(yield.getVal(),fwhm))); mLab1->SetTextAlign(12); mLab1->SetTextSize(0.03); mLab1->SetTextColor(kRed); P->addObject(intL); P->addObject(cLab); P->addObject(mLab); P->addObject(mLab1); P->SetTitle(" "); P->Draw(); lax.DrawLatex(0.5,0.95,"Cut #beta#beta + #gamma_{1} Fit #gamma_{2} M2"); cout << yield.getVal() << endl; cout << poly_c1.getVal() << endl; } void Fit2(){ //File Import TFile *f = new TFile("Forum.root"); TTree *t = (TTree*)f->Get("Data"); double fwhm = 5/(2*TMath::Sqrt(2*TMath::Log(2))); //RooFit Definitions //Signal RooRealVar En("Energy","Energy",536.1-50,536.1+50); RooRealVar mean("mean","mean",536.1); RooRealVar sigma("sigma","sigma",fwhm); RooGaussian gss("gss","gss",En,mean,sigma); RooRealVar yield("yield","yield",0,0,100000); //Background //Range of this is different RooRealVar poly_c1("c1","c1",0,-100,100); RooPolynomial background("background","background",En,RooArgList(poly_c1)); RooRealVar bkgy("bkgy","yield background",1,0,100000); //Setup Model RooAddPdf model("model","Total PDF",RooArgList(gss,background),RooArgList(yield,bkgy)); //Import data RooDataSet data("data","data",RooArgSet(En),Import(*t),Cut(Form("%e < Energy && Energy < %e",536.1-50,536.1+50))); //Fit model.fitTo(data,Extended(),Verbose(false)); //RooPlot RooPlot *P = En.frame(Bins(100),Range(536.1-50,536.1+50)); data.plotOn(P); model.plotOn(P,LineColor(kBlue)); model.plotOn(P,Components(background),LineColor(kRed)); Double_t chi = P->chiSquare(); En.setVal(536.1); Double_t max = model.getVal(RooArgSet(En))*data.sumEntries(); //Cosmetic TLatex lax; lax.SetNDC(); lax.SetTextAlign(22); TText *intL = new TText(); intL->SetNDC(); intL->SetText(.5,.03,Form("Integral: %f",yield.getVal())); intL->SetTextAlign(22); intL->SetTextSize(0.03); intL->SetTextColor(kBlue); TText *cLab = new TText(); cLab->SetNDC(); cLab->SetText(.9,.95,Form("Chi2: %f",chi)); cLab->SetTextAlign(32); cLab->SetTextSize(0.03); cLab->SetTextColor(kRed); TText *mLab = new TText(); mLab->SetNDC(); mLab->SetText(.1,.02,Form("Max: %f:",max)); mLab->SetTextAlign(12); mLab->SetTextSize(0.03); mLab->SetTextColor(kRed); TText *mLab1 = new TText(); mLab1->SetNDC(); mLab1->SetText(.1,.05,Form("Th. Max: %f",CheckInt(yield.getVal(),fwhm))); mLab1->SetTextAlign(12); mLab1->SetTextSize(0.03); mLab1->SetTextColor(kRed); P->addObject(intL); P->addObject(cLab); P->addObject(mLab); P->addObject(mLab1); P->SetTitle(" "); P->Draw(); lax.DrawLatex(0.5,0.95,"Cut #beta#beta + #gamma_{1} Fit #gamma_{2} M2"); cout << yield.getVal() << endl; cout << poly_c1.getVal() << endl; }