Rivet analyses


title: ALICE_2024_I2848263

Measurement of $\omega$ meson production in pp collisions at $\sqrt{s} = 13$ TeV

Experiment: ALICE (LHC)

Inspire ID: 2848263

Status: VALIDATED

Authors: - Awais Ahmed

References: - arXiv: 2411.09432 - CERN-EP-2024-303

Beams: p+ p+

Beam energies: (6500.0, 6500.0)GeV

Run details: - Minimum-bias inelastic pp collisions at $\sqrt{s} = 13$ TeV. Events selected with a V0 coincidence trigger (V0A $\cap$ V0C). Primary vertex within $|z_{\rm vtx}| < 10$ cm from the nominal interaction point.

Measurement of the $p_{\rm T}$-differential invariant cross section $E\,{\rm d}^3\sigma/{\rm d}p^3$ of inclusive $\omega$ meson production at mid-rapidity ($|y| < 0.5$) in pp collisions at $\sqrt{s} = 13$ TeV with the ALICE detector at the LHC. The $\omega$ meson is reconstructed via its $\omega \to \pi^+\pi^-\pi^0$ decay channel using five different $\pi^0$ reconstruction methods (PCM, PCM-EMC, PCM-PHOS, PHOS, EMC). The measurement covers an unprecedented transverse-momentum range of $1.6 < p_{\rm T} < 50\,{\rm GeV}/c$, extending previous measurements by a factor of three.

Source code:ALICE_2024_I2848263.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief Measurement of omega(782) meson production in pp collisions at 13 TeV class ALICE_2024_I2848263 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2024_I2848263);

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

/// Initialize projections and book histograms
void init() {
  // Midrapidity cut |y| < 0.5
  declare(UnstableParticles(Cuts::absrap < 0.5), "UFS");

  // Book omega histogram bound directly to reference data (1, 1, 1)
  book(_h_omega, 1, 1, 1);

  // Book pi0 histogram (temporary, used for ratio calculation)
  book(_h_pi0, "TMP/pi0", refData(1, 1, 1));

  // Book ratio estimate (2, 1, 1)
  book(_s_ratio, 2, 1, 1);
}

/// Perform per-event analysis
void analyze(const Event& event) {
  const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
  for (const Particle& p : ufs.particles()) {
    if (p.pid() == 223) {
      _h_omega->fill(p.pT() / GeV);
    }
    else if (p.pid() == 111) {
      _h_pi0->fill(p.pT() / GeV);
    }
  }
}

/// Normalise histograms and apply pT scaling
void finalize() {
  // Normalization: crossSection / (sumOfWeights * 2 * PI * Delta_y)
  // Here Delta_y = 1.0 (since |y| < 0.5 means from -0.5 to 0.5)
  const double norm = crossSection() / picobarn / sumOfWeights() / (2.0 * M_PI * 1.0);

  scale(_h_omega, norm);
  scale(_h_pi0, norm);

  // Compute ratio BEFORE scaling by 1/pT
  divide(_h_omega, _h_pi0, _s_ratio);

  // Apply 1/pT invariant yield scaling to _h_omega
  for (auto& b : _h_omega->bins()) {
    if (b.xMean() > 0) {
      b.scaleW(1.0 / b.xMean());
    }
  }
}

/// @}

private:

/// @name Histograms and Estimates
/// @{
Histo1DPtr _h_omega, _h_pi0;
Estimate1DPtr _s_ratio;
/// @}

};

RIVET_DECLARE_PLUGIN(ALICE_2024_I2848263); } ```