rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

OPAL_1998_I470419

Photon and Light Meson Production in Hadronic $Z^0$ Decays
Experiment: OPAL (LEP 1)
Inspire ID: 470419
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Eur.Phys.J.C5:411-437,1998
  • hep-ex/9805011
Beams: e+ e-
Beam energies: (45.6, 45.6) GeV
Run details:
  • Hadronic Z decay events generated on the Z pole ($\sqrt{s} = 91.2$ GeV)

The inclusive production rates and differential cross sections of photons and mesons with a final state containing photons have been measured with the OPAL detector at LEP. The light mesons covered by the measurements are the $\pi^0$, $\eta$, $\rho(770)^\pm$, $\omega(782)$, $\eta'(958)$ and $a_0(980)^\pm$.

Source code: OPAL_1998_I470419.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/FinalState.hh"
  5#include "Rivet/Projections/ChargedFinalState.hh"
  6#include "Rivet/Projections/UnstableParticles.hh"
  7
  8namespace Rivet {
  9
 10
 11  /// @brief OPAL photon/light meson paper
 12  ///
 13  /// @author Peter Richardson
 14  class OPAL_1998_I470419 : public Analysis {
 15  public:
 16
 17    RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1998_I470419);
 18
 19
 20    /// @name Analysis methods
 21    /// @{
 22
 23    void init() {
 24      declare(Beam(), "Beams");
 25      declare(ChargedFinalState(), "FS");
 26      declare(UnstableParticles(), "UFS");
 27      book(_histXePhoton   , 2, 1, 1);
 28      book(_histXiPhoton   , 3, 1, 1);
 29      book(_histXePi       , 4, 1, 1);
 30      book(_histXiPi       , 5, 1, 1);
 31      book(_histXeEta      , 6, 1, 1);
 32      book(_histXiEta      , 7, 1, 1);
 33      book(_histXeRho      , 8, 1, 1);
 34      book(_histXiRho      , 9, 1, 1);
 35      book(_histXeOmega    ,10, 1, 1);
 36      book(_histXiOmega    ,11, 1, 1);
 37      book(_histXeEtaPrime ,12, 1, 1);
 38      book(_histXiEtaPrime ,13, 1, 1);
 39      book(_histXeA0       ,14, 1, 1);
 40      book(_histXiA0       ,15, 1, 1);
 41    }
 42
 43
 44    void analyze(const Event& e) {
 45      // First, veto on leptonic events by requiring at least 4 charged FS particles
 46      const FinalState& fs = apply<FinalState>(e, "FS");
 47      const size_t numParticles = fs.particles().size();
 48
 49      // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
 50      if (numParticles < 2) {
 51        MSG_DEBUG("Failed leptonic event cut");
 52        vetoEvent;
 53      }
 54      MSG_DEBUG("Passed leptonic event cut");
 55
 56      // Get beams and average beam momentum
 57      const ParticlePair& beams = apply<Beam>(e, "Beams").beams();
 58      const double meanBeamMom = ( beams.first.p3().mod() +
 59                                   beams.second.p3().mod() ) / 2.0;
 60      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
 61
 62      // Final state of unstable particles to get particle spectra
 63      const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
 64
 65      for (const Particle& p : ufs.particles()) {
 66        const int id = p.abspid();
 67        double xi = -log(p.p3().mod()/meanBeamMom);
 68        double xE = p.E()/meanBeamMom;
 69        switch (id) {
 70        case 22: // Photons
 71          _histXePhoton->fill(xE);
 72          _histXiPhoton->fill(xi);
 73          break;
 74        case 111: // Neutral pions
 75          _histXePi->fill(xE);
 76          _histXiPi->fill(xi);
 77          break;
 78        case 221: // eta
 79          _histXeEta->fill(xE);
 80          _histXiEta->fill(xi);
 81          break;
 82        case 213: // Charged rho (770)
 83          _histXeRho->fill(xE);
 84          _histXiRho->fill(xi);
 85          break;
 86        case 223: // omega (782)
 87          _histXeOmega->fill(xE);
 88          _histXiOmega->fill(xi);
 89          break;
 90        case 331: // eta' (958)
 91          _histXeEtaPrime->fill(xE);
 92          _histXiEtaPrime->fill(xi);
 93          break;
 94        case 9000211: // Charged a_0 (980)
 95          _histXeA0->fill(xE);
 96          _histXiA0->fill(xi);
 97          break;
 98        }
 99      }
100    }
101
102
103    /// Finalize
104    void finalize() {
105      scale(_histXePhoton  , 1./sumOfWeights());
106      scale(_histXiPhoton  , 1./sumOfWeights());
107      scale(_histXePi      , 1./sumOfWeights());
108      scale(_histXiPi      , 1./sumOfWeights());
109      scale(_histXeEta     , 1./sumOfWeights());
110      scale(_histXiEta     , 1./sumOfWeights());
111      scale(_histXeRho     , 1./sumOfWeights());
112      scale(_histXiRho     , 1./sumOfWeights());
113      scale(_histXeOmega   , 1./sumOfWeights());
114      scale(_histXiOmega   , 1./sumOfWeights());
115      scale(_histXeEtaPrime, 1./sumOfWeights());
116      scale(_histXiEtaPrime, 1./sumOfWeights());
117      scale(_histXeA0      , 1./sumOfWeights());
118      scale(_histXiA0      , 1./sumOfWeights());
119    }
120
121    /// @}
122
123
124  private:
125
126    /// @{
127    Histo1DPtr _histXePhoton;
128    Histo1DPtr _histXiPhoton;
129    Histo1DPtr _histXePi;
130    Histo1DPtr _histXiPi;
131    Histo1DPtr _histXeEta;
132    Histo1DPtr _histXiEta;
133    Histo1DPtr _histXeRho;
134    Histo1DPtr _histXiRho;
135    Histo1DPtr _histXeOmega;
136    Histo1DPtr _histXiOmega;
137    Histo1DPtr _histXeEtaPrime;
138    Histo1DPtr _histXiEtaPrime;
139    Histo1DPtr _histXeA0;
140    Histo1DPtr _histXiA0;
141    /// @}
142
143  };
144
145
146
147  RIVET_DECLARE_ALIASED_PLUGIN(OPAL_1998_I470419, OPAL_1998_S3749908);
148
149}