Rivet analyses


title: NUSEA_2003_I613362

Drell-Yan dimuon absolute cross-sections in 800 GeV pp and pd collisions

Experiment: NUSEA (Fermilab)

Inspire ID: 613362

Status: VALIDATED

Authors: none listed

References: - FERMILAB-PUB-03-302-E - arXiv: hep-ex/0302019 - J. C. Webb (PhD thesis) hep-ex/0301031

Beams: p+ p+

Beam energies: (19.4, 19.4)GeV

Run details: - Run in pp mode (center-of-mass frame)

The Fermilab E866/NuSea Collaboration has measured the Drell-Yan dimuon cross sections in 800 GeV/c pp and pd collisions. This represents the first measurement of the Drell-Yan cross section in pp collisions over a broad kinematic region and the most extensive study to date of the Drell-Yan cross section in pd collisions. Coded 2003 by Mike Whalley and 2016 by Arathi Ramesh (DESY) using the data tables in hep-ex/0301031.

Source code:NUSEA_2003_I613362.cc

```c++

include "Rivet/Analysis.hh"

include "Rivet/Projections/DileptonFinder.hh"

include "Rivet/Projections/FastJets.hh"

include "Rivet/Projections/FinalState.hh"

include "Rivet/Projections/IdentifiedFinalState.hh"

include "Rivet/Projections/MissingMomentum.hh"

namespace Rivet {

/// Drell-Yan dimuon absolute cross-sections in 800 GeV pp and pd collisions class NUSEA_2003_I613362 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(NUSEA_2003_I613362);


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

/// Book histograms and initialise projections before the run
void init() {

  // Projections
  DileptonFinder zfinder(91.2 * GeV, 0.0, Cuts::abseta < 10. && Cuts::abspid == PID::MUON,
                         Cuts::massIn(4.0 * GeV, 100.0 * GeV));
  declare(zfinder, "DileptonFinder");

  // Booking histograms
  // hydrogen d01-d16
  book(_hist_M_xF,
       {-0.05, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8});
  for (auto& b : _hist_M_xF->bins()) {
    book(b, b.index(), 1, 1);
  }

  // deuterium d17-d32

  // hydrogen d40
  book(_hist_pT_M, {4.2, 5.2, 6.2, 7.2, 8.7, 10.85, 12.85});
  _hist_pT_M->maskBin(5);
  int idx = 0;
  for (auto& b : _hist_pT_M->bins()) {
    book(b, 40, 1, ++idx);
  }
}


/// Perform the per-event analysis
void analyze(const Event& event) {

  // Muons
  const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder");
  if (zfinder.particles().size() <= 0) vetoEvent;

  double Zmass = zfinder.bosons()[0].mom().mass() / GeV;
  double Zpt = zfinder.bosons()[0].mom().pT() / GeV;
  double Zpl = zfinder.bosons()[0].mom().pz() / GeV;
  double ZE = zfinder.bosons()[0].mom().E();
  double xF = 2. * Zpl / sqrtS();

  // Filling dimuon mass in bins of xF
  _hist_M_xF->fill(xF, Zmass / GeV, Zmass * sqr(Zmass));

  // Filling pT in bins of Zmass
  if (xF > -0.05 && xF <= 0.15) {
    // Include here all factors which are run-dependent for later scaling
    if (Zpt > 0) _hist_pT_M->fill(Zmass, Zpt, 1. / 2. / Zpt * 2. * ZE / sqrtS());
  }

  MSG_DEBUG("Dimuon pT = " << Zpt << "   Dimuon E = ");
  MSG_DEBUG("DiMuon mass " << Zmass / GeV);
  MSG_DEBUG("DiMuon pT " << Zpt);
}


/// Normalise histograms etc., after the run
void finalize() {
  // xf bin width = 0.2, x-section in picobarn
  const double scalefactor = crossSection() / picobarn / (sumOfWeights() * M_PI * 0.2);
  scale(_hist_pT_M, scalefactor);

  // x-section is quoted in nanobarn
  scale(_hist_M_xF, crossSection() / nanobarn / sumOfWeights());

  divByGroupWidth({_hist_pT_M, _hist_M_xF});
}

/// @}

private:

/// @name Histograms
/// @{
Histo1DGroupPtr _hist_pT_M, _hist_M_xF;
/// @}

};

RIVET_DECLARE_PLUGIN(NUSEA_2003_I613362);

} ```