Rivet analyses


title: STAR_2008_I793126

Multiplicities and pT spectra from STAR for $pp$ at 200 GeV

Experiment: STAR (RHIC)

Inspire ID: 793126

Status: UNVALIDATED

Authors: - Holger Schulz

References: - arXiv: 0808.2041 - http://drupal.star.bnl.gov/STAR/files/starpublications/124/data.html

Beams: p+ p+

Beam energies: (100.0, 100.0)GeV

Run details: - QCD (pp) events at 200 GeV

Charged multiplicity and identified charged particle spectra

Source code:STAR_2008_I793126.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/ChargedFinalState.hh"

include "Rivet/Projections/SmearedParticles.hh"

namespace Rivet {

/// Multiplicities and pT spectra from STAR for pp at 200 GeV class STAR_2008_I793126 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(STAR_2008_I793126);


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

/// Book histograms and initialise projections before the run
void init() {
  const ChargedFinalState cfs(Cuts::abseta < 0.5 && Cuts::pT > 0.2 * GeV);
  const SmearedParticles lfs(cfs, [](const Particle& p) {
    // Track reconstruction efficiencies for tracks with pT from 0 to 600 MeV
    // in steps of 50 MeV. The efficiency is assumed to be 0.88 for pT >= 600 MeV
    const static vector<double> TRKEFF = {0,    0,    0.38, 0.72, 0.78, 0.81,
                                          0.82, 0.84, 0.85, 0.86, 0.87, 0.88};
    const size_t idx = size_t(min(floor(p.pT() / MeV / 50), 11.));
    return TRKEFF[idx];
  });
  declare(lfs, "FS");

  book(_h_dNch, 1, 1, 1);
  book(_h_dpT_Pi, 2, 1, 1);
  book(_h_dpT_Piplus, 2, 1, 2);
  book(_h_dpT_Kaon, 2, 1, 3);
  book(_h_dpT_Kaonplus, 2, 1, 4);
  book(_h_dpT_AntiProton, 2, 1, 5);
  book(_h_dpT_Proton, 2, 1, 6);
  // book(nCutsPassed, "nCutsPassed");
  // book(nPi, "nPi");
  // book(nPiPlus, "nPiPlus");
  // book(nKaon, "nKaon");
  // book(nKaonPlus, "nKaonPlus");
  // book(nProton, "nProton");
  // book(nAntiProton, "nAntiProton");
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  const ParticleFinder& charged = apply<ParticleFinder>(event, "FS");

  // Vertex reconstruction efficiencies as a function of charged multiplicity.
  // For events with more than 23 reconstructed tracks the efficiency is 100%.
  double vtxeffs[24] = {0.000000, 0.512667, 0.739365, 0.847131, 0.906946, 0.940922, 0.959328, 0.96997,
                        0.975838, 0.984432, 0.988311, 0.990327, 0.990758, 0.995767, 0.99412,  0.992271,
                        0.996631, 0.994802, 0.99635,  0.997384, 0.998986, 0.996441, 0.994513, 1.000000};

  double vtxeff = 1.0;
  if (charged.particles().size() < 24) {
    vtxeff = vtxeffs[charged.particles().size()];
  }

  const double weight = vtxeff;

  for (const Particle& p : charged.particles()) {
    double pT = p.pT() / GeV;
    double y = p.rapidity();
    if (fabs(y) < 0.1) {
      // nCutsPassed->fill(weight);
      const PdgId id = p.pid();
      switch (id) {
        case -211:
          _h_dpT_Pi->fill(pT, weight / (TWOPI * pT * 0.2));
          // nPi->fill(weight);
          break;
        case 211:
          _h_dpT_Piplus->fill(pT, weight / (TWOPI * pT * 0.2));
          // nPiPlus->fill(weight);
          break;
        case -321:
          _h_dpT_Kaon->fill(pT, weight / (TWOPI * pT * 0.2));
          // nKaon->fill(weight);
          break;
        case 321:
          _h_dpT_Kaonplus->fill(pT, weight / (TWOPI * pT * 0.2));
          // nKaonPlus->fill(weight);
          break;
        case -2212:
          _h_dpT_AntiProton->fill(pT, weight / (TWOPI * pT * 0.2));
          // nAntiProton->fill(weight);
          break;
        case 2212:
          _h_dpT_Proton->fill(pT, weight / (TWOPI * pT * 0.2));
          // nProton->fill(weight);
          break;
      }
    }
    else {
      continue;
    }
  }
  _h_dNch->fill(charged.particles().size(), weight);
}


/// Normalise histograms etc., after the run
void finalize() {
  //double nTot = nPi + nPiPlus + nKaon + nKaonPlus + nProton + nAntiProton;
  normalize(_h_dNch);

  /// @todo Norm to data!
  normalize(_h_dpT_Pi, 0.389825);
  normalize(_h_dpT_Piplus, 0.396025);
  normalize(_h_dpT_Kaon, 0.03897);
  normalize(_h_dpT_Kaonplus, 0.04046);
  normalize(_h_dpT_AntiProton, 0.0187255);
  normalize(_h_dpT_Proton, 0.016511);
}

/// @}


/// @name Histograms
/// @{
Histo1DPtr _h_dNch;
Histo1DPtr _h_dpT_Pi, _h_dpT_Piplus;
Histo1DPtr _h_dpT_Kaon, _h_dpT_Kaonplus;
Histo1DPtr _h_dpT_AntiProton, _h_dpT_Proton;
Profile1DPtr _h_pT_vs_Nch;
//CounterPtr nCutsPassed, nPi, nPiPlus, nKaon, nKaonPlus, nProton, nAntiProton;
///@}

};

RIVET_DECLARE_ALIASED_PLUGIN(STAR_2008_I793126, STAR_2008_S7869363);

} ```

Aliases: - STAR_2008_S7869363