Rivet analyses


title: LHCB_2020_I1760788

$\Xi^{++}_{cc}$ production at 13 TeV

Experiment: LHCB (LHC)

Inspire ID: 1760788

Status: VALIDATED

Authors: - Peter Richardson

References: - Chin.Phys.C 44 (2020) 2, 022001

Beams: p+ p+

Beam energies: (6500.0, 6500.0)GeV

Run details: - hadronic events at 13 TeV

Measurement of the rate of $\Xi^{++}{cc}$ production, multiplied by the branching ratio for the decay $\Xi^{++}{cc}\to\Lambda_c^+K^-\pi^+\pi^+$, relative to the rate for prompt $\Lambda_c^+$ production in the transverse momentum range $4<p_\perp<15$\,GeV and rapidity range $2<y<4.5$. This is currently the only measurement of the rate of doubly heavy baryon production.

Source code:LHCB_2020_I1760788.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief xi_cc++ production class LHCB_2020_I1760788 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2020_I1760788);


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

/// Book histograms and initialise projections before the run
void init() {
  // projections
  declare(UnstableParticles(), "UFS");
  // histograms
  book(_n_lambda_c, "TMP/nLambdac");
  for (unsigned int ix = 0; ix < 2; ++ix) book(_n_Xicc[ix], "TMP/nXicc_" + toString(ix));
  book(_h_xi, 1, 1, 1);
}

void findDecayProducts(Particle mother,
                       double sign,
                       Particles& lambdac,
                       Particles& Km,
                       Particles& pip,
                       unsigned int& nstable) {
  for (const Particle& p : mother.children()) {
    if (p.pid() == 4122 * sign)
      lambdac.push_back(p);
    else if (p.pid() == -321 * sign)
      Km.push_back(p);
    else if (p.pid() == 211 * sign)
      pip.push_back(p);
    else if (p.pid() == 111 || p.children().empty())
      ++nstable;
    else
      findDecayProducts(p, sign, lambdac, Km, pip, nstable);
  }
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  if (_edges.empty()) _edges = _h_xi->xEdges();
  const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
  for (const Particle& p : ufs.particles(Cuts::abspid == 4122 || Cuts::abspid == 4422)) {
    if (p.abspid() == 4422) {
      Particles lambdac, Km, pip;
      unsigned int nstable = 0;
      double sign = p.pid() > 0 ? 1. : -1.;
      findDecayProducts(p, sign, lambdac, Km, pip, nstable);
      if (lambdac.size() == 1 && Km.size() == 1 && pip.size() == 2 && nstable == 0) _n_Xicc[0]->fill();
      _n_Xicc[1]->fill();
    }
    // pT and rapidity cuts
    double pT = p.perp();
    if (pT < 4. || pT > 15.) continue;
    double y = p.absrap();
    if (y < 2. || y > 4.5) continue;
    if (p.abspid() == 4422) {
      for (const string& tau : _edges) _h_xi->fill(tau);
    }
    else
      _n_lambda_c->fill();
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  // scale by Xi_cc br
  if (_n_Xicc[1]->effNumEntries() > 0.) scale(_h_xi, *_n_Xicc[0] / *_n_Xicc[1]);
  // and by lambda_c rate for normalisation (10^6 as rate in units 10^-4)
  if (_n_lambda_c->effNumEntries() > 0.) scale(_h_xi, 1e4 / *_n_lambda_c);
}

/// @}


/// @name Histograms
/// @{
BinnedHistoPtr<string> _h_xi;
CounterPtr _n_lambda_c, _n_Xicc[2];
vector<string> _edges;
/// @}

};

RIVET_DECLARE_PLUGIN(LHCB_2020_I1760788);

} ```