rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ALICE_2017_I1645239

$\Lambda_\mathrm{c}^+$ production in pp collisions at $\sqrt{s} = 7$ TeV and in p-Pb collisions at $\sqrt{s_\mathrm{NN}} = 5.02$ TeV
Experiment: ALICE (LHC)
Inspire ID: 1645239
Status: VALIDATED
Authors:
  • Marco Giacalone
References: Beam energies: ANY
    No run details listed

The $p_{T}$-differential production cross section of prompt $\Lambda_{c}^{+}$ charmed baryons was measured with the ALICE detector at the Large Hadron Collider (LHC) in pp collisions at $ \sqrt{s}=7 $ TeV and in p-Pb collisions at $ \sqrt{s_{\mathrm{NN}}}=5.02 $ TeV at midrapidity. The $\Lambda_{c}^{+}$ and $ {\overline{\varLambda}}_{\overline{\mathrm{c}}} $ were reconstructed in the hadronic decay modes $\Lambda_{c}^{+} \to$ pK$^{-} \pi^{+}$, $\Lambda_{c}^{+} \to$ pK$_{S}^{0}$ and in the semileptonic channel $\Lambda_{c}^{+} \to$ e$^{+}\nu_{e} \Lambda$ (and charge conjugates). The measured values of the $\Lambda_{c}^{+}$ /D$^{0}$ ratio, which is sensitive to the c-quark hadronisation mechanism, and in particular to the production of baryons, are presented and are larger than those measured previously in different colliding systems, centre-of-mass energies, rapidity and $p_{T}$ intervals, where the $\Lambda_{c}^{+}$ production process may differ. The results are compared with the expectations obtained from perturbative Quantum Chromodynamics calculations and Monte Carlo event generators. Neither perturbative QCD calculations nor Monte Carlo models reproduce the data, indicating that the fragmentation of heavy-flavour baryons is not well understood. The first measurement at the LHC of the $\Lambda_{c}^{+}$ nuclear modification factor, $R_{pPb}$, is also presented. The $R_{pPb}$ is found to be consistent with unity and with that of D mesons within the uncertainties, and consistent with a theoretical calculation that includes cold nuclear matter effects and a calculation that includes charm quark interactions with a deconfined medium.

Source code: ALICE_2017_I1645239.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FastJets.hh"
  4#include "Rivet/Projections/FinalState.hh"
  5#include "Rivet/Projections/UnstableParticles.hh"
  6
  7namespace Rivet {
  8
  9
 10  /// Lambda_c production in pp collisions at 7 TeV and in p-Pb collisions at sqrt{sNN} = 5.02 TeV
 11  class ALICE_2017_I1645239 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2017_I1645239);
 16
 17
 18    /// @name Analysis methods
 19    /// @{
 20
 21    /// Book histograms and initialise projections before the run
 22    void init() {
 23      // Initialise and register projections
 24      declare(UnstableParticles(Cuts::absrap < 0.96), "upProj");
 25
 26      // Book histograms
 27      book(_h_Lc, 1, 1, 1);                                  // Lc in pp at 7 TeV
 28      book(_h_LcPb, 2, 1, 1);                                // Lc in p-Pb at 5.02 TeV
 29      book(_h_LcD0, 3, 1, 1);                                // Lc/D0 in pp at 7 TeV
 30      book(_h_LcD0Pb, 4, 1, 1);                              // Lc/D0 in p-Pb at 5.02 TeV
 31      book(_h_LcD0int, 5, 1, 1);                             // "Integrated" Lc/D0 in pp at 7 TeV (1 < pT < 8 GeV/c)
 32      book(_h_LcD0Pbint, 6, 1, 1);                           // "Integrated" Lc/D0 in p-Pb at 5.02 TeV (2 < pT < 12 GeV/c)
 33      book(_h_RpPb, 7, 1, 1);                                // RpPb
 34      book(_h_Lcdummy, "TMP/Lcdummy", refData(3, 1, 1));     // Lc in pp at 7 TeV with (_h_LcD0) binning
 35      book(_h_D0, "TMP/D0", refData(3, 1, 1));               // D0 in pp at 7 TeV with (_h_LcD0) binning
 36      book(_h_LcPbdummy, "TMP/LcPbdummy", refData(4, 1, 1)); // Lc in p-Pb at 5.02 TeV with (_h_LcD0Pb) binning
 37      book(_h_D0Pb, "TMP/D0Pb", refData(4, 1, 1));           // D0 in p-Pb at 5.02 TeV with (_h_LcD0Pb) binning
 38      book(_h_Lcint, "TMP/Lcint", refData(5, 1, 1));         // "Integrated" Lc in pp at 7 TeV with (_h_LcD0int) binning
 39      book(_h_D0int, "TMP/D0int", refData(5, 1, 1));         // "Integrated" D0 in pp at 7 TeV with (_h_LcD0int) binning
 40      book(_h_LcintPb, "TMP/LcintPb", refData(6, 1, 1));     // "Integrated" Lc in p-Pb at 5.02 TeV with (_h_LcD0Pbint) binning
 41      book(_h_D0intPb, "TMP/D0intPb", refData(6, 1, 1));     // "Integrated" D0 in p-Pb at 5.02 TeV with (_h_LcD0Pbint) binning
 42      book(_h_LcR, "TMP/LcR", refData(7, 1, 1));             // Lc in pp at 5.02 TeV with (_h_RpPb) binning
 43      book(_h_LcRPb, "TMP/LcRPb", refData(7, 1, 1));         // Lc in p-Pb at 5.02 TeV with (_h_RpPb) binning
 44    }
 45
 46
 47    /// Perform the per-event analysis
 48    void analyze(const Event& event) {
 49      PdgIdPair beamp = beamIDs();
 50      const UnstableParticles& upProj = apply<UnstableParticles>(event, "upProj");
 51
 52      // PDG code IDs used in the code: 2212 = p+, 4122 = Lc, 421 = D0, 1000822080 = Pb
 53      if (beamp.first == PID::PROTON && beamp.second == PID::PROTON) {
 54        // pp cycle
 55        if (isCompatibleWithSqrtS(5020*GeV)) { // pp 5.02 TeV
 56          for (const Particle& p : upProj.particles()) {
 57            if (p.fromBottom()) continue;
 58            if (p.rap() < 0.04 && p.rap() > -0.96) {
 59              // NOTE : when building the Lc reference at 5.02 TeV in pp, we
 60              // use directly here the rapidity range covered in p-Pb In the
 61              // absence of real data Lc pp 5.02 TeV, the ALICE publication
 62              // uses an FONLL-based extrapolation from Lc pp data : i) at
 63              // sqrt(s) = 7 TeV ii) in |y| < 0.5, with dedicated systematic
 64              // uncertainties due this choice.
 65              if (p.abspid() == 4122) _h_LcR->fill(p.pT() / GeV);
 66            }
 67          }
 68        } else { // pp 7 TeV
 69          for (const Particle& p : upProj.particles()) {
 70            if (p.fromBottom()) continue;
 71            if (p.absrap() < 0.5) {
 72              if (p.abspid() == 421) {
 73                _h_D0->fill(p.pT() / GeV);
 74                _h_D0int->fill(0);
 75              } // end if D0
 76              else if (p.abspid() == 4122) {
 77                _h_Lc->fill(p.pT() / GeV);
 78                _h_Lcdummy->fill(p.pT() / GeV);
 79                _h_Lcint->fill(0);
 80              } // end if Lc
 81            }   // end if |y| < 0.5
 82          }
 83        }
 84      } // end if pp beams
 85      else if ((beamp.first == 2212 && beamp.second == 1000822080) || (beamp.second == 2212 && beamp.first == 1000822080)) {
 86        // p-Pb cycle at 5.02 TeV
 87        for (const Particle& p : upProj.particles()) {
 88          if (p.fromBottom()) continue;
 89          if (p.rap() < 0.04 && p.rap() > -0.96) {
 90            if (p.abspid() == 421) {
 91              _h_D0Pb->fill(p.pT() / GeV);
 92              _h_D0intPb->fill(-0.5);
 93            } // end if D0
 94            else if (p.abspid() == 4122) {
 95              _h_LcPb->fill(p.pT() / GeV);
 96              _h_LcPbdummy->fill(p.pT() / GeV);
 97              _h_LcRPb->fill(p.pT() / GeV);
 98              _h_LcintPb->fill(-0.5);
 99            } // if Lc
100          } // end if -0.96 < y< 0.04
101        }
102      } // end p-Pb
103    }
104
105
106    /// Normalise histograms etc., after the run
107    void finalize() {
108      // NOTE 1 : At this point cross sections consider both particles and
109      // antiparticles, hence a factor 2 is added in the histos normalization
110      // in order to account for this (as done in the paper) NOTE 2 : any
111      // rapidity range here is 1-unit wide (in pp and p-Pb), no further
112      // division by 1 is requested to get dsigma/dpTdy cross section
113      if (_h_D0->numEntries() > 0) scale(_h_D0, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
114      if (_h_D0int->numEntries() > 0) scale(_h_D0int, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
115      if (_h_Lc->numEntries() > 0) scale(_h_Lc, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
116      if (_h_Lcdummy->numEntries() > 0) scale(_h_Lcdummy, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
117      if (_h_LcPbdummy->numEntries() > 0) scale(_h_LcPbdummy, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
118      if (_h_Lcint->numEntries() > 0) scale(_h_Lcint, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
119      if (_h_D0Pb->numEntries() > 0) scale(_h_D0Pb, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
120      if (_h_D0intPb->numEntries() > 0) scale(_h_D0intPb, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
121      if (_h_LcPb->numEntries() > 0) scale(_h_LcPb, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
122      if (_h_LcintPb->numEntries() > 0) scale(_h_LcintPb, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
123
124      if (_h_Lcdummy->numEntries() > 0 && _h_D0->numEntries() > 0) divide(_h_Lcdummy, _h_D0, _h_LcD0);
125      if (_h_LcPbdummy->numEntries() > 0 && _h_D0Pb->numEntries() > 0) divide(_h_LcPbdummy, _h_D0Pb, _h_LcD0Pb);
126      if (_h_Lcint->numEntries() > 0 && _h_D0int->numEntries() > 0) divide(_h_Lcint, _h_D0int, _h_LcD0int);
127      if (_h_LcintPb->numEntries() > 0 && _h_D0intPb->numEntries() > 0) divide(_h_LcintPb, _h_D0intPb, _h_LcD0Pbint);
128
129      if (_h_LcR->numEntries() > 0) scale(_h_LcR, 208 * crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section, 208 is Z_Pb
130      if (_h_LcRPb->numEntries() > 0) scale(_h_LcRPb, crossSection() / (microbarn * 2 * sumOfWeights())); // norm to cross section
131      if (_h_LcRPb->numEntries() > 0 && _h_LcR->numEntries() > 0) divide(_h_LcRPb, _h_LcR, _h_RpPb);
132    }
133
134    /// @}
135
136
137    /// @name Histograms
138    /// @{
139    Histo1DPtr _h_Lc, _h_LcPb, _h_D0, _h_D0Pb, _h_Lcint, _h_LcintPb, _h_D0int, _h_D0intPb, _h_LcR, _h_LcRPb, _h_Lcdummy,_h_LcPbdummy;
140    Estimate1DPtr _h_LcD0, _h_LcD0Pb, _h_LcD0int, _h_LcD0Pbint, _h_RpPb;
141    /// @}
142
143  };
144
145
146  RIVET_DECLARE_PLUGIN(ALICE_2017_I1645239);
147
148}