Rivet analyses

Correlated Λc+Λ̄c production in e+e annihilations at $\sqrt{s}=10.5$ GeV

Experiment: CLEO (CESR)

Inspire ID: 552541

Status: VALIDATED

Authors: - Peter Richardson

References: - Phys.Rev. D63 (2001) 112003, 2001

Beams: e+ e-

Beam energies: (5.3, 5.3)GeV

Run details: - e+e analysis near the Υ(4S) resonance

Measurement of correlations between Λc+ and Λ̄c production in e+e annihilations at $\sqrt{s}=10.5$ GeV by the CLEO experiment. Useful fo studying models of baryon production.

Source code:CLEO_2001_I552541.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief Add a short analysis description here
  class CLEO_2001_I552541 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2001_I552541);


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

    /// Book histograms and initialise projections before the run
    void init() {

      // Initialise and register projections
      declare(UnstableParticles(), "UFS");

      book(_d_Dbar0[0], "/TMP/d_D0_low");
      book(_d_Dbar0[1], "/TMP/d_D0_high");
      book(_d_Dm[0], "/TMP/d_Dm_low");
      book(_d_Dm[1], "/TMP/d_Dm_high");
      book(_d_Lam[0], "/TMP/d_La_low");
      book(_d_Lam[1], "/TMP/d_La_high");

      book(_n_Dbar0[0][0], "/TMP/d_D0_low_low");
      book(_n_Dbar0[0][1], "/TMP/d_D0_low_high");
      book(_n_Dbar0[1][0], "/TMP/d_D0_high_low");
      book(_n_Dbar0[1][1], "/TMP/d_D0_high_high");
      book(_n_Dm[0][0], "/TMP/d_Dm_low_low");
      book(_n_Dm[0][1], "/TMP/d_Dm_low_high");
      book(_n_Dm[1][0], "/TMP/d_Dm_high_low");
      book(_n_Dm[1][1], "/TMP/d_Dm_high_high");
      book(_n_Lam[0][0], "/TMP/d_La_low_low");
      book(_n_Lam[0][1], "/TMP/d_La_low_high");
      book(_n_Lam[1][0], "/TMP/d_La_high_low");
      book(_n_Lam[1][1], "/TMP/d_La_high_high");
    }

    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
      for (const Particle& p : ufs.particles(Cuts::pid == -4122 or Cuts::pid == -411 or Cuts::pid == -421)) {
        long id1 = p.pid();
        double mom1 = p.p3().mod();
        if (mom1 < 2.3 * GeV || mom1 > 5. * GeV) continue;
        bool high1 = mom1 > 3.3 * GeV;
        if (id1 == -4122) {
          _d_Lam[high1]->fill();
        }
        else if (id1 == -411) {
          _d_Dm[high1]->fill();
        }
        else if (id1 == -421) {
          _d_Dbar0[high1]->fill();
        }
        for (const Particle& p2 : ufs.particles(Cuts::pid == 4122)) {
          if (p.p3().angle(p2.p3()) < 0.5 * M_PI) continue;
          double mom2 = p2.p3().mod();
          if (mom2 < 2.3 * GeV || mom2 > 5. * GeV) continue;
          bool high2 = mom2 > 3.3 * GeV;
          if (id1 == -4122) {
            _n_Lam[high1][high2]->fill();
          }
          else if (id1 == -411) {
            _n_Dm[high1][high2]->fill();
          }
          else if (id1 == -421) {
            _n_Dbar0[high1][high2]->fill();
          }
        }
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      Estimate0D R_D0_low_low = (*_n_Dbar0[0][0] / *_d_Dbar0[0]);
      Estimate0D R_D0_low_high = (*_n_Dbar0[0][1] / *_d_Dbar0[0]);
      Estimate0D R_D0_high_low = (*_n_Dbar0[1][0] / *_d_Dbar0[1]);
      Estimate0D R_D0_high_high = (*_n_Dbar0[1][1] / *_d_Dbar0[1]);
      Estimate0D R_Dm_low_low = (*_n_Dm[0][0] / *_d_Dm[0]);
      Estimate0D R_Dm_low_high = (*_n_Dm[0][1] / *_d_Dm[0]);
      Estimate0D R_Dm_high_low = (*_n_Dm[1][0] / *_d_Dm[1]);
      Estimate0D R_Dm_high_high = (*_n_Dm[1][1] / *_d_Dm[1]);
      Estimate0D R_Lam_low_low = (*_n_Lam[0][0] / *_d_Lam[0]);
      Estimate0D R_Lam_low_high = (*_n_Lam[0][1] / *_d_Lam[0]);
      Estimate0D R_Lam_high_low = (*_n_Lam[1][0] / *_d_Lam[1]);
      Estimate0D R_Lam_high_high = (*_n_Lam[1][1] / *_d_Lam[1]);

      for (size_t ix = 3; ix < 5; ++ix) {
        for (size_t iy = 1; iy < 5; ++iy) {
          double num(0.), den(0.), num_err(0.), den_err(0.);
          if (ix == 3) {
            if (iy == 1) {
              den = R_D0_low_low.val();
              den_err = R_D0_low_low.errPos();
            }
            else if (iy == 2) {
              den = R_D0_high_low.val();
              den_err = R_D0_high_low.errPos();
            }
            else if (iy == 3) {
              den = R_D0_low_low.val();
              den_err = R_D0_low_low.errPos();
            }
            else if (iy == 4) {
              den = R_D0_high_high.val();
              den_err = R_D0_high_high.errPos();
            }
          }
          else if (ix == 4) {
            if (iy == 1) {
              den = R_Dm_low_low.val();
              den_err = R_Dm_low_low.errPos();
            }
            else if (iy == 2) {
              den = R_Dm_high_low.val();
              den_err = R_Dm_high_low.errPos();
            }
            else if (iy == 3) {
              den = R_Dm_low_low.val();
              den_err = R_Dm_low_low.errPos();
            }
            else if (iy == 4) {
              den = R_Dm_high_high.val();
              den_err = R_Dm_high_high.errPos();
            }
          }
          if (iy == 1) {
            num = R_Lam_low_low.val();
            num_err = R_Lam_low_low.errPos();
          }
          else if (iy == 2) {
            num = R_Lam_high_low.val();
            num_err = R_Lam_high_low.errPos();
          }
          else if (iy == 3) {
            num = R_Lam_low_low.val();
            num_err = R_Lam_low_low.errPos();
          }
          else if (iy == 4) {
            num = R_Lam_high_high.val();
            num_err = R_Lam_high_high.errPos();
          }
          double val = num / den;
          double err = val >= 0. ? val * sqrt(sqr(num_err / num) + sqr(den_err / den)) : 0.;
          BinnedEstimatePtr<string> ratio;
          book(ratio, ix, 1, iy);
          ratio->bin(1).set(val, err);
        }
      }
    }

    /// @}


    /// @name Histograms
    /// @{
    CounterPtr _d_Dbar0[2], _d_Dm[2], _d_Lam[2];
    CounterPtr _n_Dbar0[2][2], _n_Dm[2][2], _n_Lam[2][2];
    /// @}
  };


  RIVET_DECLARE_PLUGIN(CLEO_2001_I552541);


}