{ TFile* W = new TFile("sandbox/W3JETS.root"); TString Dir = "muTauEventTree/eventTree"; TTree* tree = W->Get(Dir); TString Cut = "pt1>20 && pt2>20 && nJetsPt20>=2 && vbfMVA>0 && mt1<40 && diLeptons==0 && charge!=0"; TFile *file = new TFile("TEMP.root","recreate"); TTree *Tree = tree->CopyTree(Cut); RooRealVar svMass("svMass","svMass",0,500); RooRealVar pt1("pt1","pt1",10,250); RooRealVar pt2("pt2","pt2",10,250); RooRealVar __WEIGHT__("__WEIGHT__","__WEIGHT__",0,5); RooRealVar __CORR__("__CORR__","__CORR__",0,5); RooRealVar Lumi("Lumi","Lumi",5100.); RooFormulaVar weight("weight","weight","__WEIGHT__*__CORR__*Lumi", RooArgSet(__WEIGHT__,__CORR__,Lumi)); RooArgSet ntupleVarSet(svMass, pt1, pt2, weight, __WEIGHT__, __CORR__, Lumi); TH1* h = new TH1*(); TCanvas *c1 = new TCanvas(); using namespace RooFit; RooRealVar mean("mean","mean",150,80,200); RooRealVar sigma("sigma","sigma",20,0,100); RooRealVar sigma2("sigma2","sigma2",20,0,100); RooGaussian gauss("gauss","gaussian PDF", svMass, mean, sigma); RooLandau Land("Land","Land",svMass,mean,sigma2) ; RooRealVar s("s", "signal yield", 100, 0, 10000); RooRealVar b("b", "background yield", 100, 0, 10000); RooAddPdf sum("sum", "gaussian plus exponential PDF",RooArgList(gauss, Land),RooArgList(s,b)); RooDataSet WData("WData", "WData", Tree, ntupleVarSet,"",weight->GetName()); RooFitResult* fit_result = sum.fitTo(WData, Save(true),SumW2Error(kTRUE)) ; RooPlot* C = svMass.frame(RooFit::Bins(20)) ; WData.plotOn(C,DataError(RooAbsData::SumW2)) ; sum.plotOn(C,RooFit::VisualizeError(*fit_result, 1.0),RooFit::FillColor(5)) ; sum.plotOn(C,RooFit::LineColor(1)); WData.plotOn(C,DataError(RooAbsData::SumW2)) ; C->GetXaxis()->SetTitle("M_{#tau#tau} [GeV]"); C->Draw(); Double_t MEAN = mean.getVal(); Double_t MEANErr = mean.getError(); Double_t SIGMAG = sigma.getVal(); Double_t SIGMAGErr = sigma.getError(); Double_t SIGMAL = sigma2.getVal(); Double_t SIGMALErr = sigma2.getError(); Printf("Mean = %0.3f +/- %0.3f", MEAN, MEANErr); Printf("Gaus Width = %0.3f +/- %0.3f", SIGMAG, SIGMAGErr); Printf("Land Width = %0.3f +/- %0.3f", SIGMAL, SIGMALErr); }