Rivet analyses referenceR209_1982_I168182Drell Yan measurements pp→μ+μ−+X at √s=44 and 62 GeV at CERN ISRExperiment: R209 (ISR CERN) Inspire ID: 168182 Status: VALIDATED Authors:
Beam energies: (22.0, 22.0); (31.0, 31.0) GeV Run details:
Measurements of pp→μ+μ−+X at √s=44 and 62 GeV are compared. The data are #taken under identical conditions utilizing clean proton-proton collisions from the CERN intersecting storage rings and confirm scaling to 5%. Data encoded by Mike Whalley, read from the figure in the paper. Note also, cross sections are quoted in [nb]. The errors shown are statistical only. There is an additional 15% overall systematic uncertainty. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples. Source code: R209_1982_I168182.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5#include "Rivet/Projections/DileptonFinder.hh"
6
7namespace Rivet {
8
9
10 /// Drell Yan measurements $pp \to \mu^+\mu^- +X $ at $\sqrt{s} = 44$ and $62$ GeV at CERN ISR
11 class R209_1982_I168182 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(R209_1982_I168182);
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22
23 // Initialise and register projections
24 DileptonFinder zfinder(91.2*GeV, 0.1, Cuts::abseta < 10. && Cuts::abspid == PID::MUON,
25 Cuts::massIn(3.5*GeV, 18.0*GeV), LeptonOrigin::PROMPT, PhotonOrigin::NONE);
26 declare(zfinder, "DileptonFinder");
27
28 // Book histograms
29 if (isCompatibleWithSqrtS(62*GeV, sqrts_tol)) {
30 MSG_DEBUG("R209: running with 62: " << sqrtS()/GeV);
31 book(_hist_M,1, 1, 1);
32 book(_hist_pT ,2, 1, 1);
33 }
34 else if (isCompatibleWithSqrtS(44*GeV, sqrts_tol)) {
35 MSG_DEBUG("R209: running with 44: " << sqrtS()/GeV);
36 book(_hist_M,1, 1, 2);
37 }
38 int Nbin = 50;
39 book(_h_m_DiMuon,"DiMuon_mass",Nbin,0.0,30.0);
40 book(_h_pT_DiMuon,"DiMuon_pT",Nbin,0.0,20.0);
41 book(_h_y_DiMuon,"DiMuon_y",Nbin,-8.0, 8.0);
42 book(_h_xF_DiMuon,"DiMuon_xF",Nbin, -1.5, 1.5);
43 }
44
45
46 /// Perform the per-event analysis
47 void analyze(const Event& event) {
48
49 const DileptonFinder& zfinder = apply<DileptonFinder>(event, "DileptonFinder");
50 if (zfinder.particles().size() >= 1) {
51
52 double Zmass = zfinder.bosons()[0].momentum().mass()/GeV;
53 double Zpt = zfinder.bosons()[0].momentum().pT()/GeV;
54 double Zpl = zfinder.bosons()[0].momentum().pz()/GeV;
55 double Zy = zfinder.bosons()[0].momentum().rapidity();
56 double xf = 2.*Zpl/sqrtS() ;
57
58 _h_xF_DiMuon->fill(xf);
59 _h_m_DiMuon->fill(Zmass/GeV);
60 _h_pT_DiMuon->fill(Zpt);
61 _h_y_DiMuon->fill(Zy);
62 if (isCompatibleWithSqrtS(62*GeV, sqrts_tol)) {
63 if (Zmass > 0) _hist_M->fill(Zmass);
64 if (Zmass > 5. && Zmass < 8.) {
65 if (Zpt > 0) _hist_pT->fill(Zpt,1./2./Zpt);
66 }
67 }
68 else if (isCompatibleWithSqrtS(44*GeV, sqrts_tol)) {
69 if (Zmass > 0) _hist_M->fill(Zmass);
70 }
71 }
72 }
73
74
75 /// Normalise histograms etc., after the run
76 void finalize() {
77 normalize(_h_m_DiMuon);
78 normalize(_h_pT_DiMuon);
79 normalize(_h_xF_DiMuon);
80 normalize(_h_y_DiMuon);
81 scale(_hist_pT,crossSection()/nanobarn/(sumOfWeights()));
82 scale(_hist_M,crossSection()/nanobarn/(sumOfWeights()));
83 }
84
85 /// @}
86
87
88 /// @name Histograms
89 /// @{
90 Histo1DPtr _hist_pT, _hist_M ;
91 Histo1DPtr _h_m_DiMuon ;
92 Histo1DPtr _h_pT_DiMuon;
93 Histo1DPtr _h_y_DiMuon;
94 Histo1DPtr _h_xF_DiMuon;
95 /// @}
96
97 /// Energy comparison tolerance
98 const double sqrts_tol = 0.1;
99
100 };
101
102
103 RIVET_DECLARE_PLUGIN(R209_1982_I168182);
104
105}
|