Rivet analyses
Prompt Λc+ production at 5.02 TeV
Experiment: ALICE (LHC)
Inspire ID: 1829739
Status: VALIDATED
Authors: - Peter Richardson
References: - Phys.Rev.Lett. 127 (2021) 202301, 2021.
Beams: p+ p+
Beam energies: (2510.0, 2510.0)GeV
Run details: - hadronic events
Differential cross section in p⟂ for prompt Λc+ production at 5.02 TeV.
Source
code:ALICE_2021_I1829739.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief Lambda_c+ at 5.02 TeV
class ALICE_2021_I1829739 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2021_I1829739);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// projection
declare(UnstableParticles(), "UFS");
// histograms
book(_h_Lambda, 1, 1, 1);
book(_h_D, "TMP/h_D", refData(4, 1, 1));
book(_h_sig[0], 7, 1, 1);
book(_h_sig[1], 7, 1, 2);
book(_c_D, "TMP/c_D");
book(_c_Lambda, "TMP/c_Lambda");
}
/// 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");
// loop over onium states
for (const Particle& p : ufs.particles(Cuts::abspid == 4122 || Cuts::abspid == 421)) {
// prompt
if (p.fromBottom()) continue;
// skip copies due mixing
if (p.children().size() == 1 && p.children()[0].abspid() == p.abspid()) continue;
if (p.absrap() > .5) continue;
const double pT = p.perp();
if (p.abspid() == 4122) {
_h_Lambda->fill(pT);
if (pT > 1. && pT < 12.) _h_sig[0]->fill("P P --> Lc X"s);
_h_sig[1]->fill("P P --> Lc X"s);
_c_Lambda->fill();
}
else {
_h_D->fill(pT);
_c_D->fill();
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
double factor = crossSection() / microbarn / sumOfWeights();
scale(_h_Lambda, factor);
scale(_h_D, factor);
scale(_h_sig, factor);
Estimate1DPtr tmp;
// ratio prompt Lambda/D0
book(tmp, 4, 1, 1);
divide(_h_Lambda, _h_D, tmp);
// ratio lambda/D0 integrated
Estimate0D e0d = *_c_Lambda / *_c_D;
BinnedEstimatePtr<string> ratio;
book(ratio, 8, 1, 1);
auto& b = ratio->bin(1);
b.setVal(e0d.val());
if (e0d.numErrs() != 0) b.setErr(e0d.err());
}
/// @}
/// @name Histograms
/// @{
Histo1DPtr _h_Lambda, _h_D;
BinnedHistoPtr<string> _h_sig[2];
CounterPtr _c_D, _c_Lambda;
/// @}
};
RIVET_DECLARE_PLUGIN(ALICE_2021_I1829739);
}