rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

R209_1982_I168182

Drell Yan measurements $pp \to \mu^+\mu^- +X $ at $\sqrt{s} = 44$ and $62$ GeV at CERN ISR
Experiment: R209 (ISR CERN)
Inspire ID: 168182
Status: VALIDATED
Authors:
  • Hannes Jung hannes.jung@desy.de
References:
  • Phys. Rev. Lett., 48(1982), 302
  • DOI: 10.1103/PhysRevLett.48.302
Beams: p+ p+
Beam energies: (22.0, 22.0); (31.0, 31.0) GeV
Run details:
  • Run in pp mode (center-of-mass frame). Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Measurements of $pp \to \mu^+\mu^- +X $ at $\sqrt{s} = 44$ and $62$ GeV are compared. The data are #taken under identical conditions utilizing clean proton-proton collisions from the CERN intersecting storage rings and confirm scaling to 5%. Data encoded by Mike Whalley, read from the figure in the paper. Note also, cross sections are quoted in [nb]. The errors shown are statistical only. There is an additional 15% overall systematic uncertainty. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: R209_1982_I168182.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/FastJets.hh"
  5#include "Rivet/Projections/DileptonFinder.hh"
  6
  7namespace Rivet {
  8
  9
 10  /// Drell Yan measurements $pp \to \mu^+\mu^- +X $ at $\sqrt{s} = 44$ and $62$ GeV at CERN ISR
 11  class R209_1982_I168182 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(R209_1982_I168182);
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22
 23      // Initialise and register projections
 24      DileptonFinder zfinder(91.2*GeV, 0.1, Cuts::abseta < 10. && Cuts::abspid == PID::MUON,
 25                             Cuts::massIn(3.5*GeV, 18.0*GeV), LeptonOrigin::PROMPT, PhotonOrigin::NONE);
 26      declare(zfinder, "DileptonFinder");
 27
 28      // Book histograms
 29      if (isCompatibleWithSqrtS(62*GeV, sqrts_tol)) {
 30        MSG_DEBUG("R209: running with 62: " << sqrtS()/GeV);
 31        book(_hist_M,1, 1, 1);
 32        book(_hist_pT ,2, 1, 1);
 33      }
 34      else if (isCompatibleWithSqrtS(44*GeV, sqrts_tol)) {
 35        MSG_DEBUG("R209: running with 44: " << sqrtS()/GeV);
 36        book(_hist_M,1, 1, 2);
 37      }
 38      int Nbin = 50;
 39      book(_h_m_DiMuon,"DiMuon_mass",Nbin,0.0,30.0);
 40      book(_h_pT_DiMuon,"DiMuon_pT",Nbin,0.0,20.0);
 41      book(_h_y_DiMuon,"DiMuon_y",Nbin,-8.0, 8.0);
 42      book(_h_xF_DiMuon,"DiMuon_xF",Nbin, -1.5,  1.5);
 43    }
 44
 45
 46    /// Perform the per-event analysis
 47    void analyze(const Event& event) {
 48
 49      const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder");
 50      if (zfinder.particles().size() >= 1) {
 51
 52        double Zmass = zfinder.bosons()[0].momentum().mass()/GeV;
 53        double Zpt   = zfinder.bosons()[0].momentum().pT()/GeV;
 54        double Zpl   = zfinder.bosons()[0].momentum().pz()/GeV;
 55        double Zy    = zfinder.bosons()[0].momentum().rapidity();
 56        double xf = 2.*Zpl/sqrtS() ;
 57
 58        _h_xF_DiMuon->fill(xf);
 59        _h_m_DiMuon->fill(Zmass/GeV);
 60        _h_pT_DiMuon->fill(Zpt);
 61        _h_y_DiMuon->fill(Zy);
 62        if (isCompatibleWithSqrtS(62*GeV, sqrts_tol)) {
 63          if (Zmass > 0) _hist_M->fill(Zmass);
 64          if (Zmass > 5. && Zmass < 8.) {
 65            if (Zpt > 0) _hist_pT->fill(Zpt,1./2./Zpt);
 66          }
 67        }
 68        else if (isCompatibleWithSqrtS(44*GeV, sqrts_tol)) {
 69          if (Zmass > 0) _hist_M->fill(Zmass);
 70        }
 71      }
 72    }
 73
 74
 75    /// Normalise histograms etc., after the run
 76    void finalize() {
 77      normalize(_h_m_DiMuon);
 78      normalize(_h_pT_DiMuon);
 79      normalize(_h_xF_DiMuon);
 80      normalize(_h_y_DiMuon);
 81      scale(_hist_pT,crossSection()/nanobarn/(sumOfWeights()));
 82      scale(_hist_M,crossSection()/nanobarn/(sumOfWeights()));
 83    }
 84
 85    /// @}
 86
 87
 88    /// @name Histograms
 89    /// @{
 90    Histo1DPtr _hist_pT, _hist_M ;
 91    Histo1DPtr _h_m_DiMuon ;
 92    Histo1DPtr _h_pT_DiMuon;
 93    Histo1DPtr _h_y_DiMuon;
 94    Histo1DPtr _h_xF_DiMuon;
 95    /// @}
 96
 97    /// Energy comparison tolerance
 98    const double sqrts_tol = 0.1;
 99
100  };
101
102
103  RIVET_DECLARE_PLUGIN(R209_1982_I168182);
104
105}