rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2018_I1686000

Fiducial single-top + photon cross-section measurement at 13 TeV
Experiment: CMS (LHC)
Inspire ID: 1682495
Status: VALIDATED
Authors:
• cms-pag-conveners-smp@cern.ch
• Andy Buckley
References:
• CMS-TOP-17-016, CERN-EP-2018-206
• Phys.Rev.Lett. 121 (2018)
• DOI 10.1103/PhysRevLett.121.221802
• hep-ex 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 s=13TeV and recorded by the CMS experiment in 2016, corresponding to an integrated luminosity of 35.9fb-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 \text{ (stat)} \pm 30 \text{ (syst)} \mathrm{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
  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 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/DressedLeptons.hh" #include "Rivet/Projections/FastJets.hh" #include "Rivet/Projections/MergedFinalState.hh" #include "Rivet/Projections/IdentifiedFinalState.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 DEFAULT_RIVET_ANALYSIS_CTOR(CMS_2018_I1686000); /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Leptons declare(DressedLeptons(PromptFinalState(), 0.1, Cuts::abseta < 2.4 && Cuts::pT > 26*GeV), "Leptons"); // Jets declare(FastJets(FinalState(Cuts::abseta < 5), FastJets::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 _c_xsec_fid = bookCounter("xsec"); } /// Perform the per-event analysis void analyze(const Event& event) { // // Find at least 2 jets, one b-tagged // const Jets jets = apply(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(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(event, "Photons").particlesByPt(); // const Particles muisophotons = filter_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(event, "MET").met(); // if (met < 30*GeV) vetoEvent; // Find light jets const Jets jets = apply(event, "Jets").jetsByPt(); const Jets ljets = filter_discard(jets, [](const Jet& j){ return j.abseta() < 2.5 && j.bTagged(); } ); // Require a photon, isolated from the light jet Particles photons = apply(event, "Photons").particlesByPt(); if (!ljets.empty()) ifilter_discard(photons, deltaRLess(ljets[0], 0.5)); if (photons.empty()) vetoEvent; // Fill counter _c_xsec_fid->fill(event.weight()); } /// 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; }; DECLARE_RIVET_PLUGIN(CMS_2018_I1686000); }