Rivet analyses referencePHENIX_2019_I1672015Drell Yan production at low masses $4.8 < m_{\mu^+\mu^-} < 8.2 $ GeV at $\sqrt{s} = 200$ GeVExperiment: PHENIX (RHIC) Inspire ID: 1672015 Status: VALIDATED Authors:
Beam energies: (100.0, 100.0) GeV
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}
|