Rivet analyses

Jet rates in e+e at JADE [35–44 GeV] and OPAL [91–189 GeV].

Experiment: JADE_OPAL (PETRA and LEP)

Inspire ID: 513337

Status: VALIDATED

Authors: - Frank Siegert - Andy Buckley

References: - Eur.Phys.J.C17:19-51,2000 - arXiv: hep-ex/0001055

Beams: e+ e-

Beam energies: (17.5, 17.5); (22.0, 22.0); (45.6, 45.6); (66.5, 66.5); (80.5, 80.5); (86.0, 86.0); (91.5, 91.5); (94.5, 94.5)GeV

Run details: - e+e jet jet (+ jets)

Differential and integrated jet rates for Durham and JADE jet algorithms. The integration cut value used for the integrated rate observables is not well-defined in the paper: the midpoint of the differential bin has been used thanks to information from Stefan Kluth and Christoph Pahl. We anyway recommend that the differential plots be preferred over the integrated ones for MC generator validation and tuning, to minimise correlations.

Source code:JADE_OPAL_2000_I513337.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/FinalState.hh"

namespace Rivet {


  /// @brief Jet rates in \f$ e^+ e^- \f$ at OPAL and JADE
  ///
  /// @author Frank Siegert
  class JADE_OPAL_2000_I513337 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(JADE_OPAL_2000_I513337)


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

    void init() {
      // Projections
      const FinalState fs;
      declare(fs, "FS");
      FastJets jadeJets = FastJets(fs, JetAlg::JADE, -1, JetMuons::ALL, JetInvisibles::DECAY);
      FastJets durhamJets = FastJets(fs, JetAlg::DURHAM, 0.7, JetMuons::ALL, JetInvisibles::DECAY);
      declare(jadeJets, "JadeJets");
      declare(durhamJets, "DurhamJets");

      // Histos
      int offset = 0;
      switch (int(sqrtS()/GeV + 0.5)) {
      case 35: offset = 7; break;
      case 44: offset = 8; break;
      case 91: offset = 9; break;
      case 133: offset = 10; break;
      case 161: offset = 11; break;
      case 172: offset = 12; break;
      case 183: offset = 13; break;
      case 189: offset = 14; break;
      default: break;
      }
      for (size_t i = 0; i < 5; ++i) {
        book(_h_R_Jade[i] ,offset, 1, i+1);
        book(_h_R_Durham[i] ,offset+9, 1, i+1);
        if (i < 4) book(_h_y_Durham[i], offset+17, 1, i+1);
      }
    }



    void analyze(const Event& e) {
      MSG_DEBUG("Num particles = " << apply<FinalState>(e, "FS").particles().size());

      const FastJets& jadejet = apply<FastJets>(e, "JadeJets");
      if (jadejet.clusterSeq()) {
        const double y_23 = jadejet.clusterSeq()->exclusive_ymerge_max(2);
        const double y_34 = jadejet.clusterSeq()->exclusive_ymerge_max(3);
        const double y_45 = jadejet.clusterSeq()->exclusive_ymerge_max(4);
        const double y_56 = jadejet.clusterSeq()->exclusive_ymerge_max(5);

        for (const auto& b : _h_R_Jade[0]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_23 < ycut) {
            _h_R_Jade[0]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Jade[1]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_34 < ycut && y_23 > ycut) {
            _h_R_Jade[1]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Jade[2]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_45 < ycut && y_34 > ycut) {
            _h_R_Jade[2]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Jade[3]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_56 < ycut && y_45 > ycut) {
            _h_R_Jade[3]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Jade[4]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_56 > ycut) {
            _h_R_Jade[4]->fill(xedge);
          }
        }
      }

      const FastJets& durjet = apply<FastJets>(e, "DurhamJets");
      if (durjet.clusterSeq()) {
        const double y_23 = durjet.clusterSeq()->exclusive_ymerge_max(2);
        const double y_34 = durjet.clusterSeq()->exclusive_ymerge_max(3);
        const double y_45 = durjet.clusterSeq()->exclusive_ymerge_max(4);
        const double y_56 = durjet.clusterSeq()->exclusive_ymerge_max(5);

        _h_y_Durham[0]->fill(y_23);
        _h_y_Durham[1]->fill(y_34);
        _h_y_Durham[2]->fill(y_45);
        _h_y_Durham[3]->fill(y_56);

        for (const auto& b : _h_R_Durham[0]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_23 < ycut) {
            _h_R_Durham[0]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Durham[1]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_34 < ycut && y_23 > ycut) {
            _h_R_Durham[1]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Durham[2]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_45 < ycut && y_34 > ycut) {
            _h_R_Durham[2]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Durham[2]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_56 < ycut && y_45 > ycut) {
            _h_R_Durham[3]->fill(xedge);
          }
        }
        for (const auto& b : _h_R_Durham[4]->bins()) {
          const string xedge = b.xEdge();
          const double ycut = std::stod(xedge);
          if (y_56 > ycut) {
            _h_R_Durham[4]->fill(xedge);
          }
        }
      }
    }



    /// Finalize
    void finalize() {
      normalize(_h_y_Durham);
      scale(_h_R_Jade, 100/sumOfWeights());
      scale(_h_R_Durham, 100/sumOfWeights());
    }

    /// @}


  private:

    /// @name Histograms
    /// @{
    BinnedHistoPtr<string> _h_R_Jade[5];
    BinnedHistoPtr<string> _h_R_Durham[5];
    Histo1DPtr _h_y_Durham[4];
    /// @}

  };



  RIVET_DECLARE_ALIASED_PLUGIN(JADE_OPAL_2000_I513337, JADE_OPAL_2000_S4300807);

}

Aliases: - JADE_OPAL_2000_S4300807