#include using namespace RooFit; double CheckInt(double integral, double fwhm){ double max = integral/(TMath::Sqrt(2*TMath::Pi())*fwhm); return max; } void Fit(){ //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,0,10); RooRealVar poly_c2("c2","c2",0,0,10); RooBernstein background("background","background",En,RooArgList(poly_c1,poly_c2)); RooRealVar bkgy("bkgy","yield background",50,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 << "Signal Yield: " << yield.getVal() << " +/- " << yield.getError() << endl; cout << "C1: " << poly_c1.getVal() << " +/- " << poly_c1.getError() << endl; cout << "C2: " << poly_c2.getVal() << " +/- " << poly_c2.getError() << endl; cout << "Bkg. Yield: " << bkgy.getVal() << " +/- " << bkgy.getError() << endl; En.Delete(); mean.Delete(); sigma.Delete(); gss.Delete(); yield.Delete(); poly_c1.Delete(); poly_c2.Delete(); background.Delete(); bkgy.Delete(); model.Delete(); data.Delete(); }