rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

OPAL_2007_I734955

Inclusive charged hadrons in gm+gm
Experiment: OPAL (LEP II)
Inspire ID: 734955
Status: UNVALIDATED
Authors:
  • I. Helenius
References:
  • Phys.Lett. B651 (2007) 92-101
  • CERN-PH-EP-2006-038
  • arXiv: hep-ex/0612045
Beams: e+ e-
Beam energies: (91.5, 91.5); (104.5, 104.5); (98.0, 98.0) GeV
Run details:
  • e+e- collisions with center-of-mass energies from 183 GeV to 209 GeV; Inclusive production of charged hadrons in photon-photon collisions; Differential cross section as a function of p_T and \eta;

OPAL measurement for inclusive charged hadrons in photon-photon collisions et LEP-II. Data binned in invariant mass of the gm+gm system (W) with bins 10 < W < 125 GeV, 10 < W < 30 GeV, 30 < W < 50 GeV and 50 < W < 125 GeV. Charged particles within $|\eta| < 1.5$ and $p_T>120$ MeV. Maximum photon virtuality of $Q^2 < 4.5$ GeV$^2$.

Source code: OPAL_2007_I734955.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/GammaGammaFinalState.hh"
  5#include "Rivet/Projections/GammaGammaKinematics.hh"
  6
  7namespace Rivet {
  8
  9
 10  /// @brief OPAL charged hadron production in photon-photon collisions.
 11  class OPAL_2007_I734955 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_2007_I734955);
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    // Book projections and histograms
 21    void init() {
 22
 23      // Kinematics for leptons and intermediate photons.
 24      const GammaGammaKinematics gmgmkin;
 25      declare(gmgmkin, "Kinematics");
 26
 27      const GammaGammaFinalState gmgmfs(Cuts::abseta < 1.5 && Cuts::pT > 0.12*GeV && Cuts::charge != 0, gmgmkin);
 28      declare(gmgmfs, "FS");
 29
 30      // pT spectra of charged particles in W bins.
 31      book(_h_pTch[0], 1, 1, 1);
 32      book(_h_pTch[1], 2, 1, 1);
 33      book(_h_pTch[2], 3, 1, 1);
 34      book(_h_pTch[3], 4, 1, 1);
 35
 36      // eta distributions of charged particles in W bins.
 37      book(_h_etach[0], 5, 1, 1);
 38      book(_h_etach[1], 6, 1, 1);
 39      book(_h_etach[2], 7, 1, 1);
 40      book(_h_etach[3], 8, 1, 1);
 41
 42      // pT spectra of charged particles with L3-type W cuts.
 43      book(_h_pTch2[0], 9, 1, 1);
 44      book(_h_pTch2[1], 10, 1, 1);
 45
 46      // pT spectra of charged pions with L3-type W cuts.
 47      book(_h_pTpi[0], 11, 1, 1);
 48      book(_h_pTpi[1], 12, 1, 1);
 49    }
 50
 51
 52    // Do the analysis
 53    void analyze(const Event& event) {
 54
 55      // Calculate invariant mass of photon pair.
 56      const GammaGammaKinematics& kinematics = apply<GammaGammaKinematics>(event, "Kinematics");
 57
 58      const double Wgmgm = sqrt(kinematics.W2());
 59      const double Q2A = kinematics.Q2().first;
 60      const double Q2B = kinematics.Q2().second;
 61
 62      // Reject events where photon virtuality is too large.
 63      if ( Q2A > 4.5*GeV2 || Q2B > 4.5*GeV2 ) vetoEvent;
 64
 65      // Loop through charged particles.
 66      const Particles& chParticles = apply<GammaGammaFinalState>(event, "FS").particles();
 67      for (const Particle& p : chParticles) {
 68        const double pT  = p.pT() / GeV;
 69        const double eta = p.abseta();
 70
 71        // Fill charged-hadron pT-spectra.
 72        if ( inRange(Wgmgm, 10., 30. ) ) _h_pTch[0]->fill(pT);
 73        if ( inRange(Wgmgm, 30., 50. ) ) _h_pTch[1]->fill(pT);
 74        if ( inRange(Wgmgm, 50., 125.) ) _h_pTch[2]->fill(pT);
 75        if ( inRange(Wgmgm, 10., 125.) ) _h_pTch[3]->fill(pT);
 76
 77        // Fill charged-hadron eta distributions.
 78        if (pT > 3.5) {
 79          if ( inRange(Wgmgm, 10., 30. ) ) _h_etach[0]->fill(eta);
 80          if ( inRange(Wgmgm, 30., 50. ) ) _h_etach[1]->fill(eta);
 81          if ( inRange(Wgmgm, 50., 125.) ) _h_etach[2]->fill(eta);
 82          if ( inRange(Wgmgm, 10., 125.) ) _h_etach[3]->fill(eta);
 83        }
 84
 85        // Fill charged-hadron pT-spectra with only lower W bound.
 86        if (Wgmgm > 30.) _h_pTch2[0]->fill(pT);
 87        if (Wgmgm > 50.) _h_pTch2[1]->fill(pT);
 88
 89        // Fill charged-pion pT-spectra with only lower W bound.
 90        if ((p.abspid() == PID::PIPLUS || p.abspid() == PID::PIMINUS) && eta < 1.0) {
 91          if (Wgmgm > 30.) _h_pTpi[0]->fill(pT);
 92          if (Wgmgm > 50.) _h_pTpi[1]->fill(pT);
 93        }
 94
 95      }
 96
 97    }
 98
 99
100    // Finalize
101    void finalize() {
102      const double sf = crossSection()/picobarn/sumOfWeights();
103      scale(_h_pTch,  sf);
104      scale(_h_etach, sf);
105      scale(_h_pTch2, sf);
106      scale(_h_pTpi,  sf);
107    }
108
109    /// @}
110
111
112  private:
113
114    /// @name Histograms
115    /// @{
116    Histo1DPtr _h_pTch[4], _h_etach[4], _h_pTch2[2], _h_pTpi[2];
117    /// @}
118
119  };
120
121
122  RIVET_DECLARE_PLUGIN(OPAL_2007_I734955);
123
124}