Rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### D0_2000_I499943

The $b\bar{b}$ production cross-section and angular correlations
Experiment: D0 (Tevatron Run 1)
Inspire ID: 499943
Status: VALIDATED
Authors:
• Simone Amoroso
References:
Beams: p- p+
Beam energies: (900.0, 900.0) GeV
Run details:
• $p\bar{p}$ dijet events at 1.8\;\text{TeV}, with a minimum \pt of 12\;GeV.

Measurements of the $b\bar{b}$ production cross-section and angular correlations using the D0 detector at the Fermilab Tevatron $p\bar{p}$ collider operating at $\sqrt{s} = 1.8\;\text{TeV}$. The $b$ quark production cross-section and the angular correlations between $b$-quark pairs, for $|y(b)| < 1.0$ and $p_T(b) > 6\;\text{GeV}/c$, are extracted from single muon and dimuon data samples.

Source code: D0_2000_I499943.cc
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/FastJets.hh" #include "Rivet/Projections/HeavyHadrons.hh" #include "Rivet/Projections/IdentifiedFinalState.hh" namespace Rivet { class D0_2000_I499943 : public Analysis { public: /// Constructor D0_2000_I499943() : Analysis("D0_2000_I499943") { } /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { FinalState fs; IdentifiedFinalState muons(Cuts::abseta < 0.8 && Cuts::pT > 4.0*GeV); muons.acceptIdPair(PID::MUON); declare(muons, "Muons"); FastJets jetproj(fs, FastJets::D0ILCONE, 0.7); jetproj.useInvisibles(); declare(jetproj, "Jets"); // Book histograms _h_pt_leading_mu = bookHisto1D(1, 1, 1); _h_dphi_mumu = bookHisto1D(3, 1, 1); } /// Perform the per-event analysis void analyze(const Event& event) { const Jets& jets = apply(event, "Jets").jetsByPt(12*GeV); if (jets.size() < 2) vetoEvent; const Particles& muons = apply(event, "Muons").particlesByPt(); if (muons.size() < 2) vetoEvent; // Muon selection: require the muons to be *close* to jets, not the usual overlap vetoing! Particles cand_mu; foreach (const Particle& mu, muons) { // Ignore muons in "bad" region 80 < phi < 110 degrees /// @todo Is this really not corrected for?! if (inRange(mu.phi(), 1.4, 1.92)) continue; // A muon is a good candidate if within R = 0.8 of a jet foreach (const Jet& jet, jets) { if (deltaR(mu, jet) < 0.8) { cand_mu.push_back(mu); break; } } } // Must find at least two jet-matched muons in the event if (cand_mu.size() < 2) vetoEvent; /// @todo Is this cut needed? Does space angle mean dR or 3D opening angle in lab frame? // Remove muon pairs closer than 165 deg in space angle (cosmic veto) // double dR_mumu = deltaR(cand_mu[0].momentum(), cand_mu[1].momentum()); // if (dR_mumu < 165*degree) vetoEvent; // Selecting muon pairs with 6 < mass < 35 GeV (we use the two with highest pT) double m_mumu = (cand_mu[0].momentum() + cand_mu[1].momentum()).mass(); if (!inRange(m_mumu, 6*GeV, 35*GeV)) vetoEvent; // Get phi angle between muons in degrees double dphi_mumu = deltaPhi(cand_mu[0], cand_mu[1]) * 180/M_PI; // Fill histos _h_pt_leading_mu->fill(cand_mu[0].pt()/GeV, event.weight()); _h_dphi_mumu->fill(dphi_mumu, event.weight()); } // Normalise histograms to cross-section void finalize() { scale(_h_pt_leading_mu, crossSection()/sumOfWeights()/nanobarn); scale(_h_dphi_mumu, crossSection()/sumOfWeights()/nanobarn); } //@} private: /// @name Histograms //@{ Histo1DPtr _h_pt_leading_mu, _h_dphi_mumu; //@} }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(D0_2000_I499943); }