D* Producer

Purpose

At energies above 3770 MeV, the various D* particles are often produced in amounts comparable to the direct D production. The D* producer simplifies the reconstruction of these by creating D*0, D*+, or Ds* candidates from the proper DTags and daughter particles (π0, π+, or γ). The user can extract the needed D* mode in the processor, specifying which DTag modes to use via a param command in suez.

Requirements

Using the D* producer requires the header file

   #include "DStar/DStarList.h"

in the processor. The command

   prod sel DStarProd
is also required in the user's .tcl file. The user's specific D* cuts and either setup_analysis or runOnNewPass2.tcl are also recommended in the .tcl file.

Code example

   FAItem iDpListItem;
   extract(iFrame.record(Stream::kEvent), iDpListItem, "D*+_pi+");

   for (DStarList::const_iterator iDpItr =
          (*iDpListItem).particle_begin();
        iDpItr != (*iDpListItem).particle_end();
        ++iDpItr)
     {
       const DStar& iDStar = (*iDpItr).particle();
       const DTag& iD = iDStar.D();
       const NavTrack& iPion = iDStar.pion();
     }

Possible usage modes

The D* producer has a total of 12 different extract options corresponding to the various D* decay modes. Attempting to extract a DStarList without one of these options will fail with a usage error. The available options are:

Extract Parameter Included D* decay modes
D*0_SC D*0 decaying to a self-conjugate D0 (e.g. D0 -> K+K-) and either a γ or a π0
D*0_NS D*0 decaying to a not self-conjugate D0 (e.g. D0 -> π+K-) and either a γ or a π0
D*0_SC_pi0 As D*0_SC, but only including π0 modes
D*0_SC_photon As D*0_SC, but only including γ modes
D*0_NS_pi0 As D*0_NS, but only including π0 modes
D*0_NS_photon As D*0_NS, but only including γ modes
D*+ D*+ decaying to either D0 + π+ or D+ + π0 (but not to D+ + γ) (Currently disabled)
D*+_pi0 As D*+, but only including the D+ + π0 modes
D*+_pi+ As D*+, but only including the D0 + π+ modes
D*+_photon D*+ decaying to D+ + γ
Ds* Ds* decaying to Ds + γ
Ds*_pi0 Ds* decaying to Ds + π0

In all of the above, charge conjugate modes are included as well.

It is worth noting that there is no single extract call for both self-conjugate and not self-conjugate D*0. This is to avoid the adding of self-conjugate to non self-conjugate lists, which DChain doesn't like very much. If you are interested in simply looping over both types of D*0 without combining the lists, there is a simple solution.

The D*+ and Ds* parameters were chosen to exclude modes with a small (less than 10%) branching ratio.

Member functions

In addition to the standard CDCandidate function calls (e.g. mass(), charge(), matchedMCParticle()), D* mesons reconstructed from the producer have several special functions, described below.

Function callPurpose
fromPhoton() true if D* decay was to a D + γ, false otherwise
fromPi0() true if D* decay was to a D + π0, false otherwise
fromPion() true if D* decay was to a D + π+, false otherwise
photon() Returns the daughter photon (const NavShower&), if it exists
pi0() Returns the daughter π0 (const NavPi0ToGG&), if it exists
pion() Returns the daughter π+ (const NavTrack&), if it exists
D() Returns the daughter D (const DTag&)
beamEnergy() Returns the beam energy, in GeV (double)
beamConstrainedMass() Returns the beam constrained mass, in GeV: √(Ebeam2 - pD*2) (double)
deltaE() Returns ED* - Ebeam in GeV (double)
deltaM() Returns MD* - MD in GeV (double)
otherSideTracks(trackTable, otherTracks) Takes tracks from trackTable (FATable) and puts those that aren't used for the D* in otherTracks (FAConstPtrTable)
otherSideShowers(showerTable, otherShowers) Takes showers from showerTable (FATable) and puts those that aren't used for the D* in otherShowers (FAConstPtrTable)

Tcl parameters

Various cuts can (and should) be made using parameter statements in suez. Generally speaking, the D* cuts are fairly loose, so tighter cuts should be made based on the analysis. Also, since the daughter particles of D* are often very soft at CLEO-c energies, it can be useful to have looser cuts for these than for other pions, π0s, etc. Cuts on these particles are accessed through the DStar Producer rather than DTag, and the parameters should be set accordingly (e.g. even if the π0 pull mass for your analysis is the same in DTag and DStar, you should still use a parameter statement to set each one individually).

Cuts made on the D* daughter particles only affect the non-D side of the decay (e.g. setting the D* E9oE25OK to be true will not necessarily make the showers from the π0 in D0 -> K π π0 E9/E25 OK).

All told, there are 31 different tcl parameters to the DStar Producer. They can be accessed in the standard way:

param DStarProd DMassCut 0.100
param DStarProd AllowedDModes 0 200
The different parameters, with explanations are given below:

General Showers
Parameter Default Value Function
RejectTrackMatch
true
Reject any showers that have a matched track
RejectHotShowers
true
Reject any showers that are considered hot
E9oE25OK
true
Reject any showers that are not E9/E25 O.K.
UseSplitoff
false
Reject any showers that are not splitoff approved
GoodEndcapBarrel
2
Require certain endcap/barrel positions. This is an integer corresponding to levels of strictness.
0 = showers can be anywhere (no endcap/barrel restriction).
1 = showers must be in either the endcap or the barrel.
2 = at least one shower must be in the barrel (daughter π0s only; same as 1 for daughter γs).
3 = showers must be in the barrel.

Daughter Photon
Parameter Default Value Function
PhotonMinShowerE
0.025
Minimum energy (GeV) for the D* daughter photon
PhotonMaxShowerE
0.500
Maximum energy (GeV) for the D* daughter photon

Daughter π0
Parameter Default Value Function
Pi0BarrelMinShowerE
0.030
Minimum energy (GeV) for a π0 duaghter γ in the barrel.
Pi0EndcapMinShowerE
0.050
Minimum energy (GeV) for a π0 duaghter γ in the endcap.
Pi0PullMassCut
3.0
Maximum (absolute) value for the D* daughter π0's pull mass
Pi0NominalMassCut
0.500
Symmetric cut on the D* daughter π0's mass (GeV)

Daughter π+
Parameter Default Value Function
PionPIDOn
true
Use standard PID function (with following input parameters)
PionDedxSigmaMax
3.0
Maximum π+ σdE/dx for when the RICH is not used (only matters if PionPIDOn is true)
PionChi2Max
1000
Maximum π+ reduced Χ2
PionHitFracMin
0.5
Minimum ratio of actual hits to expected hits for the π+ track
PionHitFracMax
1.5
Maximum ratio of actual hits to expected hits for the π+ track
PionCosThetaMax
0.93
Maximum initial |cos(θ)| relative to the beam for the D* daughter π+ track
PionZ0Window
0.05
Maximum π+ initial distance from the origin in the z-direction
PionD0Window
0.005
Maximum π+ initial distance from the origin in the d-direction (r-direction)
PionRichMomMin
0.550
Minimum energy (GeV) before using the RICH information (only matters if PionPIDOn is true)
PionRichMinPhotons
2
Minimum number of photons required in the RICH, if passes minimum RICH momentum (only matters if PionPIDOn is true)

D* Properties
Parameter Default Value Function
DStarDeltaECutHi
2.0
Maximum value of ΔE for the D* (GeV)
DStarDeltaECutLow
-2.0
Minimum value of ΔE for the D* (GeV)
DStarMbcCutHi
3.0
Maximum beam constrained mass (GeV) for the D*
DStarMbcCutLow
0.0
Minimum beam constrained mass (GeV) for the D*
DStarMassCut
0.500
Maximum difference (GeV) between the reconstructed D* mass and the "true" D* mass.

D*/D Properties
Parameter Default Value Function
DStarDeltaMCutSym
0.500
Symmetric cut on the D*/D mass difference (GeV) about the "true" value
DStarDeltaMCutHi
0.600
The maximum D*/D mass difference (GeV)
DStarDeltaMCutLow
0.100
The minimum D*/D mass difference (GeV)
DMassCut
0.500
Maximum difference (GeV) between the reconstructed daughter D mass and the "true" D mass.
AllowedDModes
-1 -1
Vector of DTag modes that may be used for the daughter D
(-1 in the first spot = use all possible DTag modes)

A set of cuts for each D* mode can be found on the D* tcl page. These should serve as a rough starting point for an analysis.

Old Releases

As is, the D* Producer only works with releases 20060224_FULL or later. The producer can be made to work with earlier releases by checking it (and the DStar class) out from CVS and making a couple of file changes.

The original DStar/Instantiate/T_DefaultDStarCombiner.cc should be replaced with this T_DefaultDStarCombiner.cc. This is due to some name changes in the DChain/Element and DChain/List file systems. Also, the original DStarProd/Class/DStarListProxy.cc should be replaced with this DStarListProxy.cc since older releases don't have Ds modes in DTag (so Ds* will obviously not be available in older releases).

Overview of the D* producer code

For any future maintainers or just the generally curious, visit the D* code notes page for an overview of the code & possible modifications.