Rivet Analyses Reference

CLEOC_2006_I728043

$\eta$, $\eta^\prime$ and $\phi$ rates and spectra in $D^0$, $D^+$ and $D_s^+$ decays
Experiment: CLEOC (CESR)
Inspire ID: 728043
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D74 (2006) 112005
Beams: e+ e-
Beam energies: (1.9, 1.9); (2.1, 2.1) GeV
Run details:
  • e+e- to hadrons via Psi(3770) for D0,D+ or at 4.17 GeV for D_s Beam energy must be specified as analysis option "ENERGY" when rivet-merge'ing samples.

Measurement of the inclusive branching ratios for $\eta$, $\eta^\prime$ and $\phi$ production in $D^0$, $D^+$ and $D_s^+$ decays. In addition the spectra for $\eta$ and $\phi$ production are also measured, in the CMS frame of the collision. N.B. The spetral information was really intended as part of the analysis to measure the inclusive branching ratios, not as a measurement, and therefore shoud be used with care. However there are few distrubtions available for D decays and therefore the spectra are still useful. Beam energy must be specified (in GeV) as analysis option "ENERGY" when rivet-merging samples.

Source code: CLEOC_2006_I728043.cc
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief eta, eta' and phi in D0, D+, Ds decays
  class CLEOC_2006_I728043 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(CLEOC_2006_I728043);


    /// @name Analysis methods
    ///@{

    /// Book histograms and initialise projections before the run
    void init() {
      // projection
      declare(UnstableParticles(),"UFS");
      // histograms
      unsigned int imin(0),imax(3);
      if(isCompatibleWithSqrtS(3.77)) imax=2;
      else if(isCompatibleWithSqrtS(4.17))	imin=2;
      else
	MSG_ERROR("Invalid CMS energy in CLEOC_2006_I728043");
      for(unsigned int ix=imin;ix<imax;++ix) {
	std::ostringstream title;
	title << "TMP/n_D_" << ix;
	book(_n_D[ix],title.str());
	book(_br_eta     [ix],1,1,ix+1);
	book(_br_etaPrime[ix],2,1,ix+1);
	book(_br_phi     [ix],3,1,ix+1);
	book(_s_eta      [ix],4,1,ix+1);
	book(_s_phi      [ix],5,1,ix+1);
      }
    }

    void fillHistos(const Particle & Dmeson, const LorentzTransform & boost) {
      Particles ssbar;
      unsigned int iMeson=0;
      if(Dmeson.abspid()==421)
	iMeson = 1;
      else if(Dmeson.abspid()==431)
	iMeson = 2;
      _n_D[iMeson]->fill();
      findDecayProducts(Dmeson,ssbar);
      for(const Particle & dec : ssbar) {
	FourMomentum p = boost.transform(dec.momentum());
	double mom=p.p3().mod();
	if(dec.pid()==221) {
	  _br_eta[iMeson]->fill(0.5);
	  _s_eta[iMeson]->fill(mom);
	}
	else if(dec.pid()==331) {
	  _br_etaPrime[iMeson]->fill(0.5);
	}
	else {
	  _br_phi[iMeson]->fill(0.5);
	  _s_phi[iMeson] ->fill(mom);
	}
      }
    }
    
    void findDecayProducts(const Particle & mother, Particles & ssbar) {
      for(const Particle & p : mother.children()) {
        int id = p.pid();
      	if (id==221 || id==331 || id==333) {
	  ssbar.push_back(p);
	  findDecayProducts(p,ssbar);
	}
	else if ( !p.children().empty() ) {
	  findDecayProducts(p,ssbar);
	}
      }
    }

    /// Perform the per-event analysis
    void analyze(const Event& event) {
      // find psi(3770)
      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
      Particles psi = ufs.particles(Cuts::pid==30443);
      // D_s
      if(psi.empty()) {
	LorentzTransform boost;
	for(const Particle & Dmeson : apply<UnstableParticles>("UFS",event).particles(Cuts::abspid==431)) {
	  fillHistos(Dmeson,boost);
	}
      }
      // D0 D+
      else {
	for(const Particle& p : psi) {
	  // boost to rest frame
	  LorentzTransform boost;
	  if (p.p3().mod() > 1*MeV)
	    boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
	  // loop over D0 and D+ children
	  for(const Particle & Dmeson : p.children()) {
	    if(Dmeson.abspid()!=411 && Dmeson.abspid()!=421) continue;
	    fillHistos(Dmeson,boost);
	  }
	}
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      unsigned int imin(0),imax(3);
      if(isCompatibleWithSqrtS(3.77))	imax=2;
      else if(isCompatibleWithSqrtS(4.17)) imin=2;
      else
	MSG_ERROR("Invalid CMS energy in CLEOC_2006_I728043");
      for(unsigned int ix=imin;ix<imax;++ix) {
	if(_n_D[ix]->effNumEntries()<=0.) continue;
      	scale(_br_eta     [ix], 100./ *_n_D[ix]);
      	scale(_br_etaPrime[ix], 100./ *_n_D[ix]);
      	scale(_br_phi     [ix], 100./ *_n_D[ix]);
      	scale(_s_eta      [ix], 100./ *_n_D[ix]);
      	scale(_s_phi      [ix], 100./ *_n_D[ix]);
      }
    }

    ///@}


    /// @name Histograms
    ///@{
    CounterPtr _n_D[3];
    Histo1DPtr _br_eta[3],_br_etaPrime[3],_br_phi[3];
    Histo1DPtr _s_eta[3], _s_phi[3];
    ///@}


  };


  RIVET_DECLARE_PLUGIN(CLEOC_2006_I728043);

}