rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2016_I1479760

Hard double-parton scattering in four-jet events at 7 TeV
Experiment: ATLAS (LHC)
Inspire ID: 1479760
Status: VALIDATED
Authors:
  • Orel Gueta
  • Christian Gutschow
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • Four-jet events at 7 TeV

Inclusive four-jet events produced in $pp$ collisions at a centre-of-mass energy of $\sqrt{s} = 7$ TeV have been analysed for the presence of hard double-parton scattering using data corresponding to an integrated luminosity of $(37.3 \pm 1.3)$ $\mathrm{pb}^{-1}$, collected with the ATLAS detector at the LHC. The distributions of observables sensitive to the contribution of hard double-parton scattering are provided for events containing at least four jets with $p_{\mathrm{T}} \geq 20$ GeV and $\eta \leq 4.4$, and at least one of which has $p_{\text{T}} \geq 42.5$ GeV.

Source code: ATLAS_2016_I1479760.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
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/FastJets.hh"

namespace Rivet {


  /// Hard double-parton scattering in four-jet events at 7 TeV
  class ATLAS_2016_I1479760 : public Analysis {
  public:


    /// Constructor
    DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2016_I1479760);


    /// Book histograms and initialise projections before the run
    void init() {

      /// Declare AntiKt 0.6 jets without muons and neutrinos
      FastJets fastJets(FinalState(), FastJets::ANTIKT, 0.6);
      fastJets.useInvisibles(JetAlg::NO_INVISIBLES);
      fastJets.useMuons(JetAlg::NO_MUONS);
      addProjection(fastJets, "AntiKt6Jets");

      _hists["deltaPt34"]        = bookHisto1D( 1, 1, 1);
      _hists["deltaPhi34"]       = bookHisto1D( 2, 1, 1);
      _hists["deltaPt12"]        = bookHisto1D( 3, 1, 1);
      _hists["deltaPt13"]        = bookHisto1D( 4, 1, 1);
      _hists["deltaPt23"]        = bookHisto1D( 5, 1, 1);
      _hists["deltaPt14"]        = bookHisto1D( 6, 1, 1);
      _hists["deltaPt24"]        = bookHisto1D( 7, 1, 1);
      _hists["deltaPhi12"]       = bookHisto1D( 8, 1, 1);
      _hists["deltaPhi13"]       = bookHisto1D( 9, 1, 1);
      _hists["deltaPhi23"]       = bookHisto1D(10, 1, 1);
      _hists["deltaPhi14"]       = bookHisto1D(11, 1, 1);
      _hists["deltaPhi24"]       = bookHisto1D(12, 1, 1);
      _hists["deltaY12"]         = bookHisto1D(13, 1, 1);
      _hists["deltaY34"]         = bookHisto1D(14, 1, 1);
      _hists["deltaY13"]         = bookHisto1D(15, 1, 1);
      _hists["deltaY23"]         = bookHisto1D(16, 1, 1);
      _hists["deltaY14"]         = bookHisto1D(17, 1, 1);
      _hists["deltaY24"]         = bookHisto1D(18, 1, 1);
      _hists["deltaPhiPlanes12"] = bookHisto1D(19, 1, 1);
      _hists["deltaPhiPlanes13"] = bookHisto1D(20, 1, 1);
      _hists["deltaPhiPlanes14"] = bookHisto1D(21, 1, 1);
    }


    /// Calculate the DeltaPt variable
    double calcDeltaPt(const Jet& j1, const Jet& j2) {
      return  (j1.momentum() + j2.momentum()).pT() / (j1.pT() + j2.pT());
    }

    /// Calculate the DeltaPhi variable between event planes
    double calcDeltaPhiPlanes(const Jet& j1, const Jet& j2, const Jet& j3, const Jet& j4) {
      const FourMomentum sumVec1 = j1.momentum() + j2.momentum();
      const FourMomentum sumVec2 = j3.momentum() + j4.momentum();
      return  deltaPhi(sumVec1, sumVec2);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {

      // Retrieve all anti-kt R=0.6 jets with pT above 20 GeV and eta < 4.4
      const Jets jets = applyProjection<JetAlg>(event, "AntiKt6Jets").jetsByPt(Cuts::pT >= 20*GeV && Cuts::abseta <= 4.4);

      // Require at least 4 jets, with the leading jet pT above 42.5 GeV
      if (jets.size() < 4) vetoEvent;
      if (jets[0].pT() < 42.5*GeV) vetoEvent;

      /// Fill histograms
      const double weight = event.weight();
      _hists["deltaPt12"]->fill( calcDeltaPt( jets[0], jets[1] ), weight );
      _hists["deltaPt34"]->fill( calcDeltaPt( jets[2], jets[3] ), weight );
      _hists["deltaPt13"]->fill( calcDeltaPt( jets[0], jets[2] ), weight );
      _hists["deltaPt23"]->fill( calcDeltaPt( jets[1], jets[2] ), weight );
      _hists["deltaPt14"]->fill( calcDeltaPt( jets[0], jets[3] ), weight );
      _hists["deltaPt24"]->fill( calcDeltaPt( jets[1], jets[3] ), weight );
      //
      _hists["deltaPhi12"]->fill( deltaPhi( jets[0],jets[1] ), weight );
      _hists["deltaPhi34"]->fill( deltaPhi( jets[2],jets[3] ), weight );
      _hists["deltaPhi13"]->fill( deltaPhi( jets[0],jets[2] ), weight );
      _hists["deltaPhi23"]->fill( deltaPhi( jets[1],jets[2] ), weight );
      _hists["deltaPhi14"]->fill( deltaPhi( jets[0],jets[3] ), weight );
      _hists["deltaPhi24"]->fill( deltaPhi( jets[1],jets[3] ), weight );
      //
      _hists["deltaY12"]->fill( deltaRap( jets[0], jets[1] ), weight );
      _hists["deltaY34"]->fill( deltaRap( jets[2], jets[3] ), weight );
      _hists["deltaY13"]->fill( deltaRap( jets[0], jets[2] ), weight );
      _hists["deltaY23"]->fill( deltaRap( jets[1], jets[2] ), weight );
      _hists["deltaY14"]->fill( deltaRap( jets[0], jets[3] ), weight );
      _hists["deltaY24"]->fill( deltaRap( jets[1], jets[3] ), weight );
      //
      _hists["deltaPhiPlanes12"]->fill( calcDeltaPhiPlanes(jets[0], jets[1], jets[2], jets[3] ), weight );
      _hists["deltaPhiPlanes13"]->fill( calcDeltaPhiPlanes(jets[0], jets[2], jets[1], jets[3] ), weight );
      _hists["deltaPhiPlanes14"]->fill( calcDeltaPhiPlanes(jets[0], jets[3], jets[1], jets[2] ), weight );
    }


    /// Post-run processing
    void finalize() {
      for (auto& key_hist : _hists)
        normalize(key_hist.second);
    }

    //@}


    /// Histograms
    map<string, Histo1DPtr> _hists;

  };


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

}