Rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2015_I1387176

Energy-energy correlation
Experiment: ATLAS (LHC)
Inspire ID: 1387176
Status: VALIDATED
Authors:
  • Javier Llorente
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • inclusive jets

High transverse momentum jets produced in $pp$ collisions at a centre-of-mass energy of 7\,TeV are used to measure the transverse energy-energy correlation function and its associated azimuthal asymmetry. The data were recorded with the ATLAS detector at the LHC in the year 2011 and correspond to an integrated luminosity of $158\,\text{pb}^{1}$. The selection criteria demand the average transverse momentum of the two leading jets in an event to be larger than 250\,GeV. The data are unfolded to the particle level. NB--If the routine is to be run on several samples (with different cross sections), the asymmetry has to be calculated again in a post-processing step using the merged output file.

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

namespace Rivet {

  /// Rivet analysis class for ATLAS_2015_I1387176 dataset
  class ATLAS_2015_I1387176 : public Analysis {
  public:

    /// Constructor
    DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2015_I1387176);


    /// Initialization, called once before running
    void init() {
      // Projections
      FastJets jets(FinalState(), FastJets::ANTIKT, 0.4);
      jets.useInvisibles();
      declare(jets, "Jets");

      // Book histograms
      _hist_EEC  = bookHisto1D(1, 1, 1);
      _hist_AEEC = bookScatter2D(2, 1, 1);

      // add dummy histogram for heterogenous merging
      string hname = "d01-x01-y01";
      const Scatter2D& ref = refData(hname);
      hname = "d01-x01-y02";
      _hist_dummy = bookHisto1D(hname, ref);
    }

    void analyze(const Event& event) {

      const double evtWeight = event.weight();
      const Jets& jets = apply<FastJets>(event, "Jets").jetsByPt(Cuts::pT > 50.0*GeV && Cuts::abseta < 2.5);

      if (jets.size() < 2)  vetoEvent;
      if (jets[0].pT() + jets[1].pT() < 500*GeV)  vetoEvent;

      double sumEt = 0.0;
      foreach (Jet j, jets)  sumEt += j.E() / cosh(j.eta());

      foreach (Jet j1, jets) {
        double et1 = j1.E() / cosh(j1.eta());

        foreach (Jet j2, jets) {
          double et2 = j2.E() / cosh(j2.eta());
          double etWeight = et1 * et2 / ( sumEt * sumEt );
          double dPhi = deltaPhi(j1, j2);
          double cosPhi = cos(dPhi);
          if (cosPhi == 1.0)  cosPhi = 0.9999;

          _hist_EEC->fill(cosPhi, etWeight * evtWeight);
          _hist_dummy->fill(cosPhi, etWeight * evtWeight);
	      }
      }
    }

    void finalize() {

      scale(_hist_dummy, crossSectionPerEvent());
      normalize(_hist_EEC);

      vector<Point2D> points;
      size_t nBins = _hist_EEC->numBins();
      for (size_t k = 0; k < nBins/2; ++k) {
        double x = _hist_EEC->bin(k).midpoint();
        double y = _hist_EEC->bin(k).height() - _hist_EEC->bin(nBins-(k+1)).height();
        double ex = _hist_EEC->bin(k).xWidth()/2;
        double e1 = _hist_EEC->bin(k).heightErr();
        double e2 = _hist_EEC->bin(nBins-(k+1)).heightErr();
        double ey = sqrt( e1 * e1 + e2 * e2 );
        points.push_back(Point2D(x, y, ex, ey));
      }

      _hist_AEEC->addPoints(points);
    }

  private:
    Histo1DPtr _hist_EEC;
    Histo1DPtr _hist_dummy;
    Scatter2DPtr _hist_AEEC;
  };



  // The hook for the plugin system
  DECLARE_RIVET_PLUGIN(ATLAS_2015_I1387176);

}