Rivet analyses
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
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/MissingMomentum.hh"
#include "Rivet/Projections/DileptonFinder.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);
}