Rivet analyses

The differential cross section within the pseudorapidity range 0.8 < η < 2.0 in proton-proton collisions at $\sqrt{s} = 200$~GeV

Experiment: STAR (RHIC)

Inspire ID: 1253360

Status: VALIDATED

Authors: - Dmitry Kalinkin

References: - Phys. Rev. D 89, 012001 - DOI:10.1103/PhysRevD.89.012001 - arXiv: 1309.1800

Beams: p+ p+

Beam energies: (100.0, 100.0)GeV

Run details: none listed

The differencial inclusive cross section for pi0 production is measured at STAR using data from Run 6.

Source code:STAR_2014_I1253360.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief pi0 production cross section measured at STAR
  class STAR_2014_I1253360 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(STAR_2014_I1253360);

    const double ETA_MIN = 0.8;
    const double ETA_MAX = 2.0;
    const double DELTA_ETA = ETA_MAX - ETA_MIN;

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

    /// Book histograms and initialise projections before the run
    void init() {

      // Initialise and register projections

      const UnstableParticles fs(Cuts::eta > ETA_MIN && Cuts::eta < ETA_MAX && Cuts::pid == 111);
      declare(fs, "fs");

      // Book histograms
      book(_h_pi0_pt, 8, 1, 1);
      _axis = YODA::Axis<double>({5., 6., 7., 8., 9., 10., 12., 16.});

    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {

      if (_edges.empty())  _edges = _h_pi0_pt->xEdges();

      const Particles& particles = apply<UnstableParticles>(event, "fs").particles();

      for (const Particle& p : particles) {
        discfill(p.pT() / GeV, 1 / (p.pT() / GeV));
      }

    }

    void discfill(const double value, double weight) {
      const size_t idx = _axis.index(value);
      string edge("OTHER");
      if (idx && idx <= _edges.size()) {
        edge = _edges[idx-1];
        weight /= _axis.width(idx);
      }
      _h_pi0_pt->fill(edge, weight);
    }

    /// Normalise histograms etc., after the run
    void finalize() {

      scale(_h_pi0_pt, crossSection()/millibarn/sumW() / (2 * pi) / DELTA_ETA);

    }

    ///@}


    /// @name Histograms
    ///@{
    BinnedHistoPtr<string> _h_pi0_pt;
    YODA::Axis<double> _axis;
    vector<string> _edges;
    ///@}


  };


  RIVET_DECLARE_PLUGIN(STAR_2014_I1253360);

}