rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2014_I1322726

Z production in PbPb and pp collisions at 2.76 TeV in the dimuon and dielectron decay channels
Experiment: CMS (LHC)
Inspire ID: 1322726
Status: VALIDATED
Authors:
  • Hannes Jung
  • Sara Taheri Monfared
  • Muhammad Ibrahim Abdulhamid
References: Beams: p+ p+
Beam energies: (1380.0, 1380.0) GeV
Run details:
  • DY events with m(ll)>60 GeV, run in pp mode (PbPb to be added)

The differential cross-section for Z production in PbPb and pp collisions at 2.76 TeV in the dimuon and dielectron decay channels has been measured from data acquired by the CMS collaboration at the LHC during the year 2010.

Source code: CMS_2014_I1322726.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
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/ZFinder.hh"

namespace Rivet {

  /// @brief Z production in PbPb and pp collisions at 2.76 TeV in the dimuon and dielectron decay channels
  class CMS_2014_I1322726 : public Analysis {
  public:
    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2014_I1322726);

    /// @name Analysis methods
    ///@{

    /// Book histograms and initialise projections before the run
    void init() {
      const FinalState fs(Cuts::abseta < 4.9);

      //Defination of ZFinder
      ZFinder zmumuFinder(fs, Cuts::abseta < 5 && Cuts::pT > 0. * GeV, PID::MUON, 60.0 * GeV, 120.0 * GeV);  //dimuon
      declare(zmumuFinder, "ZmumuFinder");

      ZFinder zeeFinder(
          fs, Cuts::abseta < 5 && Cuts::pT > 0. * GeV, PID::ELECTRON, 60.0 * GeV, 120.0 * GeV);  //dielectron
      declare(zeeFinder, "ZeeFinder");

      FastJets jetfs(fs, FastJets::ANTIKT, 0.4, JetAlg::Muons::NONE, JetAlg::Invisibles::NONE);
      declare(jetfs, "jets");

      book(_h["ds/dydp-mu"], 1, 1, 1);
      book(_h["ds/dydp-el"], 2, 1, 1);
      book(_h["ds/dy-mu"], 3, 1, 1);
      book(_h["ds/dy-el"], 4, 1, 1);
    }

    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const ZFinder& zfindermu = apply<ZFinder>(event, "ZmumuFinder");  // muon
      const Particles& zmumus = zfindermu.bosons();

      const ZFinder& zfinderel = apply<ZFinder>(event, "ZeeFinder");  // electron
      const Particles& zelels = zfinderel.bosons();

      if ((zmumus.size() + zelels.size()) != 1)
        vetoEvent;

      if (zmumus.size() == 1) {                          //cout <<"zmumus " <<zmumus <<endl;
        if (abs(zmumus[0].momentum().rapidity()) < 2) {  //5 //2

          _h["ds/dydp-mu"]->fill(zmumus[0].momentum().pT() / GeV, 0.25);
          _h["ds/dy-mu"]->fill(zmumus[0].momentum().rapidity());
        }
      }

      if (zelels.size() == 1) {                             //cout <<"electron-find"<< endl;
        if (abs(zelels[0].momentum().rapidity()) < 1.44) {  //5 //1.44

          _h["ds/dydp-el"]->fill(zelels[0].momentum().pT() / GeV, 1 / 2.88);
          _h["ds/dy-el"]->fill(zelels[0].momentum().rapidity());
        }
      }
    }

    void finalize() {
      double norm = crossSection() / picobarn / sumW();

      scale(_h["ds/dydp-mu"], norm);
      scale(_h["ds/dydp-el"], norm);
      scale(_h["ds/dy-mu"], norm);
      scale(_h["ds/dy-el"], norm);
    }

    ///@}

    /// @name Histograms
    ///@{
    map<string, Histo1DPtr> _h;
    ///@}
  };

  RIVET_DECLARE_PLUGIN(CMS_2014_I1322726);

}  // namespace Rivet