////#include #include "Riostream.h" #include #include #include #include #include #include #include #include #include #include #include #include "TROOT.h" #include "TFile.h" #include "TNetFile.h" #include "TRandom.h" #include "TTree.h" #include "TNtuple.h" #include "TBranch.h" #include "TClonesArray.h" #include "TStopwatch.h" #include "TStyle.h" #include "RooArgSet.h" #include "RooGlobalFunc.h" #include "RooAbsReal.h" #include "RooRealProxy.h" #include "RooRealVar.h" #include "Riostream.h" #include "RooGlobalFunc.h" #include "RooAddPdf.h" #include "RooCategory.h" #include "RooStringVar.h" #include "RooSimultaneous.h" #include "RooPlot.h" #include "RooHist.h" #include "RooDataHist.h" #include "RooChi2Var.h" #include "Riostream.h" #include "RooRealVar.h" #include "RooGaussian.h" #include "RooBifurGauss.h" #include "RooCBShape.h" #include "RooProdPdf.h" #include "RooPolynomial.h" #include "RooFormulaVar.h" #include "RooLandau.h" #include "RooLandau.h" #include "RooArgList.h" #include "RooArgSet.h" #include "RooExponential.h" #include "RooGenericPdf.h" #include "RooDataSet.h" #include "RooMCStudy.h" #include "RooFitResult.h" #include "RooGlobalFunc.h" #include "RooNumConvPdf.h" #include "RooSimultaneous.h" #include "TROOT.h" #include "pdf_bkg.h" using namespace RooFit ; int main() { TCanvas *c1 = new TCanvas("c1", "c1",15,48,700,500); ////////// Define observables to be generated ///////////////////// RooRealVar * pt = new RooRealVar("pt","pperp",80,0,300) ; RooRealVar * costet = new RooRealVar("costet","costheta_star",0.5,0,1) ; /////////////////////////////////////////////////////////////////////// ////////// Define Signal tranverse momentum shape ///////////////////// RooRealVar * A1gen = new RooRealVar("A1gen","prefactorgen1",0.55) ; RooRealVar * A2gen = new RooRealVar("A2gen","prefactorgen2",0.55) ; RooRealVar * l1gen = new RooRealVar("l1gen","lambdagen1",0.56) ; RooRealVar * l2gen = new RooRealVar("l2gen","lambdagen2",1.34) ; RooRealVar * arg1gen = new RooRealVar("arg1gen","exp_shape_parametergen 1",0.06) ; RooRealVar * arg2gen = new RooRealVar("arg2gen","exp_shape_parametergen 2",0.024) ; RooGenericPdf * gpt_siggen = new RooGenericPdf("gpt_siggen","(A1gen * pow(pt,l1gen) * exp(-arg1gen * pt) ) + (A2gen * pow(pt,l2gen) * exp(-arg2gen * pt))", RooArgSet(*pt,*A1gen,*A2gen,*l1gen,*l2gen,*arg1gen,*arg2gen)); /////////// Define Signal cos(theta_star) shape /////////////////////// RooRealVar * C2gen = new RooRealVar("C2gen","cprefactor2gen",0.03) ; RooRealVar * C4gen = new RooRealVar("C4gen","cprefactor2gen",-0.67) ; RooRealVar * C6gen = new RooRealVar("C6gen","cprefactor2gen",-0.05) ; RooGenericPdf * gcos_siggen = new RooGenericPdf("gcos_siggen","0.7 + C2gen * pow(costet,2)+ C4gen * pow(costet,4)+C6gen * pow(costet,6)", RooArgSet(*costet,*C2gen,*C4gen,*C6gen)); ///////////////////////////////////////////////////////////////////////// /////////// Define fit shapes /////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// RooRealVar * A1fit = new RooRealVar("A1fit","prefactorfit1",0.45,0,1) ; RooRealVar * l1fit = new RooRealVar("l1fit","lambdafit1",0.5,0,1) ; RooRealVar * arg1fit = new RooRealVar("arg1fit","exp shape parameterfit 1",0.07,0,0.1) ; RooRealVar * A2fit = new RooRealVar("A2fit","prefactorfit2",0.55,0,1) ; RooRealVar * l2fit = new RooRealVar("l2fit","lambdafit2",1.34,0,2) ; RooRealVar * arg2fit = new RooRealVar("arg2fit","exp shape parameterfit 2",0.024,0,0.1) ; RooGenericPdf * gpt_sigfit = new RooGenericPdf("gpt_sigfit","(A1fit * pow(pt,l1fit) * exp(-arg1fit * pt) ) + (A2fit * pow(pt,l2fit) * exp(-arg2fit * pt))", RooArgSet(*pt,*A1fit,*A2fit,*l1fit,*l2fit,*arg1fit,*arg2fit)); /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// RooRealVar * C2fit = new RooRealVar("C2fit","cprefactor2fit",0.03,0.02,0.04) ; RooRealVar * C4fit = new RooRealVar("C4fit","cprefactor2fit",-0.67,-0.68,-0.66) ; RooRealVar * C6fit = new RooRealVar("C6fit","cprefactor2fit",-0.05,-0.06,-0.04) ; RooGenericPdf * gcos_sigfit = new RooGenericPdf("gcos_sigfit","0.7 + C2fit * pow(costet,2)+ C4fit * pow(costet,4)+C6fit * pow(costet,6)", RooArgSet(*costet,*C2fit,*C4fit,*C6fit)); /////////////////////////////////////////////////////////////////////// RooProdPdf* gprod_siggen = new RooProdPdf("gprod_siggen","gprodsiggen",RooArgSet(*gpt_siggen,*gcos_siggen)) ; RooProdPdf* gprod_sigfit = new RooProdPdf("gprod_sigfit","gprodsigfit",RooArgSet(*gpt_sigfit,*gcos_sigfit)) ; /////////// Set number of toys/events to be generated //// Int_t ntoy = 20; Int_t nevent = 2000; //RooMCStudy mgr(gpt_siggen, gpt_sigfit, RooArgSet(pt)); RooMCStudy * mgr = new RooMCStudy(*gprod_siggen, *gprod_sigfit, RooArgSet(*pt,*costet),"","mvh"); //RooMCStudy mgr(gcos_siggen, gcos_sigfit, RooArgSet(costet)); mgr->generateAndFit(ntoy,nevent); return 0; }