Docs | All | Real | Category | PDF | DataSet | Plot | Container | Misc | Aux | User

RooFit Toolkit for Data Modeling

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() ;
  
}
Last CVS Update: Top
Copyright © 2000-2005 University of California, Stanford University

Page maintained by Wouter Verkerke and David Kirkby

SourceForge.net Logo