D0: B semileptonic reconstruction

(Last revised: September 1, 2004 - Christos Leonidopoulos)

Introduction  - Code description (v00-00-91)

The code (CVS package: bmixing_reco) is designed as a generic B semileptonic wrapper class (Â --> D + ì + ×) that can load different "decay mode"-finders as plug-ins. It makes extensive use of  d0root utilities in:
The first three steps are common in all B semileptonic decays and implemented in the wrapper class. The last step involves different classes for the several D0, D±, DS±  decay modes. The following B semileptonic modes are currently implemented:
After identifying all the B candidates in the event, the code makes an entry (one per B candidate) with kinematic information into a root-tuple. There is a separate branch in the tree for every decay mode, so different channels can be studied in parallel for the same data sample.

A call to the B-flavor tagging class (bflavor_tag) gives the flavor of the reconstructed B at the time of production (currently using three tagging algorithms: Soft-muon, jet-charge and soft-pion/same-side tagging). The tagging information is also stored in the root-tuple.

A diagram with the code architecture of the B semileptonic reconstruction can found here.

Installation - How to use

You can have a look at the example macro ("user code": run.C) and modify it if you wish. The code is executed by running Make.C (the "makefile") with root:

% root Make.C

Some explanation of the makefile:
Make sure to include all the code in the path name:
TString incpath = gSystem->GetIncludePath();
incpath.Append(" -I$SRT_LOCAL/include -I$SRT_PUBLIC_CONTEXT/include -I$SRT_PUBLIC_CONTEXT");
gSystem->SetIncludePath(incpath.Data());


Add local library path to system's path:
TString libpath = gSystem->GetLinkedLibs()();
libpath.Append(" -L$SRT_LOCAL/lib/$BFARCH -L$SRT_PUBLIC_CONTEXT/lib/$BFARCH");
gSystem->SetLinkedLibs(libpath.Data());


Remember to load the "Physics" and "TMBTree" libraries:
gSystem->Load("libPhysics.so");
gSystem->Load("$SRT_LOCAL/TMBTreeClasses_C.so");

Remember to load the d0root code:
gSystem->ProcessLine(".X d0root_load.C");

Using the reconstruction code in your macro:
-  Add the following include in your code/macro to be able to use the B reconstruction class:
#include "bmixing_reco/BmixingRecoWrapper.hpp"

-  Construct & use a GenericDMu_Finder object:
// instantiate with: input TMBTree (could be chain), reco version,
// minimum muon pt and (muon-id) quality,
// dR cone-size, tree in output root-tuple
// *** additional muon requirement: match to track ***
GenericDMu_Finder b_finder(chain, 14.03, MUON_PT, MUON_QUAL, dR_cone_size, root_tree);

// instantiate D plug-ins here (default: all turned off)

// Ds-->Phi+Pi
b_finder.loadPhiPiFinder(true);
// Ds-->K*+K
b_finder.loadKstarKFinder(false);
// D0-->K+Pi
b_finder.loadPhiPiFinder(true);
// D+/- -->K+Pi+Pi
b_finder.loadKPiPiFinder(false);

// set abs[dca/sigma(dca)] cuts for muon, pion, kaon
// *** Implemented only for D0->Kpi mode for now ****
b_finder.setKPiFinderCut(SIGNIF_DCA_MUON, 1.0);
b_finder.setKPiFinderCut(SIGNIF_DCA_PION, 1.0);
b_finder.setKPiFinderCut(SIGNIF_DCA_KAON, 1.0);

- Event loop
for(int i = 0; i != _nevents; ++i)
{

  // find B candidates here
  if(b_finder.findB(jentry))
    root_tree->Fill();

} // event loop


A list of access methods & more documentation can be found here

Description of the output root-file structure: There is a base class (B) that contains the most basic kinematic information (common in all decay modes). This is typically stored in a separate sub-branch. In the parent directory one can find the remaining variables that are unique to the specific decay mode. The current root version requires this implementation if all leaves are to be accessible with a TBrowser. More details can be found here (click on the "source file" of the class page linked off the index).

Technical stuff:

Versioning history:

Here

Older versions of this page:

v00-00-50 (November 20, 2003)
v00-00-23 (November 18, 2003)
v00-00-15 (September 20, 2003)
v00-00-11 (September 11, 2003)

Please send questions, comments and corrections to  Christos Leonidopoulos