Rivet analyses


title: CMS_2014_I1266056

Photon + jets triple differential cross-section

Experiment: CMS (LHC)

Inspire ID: 1266056

Status: UNVALIDATED

Authors: - David Grellscheid

References: - arXiv: 1311.6141

Beams: p+ p+

Beam energies: (3500.0, 3500.0)GeV

Run details: - Inclusive photon+jet+X events at $\sqrt{s} = 7$~TeV.

A measurement of the triple differential cross section in photon+jets final states in $pp$ collisions at $\sqrt{s} = 7$ TeV. Photons with $|\eta|<2.5$ and $40$~GeV$<p_T<300$~GeV and jets with $|\eta|<2.5$ and $p_T>30$ GeV are selected. The measurement uses 2.14 fb$^{-1}$ of integrated luminosity collected with the CMS detector.

Source code:CMS_2014_I1266056.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/FastJets.hh"

include "Rivet/Projections/FinalState.hh"

include "Rivet/Projections/LeadingParticlesFinalState.hh"

include "Rivet/Projections/VetoedFinalState.hh"

namespace Rivet {

/// @brief Measurement of gamma + jets + X triple differential cross-sections /// /// @author David Grellscheid class CMS_2014_I1266056 : public Analysis { public:

// Constructor
CMS_2014_I1266056()
    : Analysis("CMS_2014_I1266056") { }


// Book histograms and initialise projections before the run
void init() {
  // Final state
  FinalState fs((Cuts::etaIn(-3, 3)));
  declare(fs, "FS");

  // Leading photon
  LeadingParticlesFinalState photonfs(FinalState((Cuts::etaIn(-2.5, 2.5) && Cuts::pT >= 40.0 * GeV)));
  photonfs.addParticleId(PID::PHOTON);
  declare(photonfs, "LeadingPhoton");

  // FS excluding the leading photon
  VetoedFinalState vfs(fs);
  vfs.addVetoOnThisFinalState(photonfs);
  declare(vfs, "JetFS");

  // Jets
  FastJets jetpro(vfs, JetAlg::ANTIKT, 0.5);
  //jetpro.useInvisibles();
  declare(jetpro, "Jets");

  book(_h_phverycentral_jetcentral, 1, 1, 1);
  book(_h_phcentral_jetcentral, 2, 1, 1);
  book(_h_phforward_jetcentral, 3, 1, 1);
  book(_h_phveryforward_jetcentral, 4, 1, 1);

  book(_h_phverycentral_jetforward, 1, 1, 2);
  book(_h_phcentral_jetforward, 2, 1, 2);
  book(_h_phforward_jetforward, 3, 1, 2);
  book(_h_phveryforward_jetforward, 4, 1, 2);
}

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

  // Get the photon
  const FinalState& photonfs = apply<FinalState>(event, "LeadingPhoton");
  if (photonfs.particles().empty()) vetoEvent;
  const FourMomentum photon = photonfs.particles().front().momentum();

  // Get the jet
  Jets jets = apply<FastJets>(event, "Jets").jetsByPt(Cuts::pT > 30 * GeV);
  if (jets.empty()) vetoEvent;
  FourMomentum leadingJet;
  for (const Jet& j : jets) {
    leadingJet = j.momentum();
    // keep the first separated jet
    if (deltaR(photon, leadingJet) > 0.5) break;
  }
  if (deltaR(photon, leadingJet) < 0.5) vetoEvent;

  // Veto if leading jet is outside plotted rapidity regions
  if (leadingJet.abseta() > 2.5) vetoEvent;

  // photon isolation
  double etInCone = 0.0;
  for (const Particle& p : apply<FinalState>(event, "FS").particles()) {
    if (deltaR(photon, p) >= 0.4) continue;
    etInCone += p.Et();
  }
  etInCone -= photon.Et();
  if (etInCone > 5.0 * GeV) vetoEvent;

  // Fill histos
  const double abs_jet_eta = leadingJet.abseta();
  const double photon_pt = photon.pT() / GeV;
  const double abs_photon_eta = photon.abseta();

  if (abs_jet_eta < 1.5) {
    if (abs_photon_eta < 0.9)
      _h_phverycentral_jetcentral->fill(photon_pt);
    else if (abs_photon_eta < 1.44)
      _h_phcentral_jetcentral->fill(photon_pt);
    else if (abs_photon_eta < 1.57) { }
    else if (abs_photon_eta < 2.1)
      _h_phforward_jetcentral->fill(photon_pt);
    else if (abs_photon_eta < 2.5)
      _h_phveryforward_jetcentral->fill(photon_pt);
  }
  else if (abs_jet_eta < 2.5) {
    if (abs_photon_eta < 0.9)
      _h_phverycentral_jetforward->fill(photon_pt);
    else if (abs_photon_eta < 1.44)
      _h_phcentral_jetforward->fill(photon_pt);
    else if (abs_photon_eta < 1.57) { }
    else if (abs_photon_eta < 2.1)
      _h_phforward_jetforward->fill(photon_pt);
    else if (abs_photon_eta < 2.5)
      _h_phveryforward_jetforward->fill(photon_pt);
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  const double scale_jetcentral = crossSection() / picobarn / sumOfWeights(); // *3 (jet eta < 1.5)
  scale(_h_phverycentral_jetcentral, scale_jetcentral);                       // * 1.8 (photon eta < 0.9)
  scale(_h_phcentral_jetcentral, scale_jetcentral);                           // * 1.08 (0.9 .. 1.44)
  scale(_h_phforward_jetcentral, scale_jetcentral);                           // * 1.06 (1.57 .. 2.1)
  scale(_h_phveryforward_jetcentral, scale_jetcentral);                       // * 0.8  (2.1 .. 2.5)

  const double scale_jetforward = crossSection() / picobarn / sumOfWeights(); // *2 (1.5 < eta < 2.5)
  scale(_h_phverycentral_jetforward, scale_jetforward);                       // .. as above ..
  scale(_h_phcentral_jetforward, scale_jetforward);                           // .. as above ..
  scale(_h_phforward_jetforward, scale_jetforward);                           // .. as above ..
  scale(_h_phveryforward_jetforward, scale_jetforward);                       // .. as above ..
}

private:

Histo1DPtr _h_phverycentral_jetcentral;
Histo1DPtr _h_phcentral_jetcentral;
Histo1DPtr _h_phforward_jetcentral;
Histo1DPtr _h_phveryforward_jetcentral;

Histo1DPtr _h_phverycentral_jetforward;
Histo1DPtr _h_phcentral_jetforward;
Histo1DPtr _h_phforward_jetforward;
Histo1DPtr _h_phveryforward_jetforward;

};

RIVET_DECLARE_PLUGIN(CMS_2014_I1266056);

} ```