Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > 8c86774a3e53d77cc119f53a2b94a57a > files > 1192

root-tutorial-5.34.14-2.fc18.noarch.rpm

/////////////////////////////////////////////////////////////////////////
//
// 'ADDITION AND CONVOLUTION' RooFit tutorial macro #209
// 
// Decay function p.d.fs with optional B physics 
// effects (mixing and CP violation) that can be
// analytically convolved with e.g. Gaussian resolution 
// functions
// 
// pdf1 = decay(t,tau) (x) delta(t)
// pdf2 = decay(t,tau) (x) gauss(t,m,s)
// pdf3 = decay(t,tau) (x) (f*gauss1(t,m1,s1) + (1-f)*gauss2(t,m1,s1))
// 
// 07/2008 - Wouter Verkerke 
//
/////////////////////////////////////////////////////////////////////////

#ifndef __CINT__
#include "RooGlobalFunc.h"
#endif
#include "RooRealVar.h"
#include "RooDataSet.h"
#include "RooGaussModel.h"
#include "RooAddModel.h"
#include "RooTruthModel.h"
#include "RooDecay.h"
#include "RooPlot.h"
#include "TCanvas.h"
#include "TAxis.h"
#include "TH1.h"
using namespace RooFit ;



void rf209_anaconv()
{
  // B - p h y s i c s   p d f   w i t h   t r u t h   r e s o l u t i o n
  // ---------------------------------------------------------------------

  // Variables of decay p.d.f.
  RooRealVar dt("dt","dt",-10,10) ;
  RooRealVar tau("tau","tau",1.548) ;

  // Build a truth resolution model (delta function)
  RooTruthModel tm("tm","truth model",dt) ;

  // Construct decay(t) (x) delta(t)
  RooDecay decay_tm("decay_tm","decay",dt,tau,tm,RooDecay::DoubleSided) ;

  // Plot p.d.f. (dashed)
  RooPlot* frame = dt.frame(Title("Bdecay (x) resolution")) ;
  decay_tm.plotOn(frame,LineStyle(kDashed)) ;


  // B - p h y s i c s   p d f   w i t h   G a u s s i a n   r e s o l u t i o n
  // ----------------------------------------------------------------------------

  // Build a gaussian resolution model
  RooRealVar bias1("bias1","bias1",0) ;
  RooRealVar sigma1("sigma1","sigma1",1) ;
  RooGaussModel gm1("gm1","gauss model 1",dt,bias1,sigma1) ;

  // Construct decay(t) (x) gauss1(t)
  RooDecay decay_gm1("decay_gm1","decay",dt,tau,gm1,RooDecay::DoubleSided) ;

  // Plot p.d.f. 
  decay_gm1.plotOn(frame) ;


  // B - p h y s i c s   p d f   w i t h   d o u b l e   G a u s s i a n   r e s o l u t i o n
  // ------------------------------------------------------------------------------------------

  // Build another gaussian resolution model
  RooRealVar bias2("bias2","bias2",0) ;
  RooRealVar sigma2("sigma2","sigma2",5) ;
  RooGaussModel gm2("gm2","gauss model 2",dt,bias2,sigma2) ;

  // Build a composite resolution model f*gm1+(1-f)*gm2
  RooRealVar gm1frac("gm1frac","fraction of gm1",0.5) ;
  RooAddModel gmsum("gmsum","sum of gm1 and gm2",RooArgList(gm1,gm2),gm1frac) ;

  // Construct decay(t) (x) (f*gm1 + (1-f)*gm2)
  RooDecay decay_gmsum("decay_gmsum","decay",dt,tau,gmsum,RooDecay::DoubleSided) ;

  // Plot p.d.f. (red)
  decay_gmsum.plotOn(frame,LineColor(kRed)) ;


  // Draw all frames on canvas
  new TCanvas("rf209_anaconv","rf209_anaconv",600, 600);
  gPad->SetLeftMargin(0.15) ; frame->GetYaxis()->SetTitleOffset(1.6) ; frame->Draw() ;

}