Rivet analyses referenceR209_1982_I168182Drell Yan measurements $pp \to \mu^+\mu^- +X $ at $\sqrt{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 \to \mu^+\mu^- +X $ at $\sqrt{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/ZFinder.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 FinalState fs;
25 declare(fs, "FS");
26 Cut cut = Cuts::etaIn(-10.,10.);
27 ZFinder zfinder(fs, cut, PID::MUON, 3.5*GeV, 18.0*GeV, 0.1, ZFinder::ClusterPhotons::NONE );
28 declare(zfinder, "ZFinder");
29
30 // Book histograms
31 if (isCompatibleWithSqrtS(62., sqrts_tol)) {
32 MSG_DEBUG("R209: running with 62: " << sqrtS()/GeV);
33 book(_hist_M,1, 1, 1);
34 book(_hist_pT ,2, 1, 1);
35 }
36 else if (isCompatibleWithSqrtS(44., sqrts_tol)) {
37 MSG_DEBUG("R209: running with 44: " << sqrtS()/GeV);
38 book(_hist_M,1, 1, 2);
39 }
40 int Nbin = 50;
41 book(_h_m_DiMuon,"DiMuon_mass",Nbin,0.0,30.0);
42 book(_h_pT_DiMuon,"DiMuon_pT",Nbin,0.0,20.0);
43 book(_h_y_DiMuon,"DiMuon_y",Nbin,-8.0, 8.0);
44 book(_h_xF_DiMuon,"DiMuon_xF",Nbin, -1.5, 1.5);
45 }
46
47
48 /// Perform the per-event analysis
49 void analyze(const Event& event) {
50
51 const ZFinder& zfinder = applyProjection<ZFinder>(event, "ZFinder");
52 if (zfinder.particles().size() >= 1) {
53
54 double Zmass = zfinder.bosons()[0].momentum().mass()/GeV;
55 double Zpt = zfinder.bosons()[0].momentum().pT()/GeV;
56 double Zpl = zfinder.bosons()[0].momentum().pz()/GeV;
57 double Zy = zfinder.bosons()[0].momentum().rapidity();
58 double xf = 2.*Zpl/sqrtS() ;
59
60 _h_xF_DiMuon->fill(xf);
61 _h_m_DiMuon->fill(Zmass/GeV);
62 _h_pT_DiMuon->fill(Zpt);
63 _h_y_DiMuon->fill(Zy);
64 if (isCompatibleWithSqrtS(62, sqrts_tol)) {
65 if (Zmass > 0) _hist_M->fill(Zmass);
66 if (Zmass > 5. && Zmass < 8.) {
67 if (Zpt > 0) _hist_pT->fill(Zpt,1./2./Zpt);
68 }
69 }
70 else if (isCompatibleWithSqrtS(44, sqrts_tol)) {
71 if (Zmass > 0) _hist_M->fill(Zmass);
72 }
73 }
74 }
75
76
77 /// Normalise histograms etc., after the run
78 void finalize() {
79 normalize(_h_m_DiMuon);
80 normalize(_h_pT_DiMuon);
81 normalize(_h_xF_DiMuon);
82 normalize(_h_y_DiMuon);
83 scale(_hist_pT,crossSection()/nanobarn/(sumOfWeights()));
84 scale(_hist_M,crossSection()/nanobarn/(sumOfWeights()));
85 }
86
87 ///@}
88
89
90 /// @name Histograms
91 ///@{
92 Histo1DPtr _hist_pT, _hist_M ;
93 Histo1DPtr _h_m_DiMuon ;
94 Histo1DPtr _h_pT_DiMuon;
95 Histo1DPtr _h_y_DiMuon;
96 Histo1DPtr _h_xF_DiMuon;
97 ///@}
98
99 /// Energy comparison tolerance
100 const double sqrts_tol = 0.1;
101
102 };
103
104
105 RIVET_DECLARE_PLUGIN(R209_1982_I168182);
106
107}
|