rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### TOPAZ_1989_I279575

Energy-Energy correlation at $E_{\text{CMS}}=53.3$ and $59.5$ GeV
Experiment: TOPAZ (Tristan)
Inspire ID: 279575
Status: VALIDATED
Authors:
• Peter Richardson
References:
• Phys.Lett. B227 (1989) 495-500, 1989
Beams: e- e+
Beam energies: (26.6, 26.6); (29.8, 29.8) GeV
Run details:
Measurement of the energy-energy correlation, and its assymetry in $e^+e^-$ collisions by TOPAZ at 53.3 and 59.5 GeV.
  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 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/Beam.hh" #include "Rivet/Projections/FinalState.hh" namespace Rivet { /// @brief Add a short analysis description here class TOPAZ_1989_I279575 : public Analysis { public: /// Constructor DEFAULT_RIVET_ANALYSIS_CTOR(TOPAZ_1989_I279575); /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Initialise and register projections declare(FinalState(), "FS"); // Book histograms unsigned int iloc(0); if(fuzzyEquals(sqrtS()/GeV, 53.3, 1e-3)) { iloc=1; } else if (fuzzyEquals(sqrtS()/GeV, 59.5, 1e-3)) { iloc=2; } else MSG_ERROR("Beam energy not supported!"); book(_histEEC , iloc, 1, 1); book(_histEEC_Pi, iloc, 1, 2); book(_histAEEC , iloc, 1, 3); book(_weightSum,"TMP/weightSum"); } /// Perform the per-event analysis void analyze(const Event& event) { // First, veto on leptonic events by requiring at least 4 charged FS particles const FinalState& fs = apply(event, "FS"); // Even if we only generate hadronic events, we still need a cut on numCharged >= 2. if ( fs.particles().size() < 2) { MSG_DEBUG("Failed leptonic event cut"); vetoEvent; } MSG_DEBUG("Passed leptonic event cut"); _weightSum->fill(); double Evis = 0.0; for (const Particle& p : fs.particles()) { Evis += p.E(); } double Evis2 = sqr(Evis); // (A)EEC // Need iterators since second loop starts at current outer loop iterator, i.e. no "foreach" here! for (Particles::const_iterator p_i = fs.particles().begin(); p_i != fs.particles().end(); ++p_i) { for (Particles::const_iterator p_j = p_i; p_j != fs.particles().end(); ++p_j) { const Vector3 mom3_i = p_i->momentum().p3(); const Vector3 mom3_j = p_j->momentum().p3(); const double energy_i = p_i->momentum().E(); const double energy_j = p_j->momentum().E(); const double thetaij = mom3_i.unit().angle(mom3_j.unit())/M_PI*180.; double eec = (energy_i*energy_j) / Evis2; if(p_i != p_j) eec *= 2.; if (thetaij < 90.) { _histEEC ->fill(thetaij, eec); _histAEEC->fill(thetaij, -eec); } else { _histEEC_Pi->fill(180.-thetaij, eec); _histAEEC ->fill(180.-thetaij, eec); } } } } /// Normalise histograms etc., after the run void finalize() { scale(_histEEC , 180.0/M_PI/ *_weightSum); scale(_histEEC_Pi, 180.0/M_PI/ *_weightSum); scale(_histAEEC , 180.0/M_PI/ *_weightSum); } //@} /// @name Histograms //@{ Histo1DPtr _histEEC, _histEEC_Pi, _histAEEC; CounterPtr _weightSum; //@} }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(TOPAZ_1989_I279575); }