Rivet analyses


title: ZEUS_2024_I2794054

Azimuthal correlation angles between scattered lepton and leading jet in lepton-proton collisions

Experiment: ZEUS (HERA)

Inspire ID: 2794054

Status: VALIDATED

Authors: - Luke Jones

References: - arXiv: 2406.01430 - DESY-24-070 - Eur. Phys. J. C (2024) 84: 1334

Beams: p+ e-, p+ e+, e+ p+, e- p+

Beam energies: (920.0, 27.5); (920.0, 27.5); (27.5, 920.0); (27.5, 920.0)GeV

Run details: - 27.5 GeV positrons colliding with 920 GeV protons Leading jet $2.5 < p_T < 30$ GeV Jet pseudorapidity $-1.5 < |\eta| < 1.8$

The azimuthal correlation angle between the scattered lepton and leading jets in ZEUS lepton-proton collisions, with beam energies of 920 GeV and 27.5 GeV. The centre-of-mass energy is 318 GeV, elasticity between $0.04 < y < 0.7$, and outgoing lepton energy $E_e > 10$ GeV. Jets are reconstructed in the range $-1.5 < |\eta| < 1.8$ using the kt algorithm. The lepton polar angle must be between $140 < \theta_e < 180$ degrees.

Source code:ZEUS_2024_I2794054.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Math/Constants.hh"

include "Rivet/Projections/Beam.hh"

include "Rivet/Projections/DISFinalState.hh"

include "Rivet/Projections/DISKinematics.hh"

include "Rivet/Projections/DirectFinalState.hh"

include "Rivet/Projections/FastJets.hh"

include "Rivet/Projections/FinalState.hh"

include "Rivet/Projections/LeptonFinder.hh"

include "Rivet/Projections/MissingMomentum.hh"

namespace Rivet {

/// @Azimuthal correlation angle between scattered lepton and leading jet at ZEUS class ZEUS_2024_I2794054 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(ZEUS_2024_I2794054);
/// @name Analysis methods

/// @author Luke Jones


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

  // Initialise and register projections
  declare(FinalState(), "FS");
  declare(DISFinalState(DISFrame::LAB), "DISFS");
  declare(FastJets(DISFinalState(DISFrame::LAB), fastjet::JetAlgorithm::kt_algorithm,
                   fastjet::RecombinationScheme::Et_scheme, 1.0),
          "DISFSJets");
  const DISLepton dl;
  declare(dl, "Lepton");
  declare(DISKinematics(), "Kinematics");

  // Booking all d sigma / d phi graphs
  for (size_t ih = 0; ih < 19; ++ih) {
    book(_h_dsigdphi[ih], ih + 1, 1, 1);
  }
}

void analyze(const Event& event) {

  // Get the DIS Kinematics
  const DISKinematics& dk = apply<DISKinematics>(event, "Kinematics");
  if (dk.failed()) vetoEvent;
  const int orientation = dk.orientation();
  double y = dk.y();
  double Q2 = dk.Q2();

  //  Momentum of scattered lepton
  const DISLepton& dl = apply<DISLepton>(event, "Lepton");
  if (dl.failed()) vetoEvent;
  const FourMomentum leptonMom = dl.out();
  const double enel = leptonMom.E();
  const double thel = leptonMom.angle(dk.beamHadron().mom()) / degree;

  // Jet Pseudorapidity
  double etamin = -1.5;
  double etamax = 1.8;
  if (orientation < 0) {
    etamin = -1.8;
    etamax = 1.5;
  }

  // Basic kinematic cuts
  if (!inRange(Q2, 10, 350)) vetoEvent;
  if (!inRange(y, 0.04, 0.7)) vetoEvent;
  if (enel < 10) vetoEvent;
  if (thel < 140.0 || thel > 180.0) vetoEvent; // Cut on lepton polar angle

  const Jets jets = apply<FastJets>(event, "DISFSJets")
                        .jets(Cuts::Et > 2.5 * GeV && Cuts::Et < 30 * GeV && Cuts::etaIn(etamin, etamax),
                              cmpMomByEt);
  double dPhi2 = 0.0;
  double dPhi3 = 0.0;
  if (jets.size() < 1) vetoEvent;

  const Jet& firstJet = jets[0];
  const FourMomentum jetMom = firstJet.mom();

  if (jets.size() >= 2) {
    dPhi2 = deltaPhi(leptonMom, jetMom);
  }
  if (jets.size() >= 3) {
    dPhi3 = deltaPhi(leptonMom, jetMom);
  }

  //Azimuthal angle calculations
  double dPhi = deltaPhi(leptonMom, jetMom);

  // Fill Histograms
  _h_dsigdphi[0]->fill(dPhi);

  if (firstJet.pT() > 2.5 * GeV && firstJet.pT() < 7 * GeV) _h_dsigdphi[1]->fill(dPhi);
  if (firstJet.pT() > 2.5 * GeV && firstJet.pT() < 7 * GeV && jets.size() >= 2)
    _h_dsigdphi[2]->fill(dPhi2);
  if (firstJet.pT() > 2.5 * GeV && firstJet.pT() < 7 * GeV && jets.size() >= 3)
    _h_dsigdphi[3]->fill(dPhi3);
  if (firstJet.pT() > 7 * GeV && firstJet.pT() < 12 * GeV) _h_dsigdphi[4]->fill(dPhi);
  if (firstJet.pT() > 7 * GeV && firstJet.pT() < 12 * GeV && jets.size() >= 2)
    _h_dsigdphi[5]->fill(dPhi2);
  if (firstJet.pT() > 7 * GeV && firstJet.pT() < 12 * GeV && jets.size() >= 3)
    _h_dsigdphi[6]->fill(dPhi3);
  if (firstJet.pT() > 12 * GeV && firstJet.pT() < 30 * GeV) _h_dsigdphi[7]->fill(dPhi);
  if (firstJet.pT() > 12 * GeV && firstJet.pT() < 30 * GeV && jets.size() >= 2)
    _h_dsigdphi[8]->fill(dPhi2);
  if (firstJet.pT() > 12 * GeV && firstJet.pT() < 30 * GeV && jets.size() >= 3)
    _h_dsigdphi[9]->fill(dPhi3);

  // Table 5.1 start here
  if (Q2 > 10 && Q2 < 50) _h_dsigdphi[10]->fill(dPhi);
  if (Q2 > 10 && Q2 < 50 && jets.size() >= 2) _h_dsigdphi[11]->fill(dPhi2);
  if (Q2 > 10 && Q2 < 50 && jets.size() >= 3) _h_dsigdphi[12]->fill(dPhi3);

  // Table 6.1
  if (Q2 > 50 && Q2 < 100) _h_dsigdphi[13]->fill(dPhi);
  if (Q2 > 50 && Q2 < 100 && jets.size() >= 2) _h_dsigdphi[14]->fill(dPhi2);
  if (Q2 > 50 && Q2 < 100 && jets.size() >= 3) _h_dsigdphi[15]->fill(dPhi3);

  //Table 7.1
  if (Q2 > 100 && Q2 < 350) _h_dsigdphi[16]->fill(dPhi);
  if (Q2 > 100 && Q2 < 350 && jets.size() >= 2) _h_dsigdphi[17]->fill(dPhi2);
  if (Q2 > 100 && Q2 < 350 && jets.size() >= 3) _h_dsigdphi[18]->fill(dPhi3);
}

/// Normalise histograms etc., after the run
void finalize() {
  scale(_h_dsigdphi, crossSection() / picobarn / sumOfWeights());
}

/// @}

Histo1DPtr _h_dsigdphi[19];

};

RIVET_DECLARE_PLUGIN(ZEUS_2024_I2794054);

} ```