#ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include #include "RooRealVar.h" #include "RooDataSet.h" #include #include "RooFormulaVar.h" #include "RooAddPdf.h" #include "RooExponential.h" #include "RooGaussModel.h" #include "TCanvas.h" #include "TAxis.h" #include "RooPlot.h" #include "TTree.h" #include "TCut.h" #include "TMath.h" #include "TFile.h" #include "TCanvas.h" #include "RooHist.h" #include "RooGenericPdf.h" #include "RooTruthModel.h" #include "RooGaussModel.h" #include "RooDecay.h" #include "RooProdPdf.h" #include "RooEffProd.h" #include #include "RooRandom.h" #include "RooPoisson.h" #include "RooGamma.h" #include "RooBernstein.h" #include "RooGaussian.h" #include "iostream" #include "fstream" #include "RooFitResult.h" #include "RooCBShape.h" #include "RooConstVar.h" #include "RooStats/ProfileLikelihoodCalculator.h" using namespace std; using namespace RooFit; using namespace RooStats; void totalpdftoyprofile(){ int size=0,seed,unsucess=0; RooRealVar* mass=new RooRealVar("mass","M_{#mu^{+}#mu^{-}}[ GeV/c^{2}]",4.9,5.9); RooRealVar* treco=new RooRealVar("treco","t_{reco}[ps]",1.,10.6) ; //comb RooRealVar* B1=new RooRealVar("B1", "B_1comb", 0.53, 0.0, 0.87); RooFormulaVar* B2=new RooFormulaVar("B2", "B_2comb", "1.-@0", RooArgList(*B1)); RooBernstein* mass_comb=new RooBernstein("mass_comb", "mass_comb", *mass, RooArgSet(*B1,*B2)); //Bsmass RooRealVar* meanBs=new RooRealVar("meanBs", "mean",5.36); RooRealVar *sigmacbbs=new RooRealVar("sigmacbbs","m1",0.0350); RooRealVar *tailcbbs=new RooRealVar("tailcbbs","",1.969); RooRealVar *powcbbs=new RooRealVar("powcbbs","",1.463); RooCBShape *cbsbs=new RooCBShape("cbsbs","Signal Lineshape",*mass,*meanBs,*sigmacbbs,*tailcbbs,*powcbbs); //Bdmass RooRealVar* meanBd=new RooRealVar("meanBd", "mean",5.278); RooRealVar* sigmaBd=new RooRealVar("sigmaBd","sigma1 of Gaussian",0.0337); RooRealVar *tailcbbd=new RooRealVar("tailcbbd","",2.02); RooRealVar *powcbbd=new RooRealVar("powcbbd","",1.307); RooCBShape *cbsbd=new RooCBShape("cbsbd","Signal Lineshape",*mass,*meanBd,*sigmaBd,*tailcbbd,*powcbbd); //semi RooRealVar* meansemi=new RooRealVar("meansemi", "mean",4.868); RooRealVar* sigmasemi=new RooRealVar("sigmasemi","sigma1 of Gaussian",0.155); RooGaussian* gausiansemi=new RooGaussian("gausiansemi","gaus1", *mass, *meansemi, *sigmasemi); RooRealVar* meant=new RooRealVar("meant", "mean", 0); RooRealVar* sigmat=new RooRealVar("sigmat","sigma",0.07); RooGaussModel* gm=new RooGaussModel("gm","gm", *treco,*meant,*sigmat); //RooGaussModel* gm=new RooGaussModel("gm","gm", *treco,*meant,*sigmat); RooRealVar TauBd("TauBd","",1.43); RooRealVar Tausemi("Tausemi","",1.47); //bd lifetime RooDecay* Bkg_Ctaubd =new RooDecay("Bkg_Ctaubd","",*treco,TauBd,*gm,RooDecay::SingleSided); RooRealVar* Tau=new RooRealVar("Tau","",1.615,0.00,10); RooDecay* sig_Ctau1 =new RooDecay("sig_Ctau1","",*treco,*Tau,*gm,RooDecay::SingleSided); //semi lifetime RooDecay* semi_Ctau =new RooDecay("semi_Ctau","",*treco,Tausemi,*gm,RooDecay::SingleSided); // background lifetime RooRealVar* TauBkg2=new RooRealVar("TauBkg2","",2.33,0,10); RooDecay* Bkg_Ctau2 =new RooDecay("Bkg_Ctau2","",*treco,*TauBkg2,*gm,RooDecay::SingleSided); RooRealVar* nbkg=new RooRealVar("nbkg","Background fraction",8,0,20); RooRealVar Nsig("Nsig","signal fraction",2,0,10); RooRealVar* nbd1=new RooRealVar("nbd1","Bd",1.,0,3); RooRealVar* nsemi=new RooRealVar("nsemi","semi",6,0,15); RooProdPdf* BsPdf=new RooProdPdf ("BsPdf","",RooArgList(*cbsbs,*sig_Ctau1)); RooProdPdf* BdPdf=new RooProdPdf ("BdPdf","",RooArgList(*cbsbd,*Bkg_Ctaubd) ); RooProdPdf* BkgPdf=new RooProdPdf ("BkgPdf","",RooArgList(*mass_comb,*Bkg_Ctau2) ); RooProdPdf* semiPdf=new RooProdPdf ("semiPdf","",RooArgList(*gausiansemi,*semi_Ctau)); RooAddPdf* TotPdf=new RooAddPdf("TotPdf"," Signal + Bkg Pdf",RooArgList(*BsPdf,*BdPdf,*BkgPdf,*semiPdf),RooArgList(Nsig,*nbd1,*nbkg,*nsemi) ); RooGaussian* bdconstraint=new RooGaussian("bdconstraint","bd constraint",*nbd1,RooConst(1.2),RooConst(0.2)) ; RooGaussian* semi_con=new RooGaussian("semi_con", "constraint",*nsemi,RooConst(6),RooConst(2)) ; RooArgSet ext_constr(*bdconstraint,*semi_con);//,BRBRconstraint,fs_fuconstraint); RooRandom::randomGenerator()->SetSeed(123); RooDataSet* data=TotPdf->generate(RooArgSet(*mass,*treco),Extended(true)); RooFitResult *res_min = TotPdf->fitTo(*data, ExternalConstraints(ext_constr),Save(true),Minos(true),Extended(true)); res_min->Print("v"); }