Rivet analyses


title: CMS_2011_I930319

Forward energy flow in MB and dijet events at 0.9 and 7 TeV

Experiment: CMS (LHC)

Inspire ID: 930319

Status: VALIDATED

Authors: - S. Dooling - A. Knutsson

References: - JHEP 1111 148 - DOI: 10.1007/JHEP11(2011)148 - arXiv: 1110.0211

Beams: p+ p+

Beam energies: (450.0, 450.0); (3500.0, 3500.0)GeV

Run details: - $pp$ MB and QCD interactions at 0.9 and 7~TeV. No pT-cuts.

Forward energy flow measured by CMS at $\sqrt{s} = 0.9$ and 7~TeV in MB and dijet events.'

Source code:CMS_2011_I930319.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/ChargedFinalState.hh"

include "Rivet/Projections/FastJets.hh"

include "Rivet/Projections/FinalState.hh"

include "Rivet/Projections/VetoedFinalState.hh"

namespace Rivet {

/// Forward energy flow in MB and dijet events at 0.9 and 7 TeV class CMS_2011_I930319 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2011_I930319);


void init() {
  const FinalState fs(Cuts::abseta < 6.0);
  declare(fs, "FS");
  declare(FastJets(fs, JetAlg::ANTIKT, 0.5), "Jets");

  VetoedFinalState fsv(fs);
  fsv.vetoNeutrinos();
  fsv.addVetoPair(PID::MUON);
  declare(fsv, "fsv");

  // For the MB ND selection
  const ChargedFinalState fschrgd(Cuts::abseta < 6.0);
  declare(fschrgd, "fschrgd");
  VetoedFinalState fschrgdv(fschrgd);
  fschrgdv.vetoNeutrinos();
  declare(fschrgdv, "fschrgdv");

  for (double eVal : allowedEnergies()) {
    const string en = toString(round(eVal));
    if (isCompatibleWithSqrtS(eVal)) _sqs = en;
    size_t offset = (en == "900"s) ? 0 : 2;
    book(_h[en + "mb"], 1 + offset, 1, 1);    // energy flow in MB
    book(_h[en + "dijet"], 2 + offset, 1, 1); // energy flow in dijet events
    book(_c[en + "mb"], "TMP/weightMB" + en);
    book(_c[en + "dijet"], "TMP/weightDijet" + en);
  }
  raiseBeamErrorIf(_sqs.empty());
}


void analyze(const Event& event) {
  // Skip if the event is empty
  const FinalState& fsv = apply<FinalState>(event, "fsv");
  if (fsv.empty()) vetoEvent;

  // Veto diffractive topologies according to defined hadron level
  double count_chrg_forward = 0;
  double count_chrg_backward = 0;
  const FinalState& fschrgdv = apply<FinalState>(event, "fschrgdv");
  for (const Particle& p : fschrgdv.particles()) {
    if (3.9 < p.eta() && p.eta() < 4.4) ++count_chrg_forward;
    if (-4.4 < p.eta() && p.eta() < -3.9) ++count_chrg_backward;
  }
  if (count_chrg_forward == 0 || count_chrg_backward == 0) vetoEvent;
  /// @todo "Diffractive" veto should really also veto dijet events?


  // MINIMUM BIAS EVENTS
  _c[_sqs + "mb"]->fill();
  for (const Particle& p : fsv.particles()) {
    _h[_sqs + "mb"]->fill(p.abseta(), p.E() / GeV);
  }


  // DIJET EVENTS
  const FastJets& jetpro = apply<FastJets>(event, "Jets");
  const double PTCUT = (_sqs == "900"s) ? 8 * GeV : 20 * GeV;
  const Jets jets = jetpro.jetsByPt(Cuts::pT > PTCUT);
  if (jets.size() >= 2) {
    // eta cut for the central jets
    if (jets[0].abseta() < 2.5 && jets[1].abseta() < 2.5) {
      // Back to back condition of the jets
      const double diffphi = deltaPhi(jets[1].phi(), jets[0].phi());
      if (diffphi - PI < 1.0) {
        _c[_sqs + "dijet"]->fill();
        for (const Particle& p : fsv.particles()) {
          _h[_sqs + "dijet"]->fill(p.abseta(), p.E() / GeV);
        }
      }
    }
  }
}


void finalize() {
  scale(_h, crossSectionPerEvent());
  scale(_c, crossSectionPerEvent());
  for (auto& item : _h) {
    scale(item.second, 0.5 / _c[item.first]->sumW());
  }
}

private:

/// @{
map<string, Histo1DPtr> _h;
map<string, CounterPtr> _c;

string _sqs = "";
/// @}

};

RIVET_DECLARE_ALIASED_PLUGIN(CMS_2011_I930319, CMS_2011_S9215166);

} ```

Aliases: - CMS_2011_S9215166