BMixing with per-event errors
// Advanced features, BMixing with per-event errors
mgmt1()
{
// Build a simple decay PDF
RooRealVar dt("dt","dt",-20,20) ;
RooRealVar dm("dm","dm",0.472) ;
RooRealVar tau("tau","tau",1.548) ;
RooRealVar w("w","mistag rate",0.1) ;
RooRealVar dw("dw","delta mistag rate",0.) ;
RooCategory mixState("mixState","B0/B0bar mixing state") ;
mixState.defineType("mixed",-1) ;
mixState.defineType("unmixed",1) ;
RooCategory tagFlav("tagFlav","Flavour of the tagged B0") ;
tagFlav.defineType("B0",1) ;
tagFlav.defineType("B0bar",-1) ;
// Build a gaussian resolution model
RooRealVar dterr("dterr","dterr",0.1,5.0) ;
RooRealVar bias1("bias1","bias1",0) ;
RooRealVar sigma1("sigma1","sigma1",1) ;
RooGaussModel gm1("gm1","gauss model 1",dt,bias1,sigma1,dterr) ;
// Construct a decay PDF, smeared with single gaussian resolution model
RooBMixDecay bmix("bmix","decay",dt,mixState,tagFlav,tau,dm,w,dw,gm1,RooDecay::DoubleSided) ;
// Generate a set of event errors
RooBifurGauss gerr("gerr","error distribution",dterr,RooRealConstant::value(0.3),
RooRealConstant::value(0.3),RooRealConstant::value(0.8)) ;
RooDataSet *errdata = gerr.generate(dterr,2000) ;
// Generate BMixing data with above set of event errors
RooDataSet *data = bmix.generate(RooArgSet(dt,mixState,tagFlav),*errdata,2000) ;
TCanvas *c = new TCanvas("c","c",1000, 400);
c->Divide(3,1);
c->cd(1) ;
RooPlot* dtframe1 = dt.frame() ;
data->plotOn(dtframe1) ;
bmix->plotOn(dtframe1,ProjWData(dterr,*data)) ; // automatically projects (sums) over mixState
dtframe1->Draw() ;
c->cd(2) ;
RooPlot* dtframe2 = dt.frame() ;
data->plotOn(dtframe2,Cut("mixState==mixState::mixed")) ;
mixState = "mixed" ;
bmix.plotOn(dtframe2,Slice(mixState),ProjWData(RooArgSet(mixState,dterr),*data)) ; // projects slice in mixState with mixState=mixed
dtframe2->Draw() ;
c->cd(3) ;
RooPlot* dtframe3 = dt.frame() ;
data->plotOn(dtframe3,Cut("mixState==mixState::unmixed")) ;
mixState = "unmixed" ;
bmix.plotOn(dtframe3,Slice(mixState),ProjWData(RooArgSet(mixState,dterr),*data)) ;// projects slice in mixState with mixState=mixed
dtframe3->Draw() ;
}
Copyright © 2000-2005 University of California, Stanford University
|