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
// -*- 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
    RIVET_DEFAULT_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
      book(_hist_EEC  ,1, 1, 1);
      book(_hist_AEEC ,2, 1, 1);

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

    void analyze(const Event& event) {

      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;
      for (Jet j : jets)  sumEt += j.E() / cosh(j.eta());

      for (Jet j1 : jets) {
        double et1 = j1.E() / cosh(j1.eta());

        for (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);
          _hist_dummy->fill(cosPhi, etWeight);
	      }
      }
    }

    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
  RIVET_DECLARE_PLUGIN(ATLAS_2015_I1387176);

}