Rivet analyses


title: CMS_2018_I1686000

Fiducial single-top + photon cross-section measurement at 13 TeV

Experiment: CMS (LHC)

Inspire ID: 1686000

Status: VALIDATED

Authors: - cms-pag-conveners-smp@cern.ch - Andy Buckley

References: - Expt page: CMS-TOP-17-016, CERN-EP-2018-206 - Phys.Rev.Lett. 121 (2018) - DOI 10.1103/PhysRevLett.121.221802 - arXiv: 1808.02913 - http://cms-results.web.cern.ch/cms-results/public-results/publications/TOP-17-016/index.html

Beams: p+ p+

Beam energies: (6500.0, 6500.0)GeV

Run details: - $pp$ single-top + photon production at $\sqrt{s} = 13$ TeV

The first evidence of events consistent with the production of a single top quark in association with a photon is reported. The analysis is based on proton-proton collisions at $\sqrt{s}$=13 TeV and recorded by the CMS experiment in 2016, corresponding to an integrated luminosity of 35.9 fb${}^{-1}$. Events are selected by requiring the presence of a muon, a photon, an imbalance in transverse momentum from an undetected neutrino, and at least two jets of which exactly one is identified as associated with the hadronization of a b quark. A multivariate discriminant based on topological and kinematic event properties is employed to separate signal from background processes. An excess above the background-only hypothesis is observed, with a significance of 4.4 standard deviations. A fiducial cross section is measured for isolated photons with transverse momentum greater than 25 GeV in the central region of the detector. The measured product of the cross section and branching fraction is $115 \pm 17$ (stat) $\pm 30$ (syst) fb, consistent with the Standard Model prediction. Warning: the fiducial definition in this analysis relies on generation-level cuts and cannot be exactly reproduced.

Source code:CMS_2018_I1686000.cc

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

include "Rivet/Analysis.hh"

include "Rivet/Projections/FastJets.hh"

include "Rivet/Projections/IdentifiedFinalState.hh"

include "Rivet/Projections/LeptonFinder.hh"

include "Rivet/Projections/MergedFinalState.hh"

include "Rivet/Projections/MissingMomentum.hh"

include "Rivet/Projections/PartonicTops.hh"

include "Rivet/Projections/PromptFinalState.hh"

namespace Rivet {

/// Fiducial single-top + photon cross-section measurement at 13 TeV class CMS_2018_I1686000 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2018_I1686000);


/// @name Analysis methods
/// @{

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

  // Leptons
  declare(LeptonFinder(Cuts::abseta < 2.4 && Cuts::pT > 26 * GeV, 0.1), "Leptons");

  // Jets
  declare(FastJets(FinalState(Cuts::abseta < 5), JetAlg::ANTIKT, 0.4), "Jets");

  // Photons
  declare(PromptFinalState(Cuts::pid == PID::PHOTON && Cuts::pT > 25 * GeV && Cuts::abseta < 1.44),
          "Photons");

  // MET
  declare(MissingMomentum(FinalState(Cuts::abseta < 5)), "MET");


  // Book xsec counter
  book(_c_xsec_fid, "xsec");
}


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

  // // Find at least 2 jets, one b-tagged
  // const Jets jets = apply<JetFinder>(event, "Jets").jetsByPt(Cuts::abseta < 4.7 && Cuts::pT > 40*GeV);
  // Jets bjets, ljets;
  // for (const Jet& j : jets)
  //   ((j.abseta() < 2.5 && j.bTagged()) ? bjets : ljets) += j;
  // if (bjets.empty() || ljets.empty()) vetoEvent;
  // const Jet& bjet = bjets[0];
  // const Jet& ljet = ljets[0];

  // // Require exactly one isolated lepton, and it has to be a muon
  // const Particles& leps = apply<FinalState>(event, "Leptons").particlesByPt();
  // const Particles isoleps = discardIfAnyDeltaRLess(leps, jets, 0.3);
  // if (isoleps.size() != 1 || isoleps[0].abspid() != PID::MUON) vetoEvent;
  // const Particle& muon = isoleps[0];

  // // Require exactly one isolated photon
  // const Particles& photons = apply<FinalState>(event, "Photons").particlesByPt();
  // const Particles muisophotons = discard(photons, deltaRLess(muon,0.5));
  // const Particles isophotons = discardIfAnyDeltaRLess(muisophotons, Jets{bjet,ljet}, 0.5);
  // if (isophotons.size() != 1) vetoEvent;

  // // Require 30 GeV of missing ET
  // const double met = apply<MissingMomentum>(event, "MET").met();
  // if (met < 30*GeV) vetoEvent;


  // Find light jets
  const Jets jets = apply<JetFinder>(event, "Jets").jetsByPt();
  const Jets ljets = discard(jets, [](const Jet& j) { return j.abseta() < 2.5 && j.bTagged(); });

  // Require a photon, isolated from the light jet
  Particles photons = apply<FinalState>(event, "Photons").particlesByPt();
  if (!ljets.empty()) idiscard(photons, deltaRLess(ljets[0], 0.5));
  if (photons.empty()) vetoEvent;

  // Fill counter
  _c_xsec_fid->fill();
}


/// Normalise histograms etc., after the run
void finalize() {
  const double BRmu = 0.13 + 0.13 * 0.17; //< decay BR direct to a muon, and to a muon via a tau
  scale(_c_xsec_fid, BRmu * crossSection() / femtobarn / sumOfWeights());
}

/// @}


/// Counter
CounterPtr _c_xsec_fid;

};

RIVET_DECLARE_PLUGIN(CMS_2018_I1686000);

} ```