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 /// Rivet analysis class for ATLAS_2015_I1387176 dataset
9 class ATLAS_2015_I1387176 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1387176);
14
15
16 /// Initialization, called once before running
17 void init() {
18 // Projections
19 FastJets jets(FinalState(), FastJets::ANTIKT, 0.4);
20 jets.useInvisibles();
21 declare(jets, "Jets");
22
23 // Book histograms
24 book(_hist_EEC ,1, 1, 1);
25 book(_hist_AEEC ,2, 1, 1);
26
27 // add dummy histogram for heterogenous merging
28 string hname = "d01-x01-y01";
29 const Scatter2D& ref = refData(hname);
30 hname = "d01-x01-y02";
31 book(_hist_dummy ,hname, ref);
32 }
33
34 void analyze(const Event& event) {
35
36 const Jets& jets = apply<FastJets>(event, "Jets").jetsByPt(Cuts::pT > 50.0*GeV && Cuts::abseta < 2.5);
37
38 if (jets.size() < 2) vetoEvent;
39 if (jets[0].pT() + jets[1].pT() < 500*GeV) vetoEvent;
40
41 double sumEt = 0.0;
42 for (Jet j : jets) sumEt += j.E() / cosh(j.eta());
43
44 for (Jet j1 : jets) {
45 double et1 = j1.E() / cosh(j1.eta());
46
47 for (Jet j2 : jets) {
48 double et2 = j2.E() / cosh(j2.eta());
49 double etWeight = et1 * et2 / ( sumEt * sumEt );
50 double dPhi = deltaPhi(j1, j2);
51 double cosPhi = cos(dPhi);
52 if (cosPhi == 1.0) cosPhi = 0.9999;
53
54 _hist_EEC->fill(cosPhi, etWeight);
55 _hist_dummy->fill(cosPhi, etWeight);
56 }
57 }
58 }
59
60 void finalize() {
61
62 scale(_hist_dummy, crossSectionPerEvent());
63 normalize(_hist_EEC);
64
65 vector<Point2D> points;
66 size_t nBins = _hist_EEC->numBins();
67 for (size_t k = 0; k < nBins/2; ++k) {
68 double x = _hist_EEC->bin(k).midpoint();
69 double y = _hist_EEC->bin(k).height() - _hist_EEC->bin(nBins-(k+1)).height();
70 double ex = _hist_EEC->bin(k).xWidth()/2;
71 double e1 = _hist_EEC->bin(k).heightErr();
72 double e2 = _hist_EEC->bin(nBins-(k+1)).heightErr();
73 double ey = sqrt( e1 * e1 + e2 * e2 );
74 points.push_back(Point2D(x, y, ex, ey));
75 }
76
77 _hist_AEEC->addPoints(points);
78 }
79
80 private:
81 Histo1DPtr _hist_EEC;
82 Histo1DPtr _hist_dummy;
83 Scatter2DPtr _hist_AEEC;
84 };
85
86
87
88 // The hook for the plugin system
89 RIVET_DECLARE_PLUGIN(ATLAS_2015_I1387176);
90
91}
|