Rivet analyses


title: D0_2008_I724239

Measurement of the ratio $\sigma(Z/\gamma^ + n \text{ jets})/\sigma(Z/\gamma^)$

Experiment: D0 (Tevatron Run 2)

Inspire ID: 724239

Status: VALIDATED

Authors: - Giulio Lenzi - Frank Siegert

References: - hep-ex/0608052

Beams: p- p+

Beam energies: (980.0, 980.0)GeV

Run details: - $p \bar{p} \to e^+ e^-$ + jets at 1960~GeV. Needs mass cut on lepton pair to avoid photon singularity, looser than $75 < m_{ee} < 105$ GeV.

Cross sections as a function of $\pT$ of the three leading jets and $n$-jet cross section ratios in $p \bar{p}$ collisions at $\sqrt{s}$ = 1.96 TeV, based on an integrated luminosity of $0.4~\text{fb}^{-1}$.

Source code:D0_2008_I724239.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/DileptonFinder.hh"

include "Rivet/Projections/FastJets.hh"

namespace Rivet {

/// D0 measurement of the ratio \f$ \sigma(Z/\gamma^ + n \text{ jets})/\sigma(Z/\gamma^) \f$ class D0_2008_I724239 : public Analysis { public:

RIVET_DEFAULT_ANALYSIS_CTOR(D0_2008_I724239);


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

// Book histograms
void init() {
  DileptonFinder zfinder(91.2 * GeV, 0.2, Cuts::abspid == PID::ELECTRON,
                         Cuts::massIn(40 * GeV, 200 * GeV));
  declare(zfinder, "DileptonFinder");

  FastJets conefinder(zfinder.remainingFinalState(), JetAlg::D0ILCONE, 0.5);
  declare(conefinder, "ConeFinder");

  book(_crossSectionRatio, 1, 1, 1);
  book(_pTjet1, 2, 1, 1);
  book(_pTjet2, 3, 1, 1);
  book(_pTjet3, 4, 1, 1);
}


/// Do the analysis
void analyze(const Event& event) {

  if (_edges.empty()) _edges = _crossSectionRatio->xEdges();

  const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder");
  if (zfinder.bosons().size() != 1) vetoEvent;

  FourMomentum e0 = zfinder.constituents()[0].mom();
  FourMomentum e1 = zfinder.constituents()[1].mom();

  Jets jets = apply<JetFinder>(event, "ConeFinder").jetsByPt(Cuts::pT > 20 * GeV && Cuts::abseta < 2.5);
  idiscard(jets, deltaRLess(e0, 0.4));
  idiscard(jets, deltaRLess(e1, 0.4));

  // For normalisation of crossSection data (includes events with no jets passing cuts)
  _crossSectionRatio->fill(string("INC"));

  // Fill jet pT and multiplicities
  if (jets.size() >= 1) {
    _crossSectionRatio->fill(_edges[0]);
    _pTjet1->fill(jets[0].pT());
  }
  if (jets.size() >= 2) {
    _crossSectionRatio->fill(_edges[1]);
    _pTjet2->fill(jets[1].pT());
  }
  if (jets.size() >= 3) {
    _crossSectionRatio->fill(_edges[2]);
    _pTjet3->fill(jets[2].pT());
  }
  if (jets.size() >= 4) {
    _crossSectionRatio->fill(_edges[3]);
  }
}


/// Finalize
void finalize() {
  // Now divide by the inclusive result (in the otherflow)
  scale(_crossSectionRatio, 1.0 / _crossSectionRatio->bin(0).sumW());

  // Normalise jet pTs to integrals of data
  // @note There is no other way to do this, because these quantities are not detector-corrected
  normalize(_pTjet1, refData(2, 1, 1).auc());
  normalize(_pTjet2, refData(3, 1, 1).auc());
  normalize(_pTjet3, refData(4, 1, 1).auc());
}

/// @}

private:

/// @name Histograms
/// @{
BinnedHistoPtr<string> _crossSectionRatio;
Histo1DPtr _pTjet1, _pTjet2, _pTjet3;
vector<string> _edges;
/// @}

};

RIVET_DECLARE_ALIASED_PLUGIN(D0_2008_I724239, D0_2008_S6879055);

} ```

Aliases: - D0_2008_S6879055