Rivet Analyses Reference

OPAL_1998_S3749908

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_S3749908.cc
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief OPAL photon/light meson paper
  ///
  /// @author Peter Richardson
  class OPAL_1998_S3749908 : public Analysis {
  public:

    RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1998_S3749908);


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

    void init() {
      declare(Beam(), "Beams");
      declare(ChargedFinalState(), "FS");
      declare(UnstableParticles(), "UFS");
      book(_histXePhoton   , 2, 1, 1);
      book(_histXiPhoton   , 3, 1, 1);
      book(_histXePi       , 4, 1, 1);
      book(_histXiPi       , 5, 1, 1);
      book(_histXeEta      , 6, 1, 1);
      book(_histXiEta      , 7, 1, 1);
      book(_histXeRho      , 8, 1, 1);
      book(_histXiRho      , 9, 1, 1);
      book(_histXeOmega    ,10, 1, 1);
      book(_histXiOmega    ,11, 1, 1);
      book(_histXeEtaPrime ,12, 1, 1);
      book(_histXiEtaPrime ,13, 1, 1);
      book(_histXeA0       ,14, 1, 1);
      book(_histXiA0       ,15, 1, 1);
    }


    void analyze(const Event& e) {
      // First, veto on leptonic events by requiring at least 4 charged FS particles
      const FinalState& fs = apply<FinalState>(e, "FS");
      const size_t numParticles = fs.particles().size();

      // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
      if (numParticles < 2) {
        MSG_DEBUG("Failed leptonic event cut");
        vetoEvent;
      }
      MSG_DEBUG("Passed leptonic event cut");

      // Get beams and average beam momentum
      const ParticlePair& beams = apply<Beam>(e, "Beams").beams();
      const double meanBeamMom = ( beams.first.p3().mod() +
                                   beams.second.p3().mod() ) / 2.0;
      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);

      // Final state of unstable particles to get particle spectra
      const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");

      for (const Particle& p : ufs.particles()) {
        const int id = p.abspid();
        double xi = -log(p.p3().mod()/meanBeamMom);
        double xE = p.E()/meanBeamMom;
        switch (id) {
        case 22: // Photons
          _histXePhoton->fill(xE);
          _histXiPhoton->fill(xi);
          break;
        case 111: // Neutral pions
          _histXePi->fill(xE);
          _histXiPi->fill(xi);
          break;
        case 221: // eta
          _histXeEta->fill(xE);
          _histXiEta->fill(xi);
          break;
        case 213: // Charged rho (770)
          _histXeRho->fill(xE);
          _histXiRho->fill(xi);
          break;
        case 223: // omega (782)
          _histXeOmega->fill(xE);
          _histXiOmega->fill(xi);
          break;
        case 331: // eta' (958)
          _histXeEtaPrime->fill(xE);
          _histXiEtaPrime->fill(xi);
          break;
        case 9000211: // Charged a_0 (980)
          _histXeA0->fill(xE);
          _histXiA0->fill(xi);
          break;
        }
      }
    }


    /// Finalize
    void finalize() {
      scale(_histXePhoton  , 1./sumOfWeights());
      scale(_histXiPhoton  , 1./sumOfWeights());
      scale(_histXePi      , 1./sumOfWeights());
      scale(_histXiPi      , 1./sumOfWeights());
      scale(_histXeEta     , 1./sumOfWeights());
      scale(_histXiEta     , 1./sumOfWeights());
      scale(_histXeRho     , 1./sumOfWeights());
      scale(_histXiRho     , 1./sumOfWeights());
      scale(_histXeOmega   , 1./sumOfWeights());
      scale(_histXiOmega   , 1./sumOfWeights());
      scale(_histXeEtaPrime, 1./sumOfWeights());
      scale(_histXiEtaPrime, 1./sumOfWeights());
      scale(_histXeA0      , 1./sumOfWeights());
      scale(_histXiA0      , 1./sumOfWeights());
    }

    /// @}


  private:

    /// @{
    Histo1DPtr _histXePhoton;
    Histo1DPtr _histXiPhoton;
    Histo1DPtr _histXePi;
    Histo1DPtr _histXiPi;
    Histo1DPtr _histXeEta;
    Histo1DPtr _histXiEta;
    Histo1DPtr _histXeRho;
    Histo1DPtr _histXiRho;
    Histo1DPtr _histXeOmega;
    Histo1DPtr _histXiOmega;
    Histo1DPtr _histXeEtaPrime;
    Histo1DPtr _histXiEtaPrime;
    Histo1DPtr _histXeA0;
    Histo1DPtr _histXiA0;
    /// @}

  };



  RIVET_DECLARE_ALIASED_PLUGIN(OPAL_1998_S3749908, OPAL_1998_I470419);

}