Rivet analyses


title: AMY_1990_I283337

Event shapes in $e^+e^-$ collisions at 55.2 GeV

Experiment: AMY (Tristan)

Inspire ID: 283337

Status: VALIDATED

Authors: none listed

References: - Phys.Rev. D41 (1990) 2675, 1990

Beams: e- e+

Beam energies: (27.6, 27.6)GeV

Run details: - e+e- to hadrons

Measurement of a wide range of event shapes by the AMY experiment at Tristan with an average centre-of-mass energy of $55.2$ GeV.

Source code:AMY_1990_I283337.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/Beam.hh"

include "Rivet/Projections/FinalState.hh"

include "Rivet/Projections/Hemispheres.hh"

include "Rivet/Projections/Sphericity.hh"

include "Rivet/Projections/Thrust.hh"

namespace Rivet {

/// @brief Event shapes at 55.2 class AMY_1990_I283337 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(AMY_1990_I283337);


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

/// Book histograms and initialise projections before the run
void init() {
  declare(Beam(), "Beams");
  const FinalState fs;
  declare(fs, "FS");
  const Sphericity sphere(fs);
  declare(sphere, "Sphericity");
  const Thrust thrust(fs);
  declare(thrust, "Thrust");
  declare(Hemispheres(sphere), "Hemispheres");
  // histograms
  book(_histRapidityT, 1, 1, 1);
  book(_histMajor, 13, 1, 1);

  book(_histScaledMom, 2, 1, 1);
  book(_histPl, 3, 1, 1);
  book(_histPt, 4, 1, 1);
  book(_histPt2, 5, 1, 1);
  book(_histPtIn, 6, 1, 1);
  book(_histPtOut, 7, 1, 1);
  book(_histMeanPtIn2, 8, 1, 1);
  book(_histMeanPtOut2, 9, 1, 1);
  book(_histNtheta, 10, 1, 1);
  book(_histEtheta, 11, 1, 1);
  book(_histThrust, 12, 1, 1);
  book(_histMinor, 14, 1, 1);
  book(_histOblateness, 15, 1, 1);
  book(_histSphericity, 16, 1, 1);
  book(_histAplanarity, 17, 1, 1);
  book(_histQx, 18, 1, 1);
  book(_histQ21, 19, 1, 1);
  book(_histRhoLight, 20, 1, 1);
  book(_histRhoHeavy, 21, 1, 1);
  book(_histRhoDiff, 22, 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 FinalState& fs = apply<FinalState>(event, "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");
  _wSum->fill();

  // Get beams and average beam momentum
  const ParticlePair& beams = apply<Beam>(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<Thrust>(event, "Thrust");
  _histThrust->fill(thrust.thrust());
  _histMajor->fill(thrust.thrustMajor());
  _histMinor->fill(thrust.thrustMinor());
  _histOblateness->fill(thrust.oblateness());
  // Sphericities
  MSG_DEBUG("Calculating sphericity");
  const Sphericity& sphericity = apply<Sphericity>(event, "Sphericity");
  _histSphericity->fill(sphericity.sphericity());
  _histAplanarity->fill(sphericity.aplanarity());
  _histQx->fill(sqrt(1. / 3.) * (sphericity.lambda1() - sphericity.lambda2()));
  _histQ21->fill(sphericity.lambda2() - sphericity.lambda3());
  // Hemispheres
  MSG_DEBUG("Calculating hemisphere variables");
  const Hemispheres& hemi = apply<Hemispheres>(event, "Hemispheres");
  _histRhoHeavy->fill(hemi.scaledM2high());
  _histRhoLight->fill(hemi.scaledM2low());
  _histRhoDiff->fill(hemi.scaledM2diff());
  // single particle distributions
  double pTIn2(0.), pTOut2(0.);
  unsigned int nCharged(0);
  for (const Particle& p : fs.particles()) {
    // Get momentum and energy of each particle.
    const Vector3 mom3 = p.p3();
    const double energy = p.E();
    const double mom = mom3.mod();
    const double scaledMom = mom / meanBeamMom;
    const double momT = dot(thrust.thrustAxis(), mom3);
    const double momS = dot(sphericity.sphericityAxis(), mom3);
    const double pTinS = dot(mom3, sphericity.sphericityMajorAxis());
    const double pToutS = dot(mom3, sphericity.sphericityMinorAxis());
    const double pT = sqrt(pow(pTinS, 2) + pow(pToutS, 2));

    const double rapidityT = 0.5 * std::log((energy + momT) / (energy - momT));
    double angle = sphericity.sphericityAxis().angle(p.p3()) / M_PI * 180.;
    if (angle > 90.) angle = 180. - angle;
    if (PID::isCharged(p.pid())) {
      _histScaledMom->fill(scaledMom);
      _histRapidityT->fill(fabs(rapidityT));
      _histPl->fill(fabs(momS));
      _histPt->fill(pT);
      _histPt2->fill(sqr(pT));
      _histPtIn->fill(fabs(pTinS));
      _histPtOut->fill(fabs(pToutS));
      pTIn2 += sqr(pTinS);
      pTOut2 += sqr(pToutS);
      _histNtheta->fill(angle);
      ++nCharged;
    }
    _histEtheta->fill(angle, energy);
  }
  if (nCharged) {
    _histMeanPtIn2->fill(pTIn2 / nCharged);
    _histMeanPtOut2->fill(pTOut2 / nCharged);
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  // histograms
  scale(_histRapidityT, 1. / *_wSum);
  scale(_histScaledMom, 1. / *_wSum);
  scale(_histPl, 1. / *_wSum);
  scale(_histPt, 1. / *_wSum);
  scale(_histPt2, 1. / *_wSum);
  scale(_histPtIn, 1. / *_wSum);
  scale(_histPtOut, 1. / *_wSum);
  scale(_histMeanPtIn2, 1. / *_wSum);
  scale(_histMeanPtOut2, 1. / *_wSum);
  scale(_histNtheta, 1. / *_wSum);
  scale(_histEtheta, 1. / *_wSum);
  scale(_histThrust, 1. / *_wSum);
  scale(_histMajor, 1. / *_wSum);
  scale(_histMinor, 1. / *_wSum);
  scale(_histOblateness, 1. / *_wSum);
  scale(_histSphericity, 1. / *_wSum);
  scale(_histAplanarity, 1. / *_wSum);
  scale(_histQx, 1. / *_wSum);
  scale(_histQ21, 1. / *_wSum);
  scale(_histRhoLight, 1. / *_wSum);
  scale(_histRhoHeavy, 1. / *_wSum);
  scale(_histRhoDiff, 1. / *_wSum);
}

/// @}


/// @name Histograms
/// @{
Histo1DPtr _histRapidityT, _histScaledMom, _histPl, _histPt, _histPt2, _histPtIn, _histPtOut,
    _histMeanPtIn2, _histMeanPtOut2, _histNtheta, _histEtheta, _histThrust, _histMajor, _histMinor,
    _histOblateness, _histSphericity, _histAplanarity, _histQx, _histQ21, _histRhoLight, _histRhoHeavy,
    _histRhoDiff;
CounterPtr _wSum;
/// @}

};

RIVET_DECLARE_PLUGIN(AMY_1990_I283337);

} ```