Rivet analyses
Ξ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 Ξcc++ production, multiplied by the branching ratio for the decay Ξcc++ → Λc+K−π+π+, relative to the rate for prompt Λc+ production in the transverse momentum range 4 < p⟂ < 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++ -*-
#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);
}