rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### CMS_2012_I941555

Measurement of differential $Z/\gamma^*$ $p_T$ and y
Experiment: CMS (LHC)
Inspire ID: 941555
Status: VALIDATED
Authors:
• Luca Perrozzi
• Justin Hugon
References:
• Phys.Rev. D85 (2012) 032002
• arXiv: 1110.4973
• CMS-EWK-10-010
• CERN-PH-EP-2011-169
Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
• $p p \to \mu^+ \mu^-$+X 7 TeV. Needs mass cut on lepton pair to avoid photon singularity, restrict $Z/\gamma^*$ mass range to roughly $50 \text{GeV}/c^2 < m_{\mu\mu} < 130 \text{GeV}/c^2$ for efficiency. Result is corrected for QED FSR (i.e. leptons are dressed), so turn off in generator.

Cross section as a function of $p_T$ and y of the Z boson decaying into muons in p p collisions at $\sqrt{s}$ = 7 TeV. $p_T$ and y cross sections are measured for $60 < m_{\mu\mu} < 120$ GeV. The $p_T$ cross section is measured for lepton $p_T > 20$ GeV and $\eta < 2.1$, while the y cross section is extrapolated to all lepton $p_T$ and $\eta$. This measurement was performed using 36 pb$^{-1}$ of data collected during 2010 with the CMS detector at the LHC.

Source code: CMS_2012_I941555.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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/ZFinder.hh" namespace Rivet { /// @brief CMS Z pT and rapidity in Drell-Yan events at 7 TeV /// @author Justin Hugon, Luca Perrozzi class CMS_2012_I941555 : public Analysis { public: /// Constructor CMS_2012_I941555() : Analysis("CMS_2012_I941555") { } /// @name Analysis methods //@{ void init() { // Set up projections /// @todo Really?: ZFinder zfinder_dressed_mu_pt(-2.1, 2.1, 20, PID::MUON, 60*GeV, 120*GeV, 0.2, false, true); FinalState fs; Cut cuts = Cuts::abseta < 2.1 && Cuts::pT > 20*GeV; ZFinder zfinder_dressed_mu_pt(fs, cuts, PID::MUON, 60*GeV, 120*GeV, 0.2); declare(zfinder_dressed_mu_pt, "ZFinder_dressed_mu_pt"); ZFinder zfinder_dressed_el_pt(fs, cuts, PID::ELECTRON, 60*GeV, 120*GeV, 0.1); declare(zfinder_dressed_el_pt, "ZFinder_dressed_el_pt"); ZFinder zfinder_dressed_mu_rap(fs, Cuts::open(), PID::MUON, 60*GeV, 120*GeV, 0.1); declare(zfinder_dressed_mu_rap, "ZFinder_dressed_mu_rap"); ZFinder zfinder_dressed_el_rap(fs, Cuts::open(), PID::ELECTRON, 60*GeV, 120*GeV, 0.1); declare(zfinder_dressed_el_rap, "ZFinder_dressed_el_rap"); // Book histograms book(_hist_zrap_mu_dressed ,1, 1, 1); // muon "dressed" rapidity book(_hist_zrap_el_dressed ,1, 1, 2); // electron "dressed" rapidity book(_hist_zrap_comb_dressed ,1, 1, 3); // electron "dressed" rapidity book(_hist_zpt_mu_dressed ,2, 1, 1); // muon "dressed" pt book(_hist_zpt_el_dressed ,2, 1, 2); // electron "dressed" pt book(_hist_zpt_comb_dressed ,2, 1, 3); // electron "dressed" pt book(_hist_zptpeak_mu_dressed ,3, 1, 1); // muon "dressed" pt peak book(_hist_zptpeak_el_dressed ,3, 1, 2); // electron "dressed" pt peak book(_hist_zptpeak_comb_dressed ,3, 1, 3); // electron "dressed" pt peak } /// Do the analysis void analyze(const Event& evt) { const double weight = 1.0; const ZFinder& zfinder_dressed_mu_rap = apply(evt, "ZFinder_dressed_mu_rap"); if (!zfinder_dressed_mu_rap.bosons().empty()) { const FourMomentum pZ = zfinder_dressed_mu_rap.bosons()[0].momentum(); _hist_zrap_mu_dressed->fill(pZ.rapidity()/GeV, weight); _hist_zrap_comb_dressed->fill(pZ.rapidity()/GeV, weight); } const ZFinder& zfinder_dressed_mu_pt = apply(evt, "ZFinder_dressed_mu_pt"); if (!zfinder_dressed_mu_pt.bosons().empty()) { const FourMomentum pZ = zfinder_dressed_mu_pt.bosons()[0].momentum(); _hist_zpt_mu_dressed->fill(pZ.pT()/GeV, weight); _hist_zpt_comb_dressed->fill(pZ.pT()/GeV, weight); if (pZ.pT() < 30*GeV) { _hist_zptpeak_mu_dressed->fill(pZ.pT()/GeV, weight); _hist_zptpeak_comb_dressed->fill(pZ.pT()/GeV, weight); } } const ZFinder& zfinder_dressed_el_rap = apply(evt, "ZFinder_dressed_el_rap"); if (!zfinder_dressed_el_rap.bosons().empty()) { const FourMomentum pZ = zfinder_dressed_el_rap.bosons()[0].momentum(); _hist_zrap_el_dressed->fill(pZ.rapidity()/GeV, weight); _hist_zrap_comb_dressed->fill(pZ.rapidity()/GeV, weight); } const ZFinder& zfinder_dressed_el_pt = apply(evt, "ZFinder_dressed_el_pt"); if (!zfinder_dressed_el_pt.bosons().empty()) { const FourMomentum pZ = zfinder_dressed_el_pt.bosons()[0].momentum(); _hist_zpt_el_dressed->fill(pZ.pT()/GeV, weight); _hist_zpt_comb_dressed->fill(pZ.pT()/GeV, weight); if (pZ.pT() < 30*GeV) { _hist_zptpeak_el_dressed->fill(pZ.pT()/GeV, weight); _hist_zptpeak_comb_dressed->fill(pZ.pT()/GeV, weight); } } } void finalize() { normalize(_hist_zrap_mu_dressed); normalize(_hist_zpt_mu_dressed); normalize(_hist_zptpeak_mu_dressed); normalize(_hist_zrap_el_dressed); normalize(_hist_zpt_el_dressed); normalize(_hist_zptpeak_el_dressed); normalize(_hist_zrap_comb_dressed); normalize(_hist_zpt_comb_dressed); normalize(_hist_zptpeak_comb_dressed); } //@} private: Histo1DPtr _hist_zrap_mu_dressed; Histo1DPtr _hist_zpt_mu_dressed; Histo1DPtr _hist_zptpeak_mu_dressed; Histo1DPtr _hist_zrap_el_dressed; Histo1DPtr _hist_zpt_el_dressed; Histo1DPtr _hist_zptpeak_el_dressed; Histo1DPtr _hist_zrap_comb_dressed; Histo1DPtr _hist_zpt_comb_dressed; Histo1DPtr _hist_zptpeak_comb_dressed; }; DECLARE_RIVET_PLUGIN(CMS_2012_I941555); }