rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### OPAL_2003_I595335

Charged particle momentum spectra in $e^+e^-$ annihilation at $\sqrt{s}= 192$ GeV to $209$ GeV
Experiment: OPAL (LEP2)
Inspire ID: 595335
Status: VALIDATED
Authors:
• Peter Richardson
References:
• Eur.Phys.J. C27 (2003) 467-481
Beams: e+ e-
Beam energies: (101.0, 101.0) GeV
Run details:
• Hadronic $e^+ e^-$ events at 202 GeV.

Measurement of charged particle distributions in $e^+e^-$ annihilation at $\sqrt{s}= 192$ GeV to $209$ GeV.

Source code: OPAL_2003_I595335.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 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/ChargedFinalState.hh" #include "Rivet/Projections/Beam.hh" #include "Rivet/Projections/Thrust.hh" namespace Rivet { /// @brief Add a short analysis description here class OPAL_2003_I595335 : public Analysis { public: /// Constructor DEFAULT_RIVET_ANALYSIS_CTOR(OPAL_2003_I595335); /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Initialise and register projections declare(Beam(), "Beams"); const ChargedFinalState cfs = ChargedFinalState(); declare(cfs, "CFS"); declare(Thrust(cfs), "Thrust"); book(_h_pT_in , 1, 1, 1); book(_h_pT_out, 2, 1, 1); book(_h_y , 3, 1, 1); book(_h_x , 4, 1, 1); book(_h_xi , 5, 1, 1); book(_wSum,"TMP/wSum"); } /// Perform the per-event analysis void analyze(const Event& event) { // First, veto on leptonic events by requiring at least 4 charged FS particles const ChargedFinalState& cfs = apply(event, "CFS"); const size_t numParticles = cfs.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"); _wSum->fill(); // Get beams and average beam momentum const ParticlePair& beams = apply(event, "Beams").beams(); const double meanBeamMom = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0; MSG_DEBUG("Avg beam momentum = " << meanBeamMom); // Thrusts MSG_DEBUG("Calculating thrust"); const Thrust& thrust = apply(event, "Thrust"); for (const Particle& p : cfs.particles()) { const Vector3 mom3 = p.p3(); const double energy = p.E(); const double pTinT = dot(mom3, thrust.thrustMajorAxis()); const double pToutT = dot(mom3, thrust.thrustMinorAxis()); _h_pT_in ->fill(fabs(pTinT/GeV) ); _h_pT_out->fill(fabs(pToutT/GeV)); const double momT = dot(thrust.thrustAxis(), mom3); const double rapidityT = 0.5 * std::log((energy + momT) / (energy - momT)); _h_y->fill(fabs(rapidityT)); const double mom = mom3.mod(); const double scaledMom = mom/meanBeamMom; const double logInvScaledMom = -std::log(scaledMom); _h_xi->fill(logInvScaledMom); _h_x ->fill(scaledMom ); } } /// Normalise histograms etc., after the run void finalize() { scale(_h_pT_in , 1./ *_wSum); scale(_h_pT_out, 1./ *_wSum); scale(_h_y , 1./ *_wSum); scale(_h_x , 1./ *_wSum); scale(_h_xi , 1./ *_wSum); } //@} /// @name Histograms //@{ Histo1DPtr _h_pT_in,_h_pT_out,_h_y,_h_x,_h_xi; CounterPtr _wSum; //@} }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(OPAL_2003_I595335); }