rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

PHENIX_2019_I1672015

Drell Yan production at low masses $4.8 < m_{\mu^+\mu^-} < 8.2 $ GeV at $\sqrt{s} = 200$ GeV
Experiment: PHENIX (RHIC)
Inspire ID: 1672015
Status: VALIDATED
Authors:
  • Hannes Jung hannes.jung@desy.de
References:
  • Phys. Rev., D99(2019), 072003
  • DOI:https://doi.org/10.1103/PhysRevD.99.072003
  • arXiv: 1805.02448
Beams: p+ p+
Beam energies: (100.0, 100.0) GeV
    No run details listed

PHENIX reports differential cross sections of $\mu^+\mu^-$ pairs from semileptonic heavy-flavor decays and the Drell-Yan production mechanism measured in p+p collisions at $\sqrt{s} = 200$ GeV at forward and backward rapidity (1.2 < |y| < 2.2). The $\mu^+\mu^-$ pairs from $c\bar{c}$, $b\bar{b}$, and Drell-Yan are separated using a template fit to unlike- and like-sign muon pair spectra in mass and $p_T$.

Source code: PHENIX_2019_I1672015.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/FastJets.hh"
 5#include "Rivet/Projections/IdentifiedFinalState.hh"
 6#include "Rivet/Projections/MissingMomentum.hh"
 7#include "Rivet/Projections/ZFinder.hh"
 8
 9namespace Rivet {
10
11
12  /// Drell Yan production at low masses at $\sqrt{s} = 200$ GeV
13  class PHENIX_2019_I1672015 : public Analysis {
14  public:
15
16    /// Constructor
17    RIVET_DEFAULT_ANALYSIS_CTOR(PHENIX_2019_I1672015);
18
19    /// @name Analysis methods
20    ///@{
21
22    /// Book histograms and initialise projections before the run
23    void init() {
24
25      // Initialise and register projections
26      const FinalState fs;
27      declare(fs, "FS");
28      Cut cut = Cuts::etaIn(-10.,10.);
29      ZFinder zfinder(fs, cut, PID::MUON, 4.0*GeV, 100.0*GeV, 0.1, ZFinder::ClusterPhotons::NONE );
30      declare(zfinder, "ZFinder");
31
32      // Book histograms
33      book(_h_pT ,1, 1, 1);
34      book(_h_mass,2, 1, 1);
35      int Nbin = 50;
36      book(_h_m_DiMuon,"DiMuon_mass",Nbin,0.0,30.0);
37      book(_h_pT_DiMuon,"DiMuon_pT",Nbin,0.0,20.0);
38      book(_h_y_DiMuon,"DiMuon_y",Nbin,-8.0, 8.0);
39
40    }
41
42
43    /// Perform the per-event analysis
44    void analyze(const Event& event) {
45
46      double sqrts_tol = 10. ;
47      if (!isCompatibleWithSqrtS(200., sqrts_tol)) {
48        MSG_ERROR("Incorrect beam energy used: " << sqrtS()/GeV);
49        throw Error("Unexpected sqrtS ! Only 200 GeV is supported");
50      }
51      const ZFinder& zfinder = applyProjection<ZFinder>(event, "ZFinder");
52      if (zfinder.particles().size() < 1) vetoEvent;
53      double mass = zfinder.bosons()[0].momentum().mass()/GeV;
54      double pt_DY   = zfinder.bosons()[0].momentum().pT()/GeV;
55      double y_DY    = abs(zfinder.bosons()[0].momentum().rapidity());
56
57      _h_m_DiMuon->fill(mass/GeV);
58      _h_pT_DiMuon->fill(pt_DY);
59      _h_y_DiMuon ->fill(y_DY);
60      if (inRange( y_DY, 1.2, 2.2) && inRange(mass, 4.8, 8.2) && pt_DY > 0)
61        _h_pT->fill(pt_DY, 1./2./pt_DY/M_PI);
62      if ( y_DY >= 1.2 && y_DY <= 2.2)
63        _h_mass->fill(mass);
64
65    }
66
67
68    /// Normalise histograms etc., after the run
69    void finalize() {
70
71      // Divide by 2 because of rapidity range
72      normalize(_h_m_DiMuon);
73      normalize(_h_pT_DiMuon);
74      normalize(_h_y_DiMuon);
75      scale(_h_pT, crossSection()/(sumOfWeights())/2.);
76      scale(_h_mass, crossSection()/(sumOfWeights())/2.);
77
78    }
79
80    ///@}
81
82
83    /// @name Histograms
84    ///@{
85    Histo1DPtr _h_pT, _h_y, _h_mass, _h_ZZZZ;
86    Histo1DPtr _h_m_DiMuon;
87    Histo1DPtr _h_pT_DiMuon;
88    Histo1DPtr _h_y_DiMuon;
89    Histo1DPtr _h_xF_DiMuon;
90    ///@}
91
92  };
93
94
95  RIVET_DECLARE_PLUGIN(PHENIX_2019_I1672015);
96
97}