Rivet analyses referenceATLAS_2015_I1387176Energy-energy correlationExperiment: ATLAS (LHC) Inspire ID: 1387176 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
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}
|