Rivet analyses


title: ALICE_2021_I1863039

$\Xi_c^ 0 $ production at 5.02 TeV

Experiment: ALICE (LHC)

Inspire ID: 1863039

Status: VALIDATED

Authors: - Peter Richardson

References: - JHEP 10 (2021) 159

Beams: p+ p+

Beam energies: (2510.0, 2510.0)GeV

Run details: - hadronic events

Differential cross section in $p_\perp$ for prompt $\Xi_c^{0}$ production at 5 TeV

Source code:ALICE_2021_I1863039.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief Xi_c0 at 5 TeV class ALICE_2021_I1863039 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2021_I1863039);


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

/// Book histograms and initialise projections before the run
void init() {
  // projection
  declare(UnstableParticles(Cuts::pid == 4132 || Cuts::pid == 421), "UFS");
  for (unsigned int ix = 0; ix < 2; ++ix) {
    book(_h_Xi_pT[ix], 1 + ix, 1, 1);
    book(_h_D0_pT[ix], "TMP/pT_D0_" + toString(ix), refData(3 + ix, 1, 1));
  }
  book(_h_Xi_pT[2], "TMP/pT_Xi", refData(4, 1, 1));
  book(_h_sig, 5, 1, 1);
  book(_c_D0, "TMP/c_D0");
  book(_c_Xi, "TMP/c_Xi");
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  // Final state of unstable particles to get particle spectra
  const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
  for (const Particle& p : ufs.particles()) {
    // no mixing
    if (p.children().size() == 1 || p.children()[0].abspid() == p.abspid()) continue;
    // rapidity cut
    if (p.absrap() > 0.5) continue;
    const double pT = p.perp();
    if (p.pid() == 421) {
      // only prompt
      if (!p.fromBottom()) {
        _h_D0_pT[0]->fill(pT);
        _h_D0_pT[1]->fill(pT);
      }
      _c_D0->fill();
    }
    else {
      // prompt
      if (!p.fromBottom()) {
        _c_Xi->fill();
        _h_sig->fill("$>$ 0.0"s);
        _h_Xi_pT[0]->fill(pT);
      }
      // inclusive
      _h_Xi_pT[1]->fill(pT);
      _h_Xi_pT[2]->fill(pT);
    }
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  const double factor = crossSection() / microbarn / sumOfWeights();
  scale(_h_Xi_pT, factor);
  scale(_h_D0_pT, factor);
  scale(_h_sig, factor);

  // ratio prompt Xi0/D0
  Estimate1DPtr tmp;
  book(tmp, 3, 1, 1);
  divide(_h_Xi_pT[0], _h_D0_pT[0], tmp);

  // ratio  inclusive Xi0/D0
  book(tmp, 4, 1, 1);
  divide(_h_Xi_pT[2], _h_D0_pT[1], tmp);

  // ratio Xi0_D0 integrated
  Estimate0D e0d = *_c_Xi / *_c_D0;
  BinnedEstimatePtr<string> ratio;
  book(ratio, 6, 1, 1);
  auto& b = ratio->bin(1);
  b.setVal(e0d.val());
  b.setErr(e0d.err());
}

/// @}


/// @name Histograms
/// @{
Histo1DPtr _h_Xi_pT[3], _h_D0_pT[2];
BinnedHistoPtr<string> _h_sig;
CounterPtr _c_D0, _c_Xi;
/// @}

};

RIVET_DECLARE_PLUGIN(ALICE_2021_I1863039);

} ```