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// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/FastJets.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// Rivet analysis class for ATLAS_2015_I1387176 dataset
10  class ATLAS_2015_I1387176 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1387176);
15
16
17    /// Initialization, called once before running
18    void init() {
19      // Projections
20      FastJets jets(FinalState(), JetAlg::ANTIKT, 0.4);
21      jets.useInvisibles();
22      declare(jets, "Jets");
23
24      // Book histograms
25      book(_hist_EEC,  1, 1, 1);
26      book(_hist_AEEC, 2, 1, 1);
27
28      // add dummy histogram for heterogenous merging
29      // @todo What is this for exactly? o.0
30      book(_hist_dummy, "d01-x01-y02", refData("d01-x01-y01"));
31    }
32
33    void analyze(const Event& event) {
34
35      const Jets& jets = apply<FastJets>(event, "Jets").jetsByPt(Cuts::pT > 50.0*GeV && Cuts::abseta < 2.5);
36
37      if (jets.size() < 2)  vetoEvent;
38      if (jets[0].pT() + jets[1].pT() < 500*GeV)  vetoEvent;
39
40      double sumEt = 0.0;
41      for (Jet j : jets)  sumEt += j.E() / cosh(j.eta());
42
43      for (Jet j1 : jets) {
44        double et1 = j1.E() / cosh(j1.eta());
45
46        for (Jet j2 : jets) {
47          double et2 = j2.E() / cosh(j2.eta());
48          double etWeight = et1 * et2 / ( sumEt * sumEt );
49          double dPhi = deltaPhi(j1, j2);
50          double cosPhi = cos(dPhi);
51          if (cosPhi == 1.0)  cosPhi = 0.9999;
52
53          _hist_EEC->fill(cosPhi, etWeight);
54          _hist_dummy->fill(cosPhi, etWeight);
55	      }
56      }
57    }
58
59    void finalize() {
60
61      scale(_hist_dummy, crossSectionPerEvent());
62      normalize(_hist_EEC);
63
64      size_t nBins = _hist_EEC->numBins();
65      for (size_t k = 1; k < (nBins/2)+1; ++k) {
66        const double dV = _hist_EEC->bin(k).dVol();
67        const double y = (_hist_EEC->bin(k).sumW() - _hist_EEC->bin(nBins-k+1).sumW())/dV;
68        const double e1 = _hist_EEC->bin(k).errW()/dV;
69        const double e2 = _hist_EEC->bin(nBins-k+1).errW()/dV;
70        const double ey = sqrt( e1 * e1 + e2 * e2 );
71        _hist_AEEC->bin(k).set(y, ey);
72      }
73
74    }
75
76  private:
77    Histo1DPtr _hist_EEC;
78    Histo1DPtr _hist_dummy;
79    Estimate1DPtr _hist_AEEC;
80  };
81
82
83  RIVET_DECLARE_PLUGIN(ATLAS_2015_I1387176);
84
85}