Rivet analyses


title: ALICE_2013_I1225979

Charged particle production as function of centrality, central events only, in PbPb collisions at 2.76 TeV.

Experiment: ALICE (LHC)

Inspire ID: 1225979

Status: UNVALIDATED

Authors: - Christian Bierlich

References: - Phys.Lett.B726(2013)610-622 - DOI:10.1016/j.physletb.2013.09.022 - arXiv: 1304.0347

Beams: 1000822080 1000822080

Beam energies: (287040.0, 287040.0)GeV

Run details: - PbPb minimum bias events. The analysis holds the Primary Particle definition, so don't limit decays on generator level.

Charged particle pseudorapidity density in centrality classes 0-5,5-10,10-20,20-30. Measurements cover a wide $\eta$ range from -3.5 to 5. Centrality classes refer to forward V0 spectrum, as also measured by ALICE, can be modified to use a user definition instead.

Source code:ALICE_2013_I1225979.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Analyses/AliceCommon.hh"

include "Rivet/Projections/ChargedFinalState.hh"

namespace Rivet {

/// @brief ALICE PbPb at 2.76 TeV eta distributions. class ALICE_2013_I1225979 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2013_I1225979);


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

/// Book histograms and initialise projections before the run
void init() {
  // Initialise and register projections
  // Centrality projection.
  declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_CENT_PBPB", "V0M", "V0M");
  // Projections for the 2-out-of-3 trigger.
  declare(ChargedFinalState((Cuts::eta > 2.8 && Cuts::eta < 5.1) && Cuts::pT > 0.1 * GeV), "VZERO1");
  declare(ChargedFinalState((Cuts::eta > -3.7 && Cuts::eta < -1.7) && Cuts::pT > 0.1 * GeV), "VZERO2");
  declare(ChargedFinalState(Cuts::abseta < 1. && Cuts::pT > 0.15 * GeV), "SPD");

  // Primary particles.
  declare(ALICE::PrimaryParticles(Cuts::abseta < 5.6), "APRIM");

  // The centrality bins upper bin edges.
  centralityBins = {5., 10., 20., 30.};
  // Centrality histograms and corresponding sow counters.
  for (int i = 0; i < 4; ++i) {
    book(histEta[centralityBins[i]], 1, 1, i + 1);
    book(sow[centralityBins[i]], "sow_" + toString(i));
  }
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  // Trigger projections.
  const ChargedFinalState& vz1 = apply<ChargedFinalState>(event, "VZERO1");
  const ChargedFinalState& vz2 = apply<ChargedFinalState>(event, "VZERO2");
  const ChargedFinalState& spd = apply<ChargedFinalState>(event, "SPD");
  int fwdTrig = (vz1.particles().size() > 0 ? 1 : 0);
  int bwdTrig = (vz2.particles().size() > 0 ? 1 : 0);
  int cTrig = (spd.particles().size() > 0 ? 1 : 0);

  if (fwdTrig + bwdTrig + cTrig < 2) vetoEvent;
  // We must have direct acces to the centrality projection.
  const CentralityProjection& cent = apply<CentralityProjection>(event, "V0M");
  double c = cent();
  // Find the correct centrality histogram
  auto hItr = histEta.upper_bound(c);
  if (hItr == histEta.end()) return;
  // Find the correct sow.
  auto sItr = sow.upper_bound(c);
  if (sItr == sow.end()) return;
  sItr->second->fill();

  // Fill the histograms.
  for (const auto& p : apply<ALICE::PrimaryParticles>(event, "APRIM").particles())
    if (p.abscharge() > 0) hItr->second->fill(p.eta());
}


/// Normalise histograms etc., after the run
void finalize() {
  for (int i = 0; i < 4; ++i) histEta[centralityBins[i]]->scaleW(1. / sow[centralityBins[i]]->sumW());
}

/// @}


/// @name Histograms
/// @{
vector<double> centralityBins;
map<double, Histo1DPtr> histEta;
map<double, CounterPtr> sow;
/// @}

};

RIVET_DECLARE_PLUGIN(ALICE_2013_I1225979);

} ```