#include "RooRealVar.h" #include "RooDataSet.h" #include "RooExponential.h" #include "RooChebychev.h" #include "RooAddPdf.h" #include "RooArgSet.h" #include "RooExtendPdf.h" #include "TFile.h" #include "TString.h" using namespace RooFit; #define Blind #ifdef Blind #define ExtendPdf #endif Double_t xMin = 4766; Double_t xMax = 5966; Double_t xbMin = 5166; Double_t xbMax = 5526; int BkgFit() { RooRealVar mass("mass","mass",xMin,xMax); mass.setRange("allRange",xMin,xMax); mass.setRange("lowerSB",xMin,xbMin); mass.setRange("upperSB",xbMax,xMax); #ifdef Blind TString fitRange = "lowerSB,upperSB"; #else TString fitRange = "allRange"; #endif RooRealVar aCheb("aCheb","aCheb",-2.0164e-01,-10.,10.); RooChebychev *Cheb = new RooChebychev("Cheb","Cheb",mass,aCheb); RooRealVar aExpo("aExpo","aExpo",-4.8184e-03,-10.,10.); RooExponential *Expo = new RooExponential("Expo","Expo",mass,aExpo); RooRealVar nCheb("nCheb","nCheb",8000,-10000,10000); //8.4738e+03 RooRealVar nExpo("nExpo","nExpo",700,-10000,10000); //6.9946e+02 #ifdef ExtendPdf RooExtendPdf *ExtExpo = new RooExtendPdf("ExtExpo","ExtExpo",*Expo,nExpo,fitRange); RooExtendPdf *ExtCheb = new RooExtendPdf("ExtCheb","ExtCheb",*Cheb,nCheb,fitRange); RooAddPdf *CombModel = new RooAddPdf("CombModel","CombModel",RooArgList(*ExtExpo,*ExtCheb)); #else RooAddPdf *CombModel = new RooAddPdf("CombModel","CombModel",RooArgList(*Cheb,*Expo),RooArgList(nCheb,nExpo)); #endif TFile *file = new TFile("BkgCombModel.root","OPEN"); RooDataSet *CombModelData = (RooDataSet*)file->Get("CombModelData"); CombModel->fitTo(*CombModelData,Extended(kTRUE),Save(),Range(fitRange),PrintLevel(3)); RooPlot *frame = mass.frame("mass","mass"); CombModelData->plotOn(frame,Binning(30)); CombModel->plotOn(frame,LineColor(kBlue),Range(fitRange),NormRange(fitRange)); frame->Draw(); return 0; }