rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2017_I1467451

Measurement of the transverse momentum spectrum of the Higgs boson produced in $pp$collisions at $\sqrt{s} = 8$ TeV using H to WW decays
Experiment: CMS (LHC)
Inspire ID: 1467451
Status: VALIDATED
Authors:
  • Lorenzo Viliani
References:
  • JHEP 1703 (2017) 032, 2017
  • DOI:10.1007/JHEP03(2017)032
  • arXiv: 1606.01522
  • CMS-HIG-15-010
Beams: p+ p+
Beam energies: (4000.0, 4000.0) GeV
Run details:
  • H->WW->lvlv, both ggH and XH (VBF anf VH) productions modes are included

The cross section for Higgs boson production in pp collisions is studied using the $H\rightarrow W^+ W^-$ decay mode, followed by leptonic decays of the W bosons to an oppositely charged electron-muon pair in the final state. The measurements are performed using data collected by the CMS experiment at the LHC at a centre-of-mass energy of 8 TeV, corresponding to an integrated luminosity of $19.4\,\text{fb}^{-1}$. The Higgs boson transverse momentum ($p_\text{T}$) is reconstructed using the lepton pair $p_\text{T}$ and missing $p_\text{T}$. The differential cross section times branching fraction is measured as a function of the Higgs boson $p_\text{T}$ in a fiducial phase space defined to match the experimental acceptance in terms of the lepton kinematics and event topology. The production cross section times branching fraction in the fiducial phase space is measured to be $39 \pm 8\,\text{(stat)} \pm 9\,\text{(syst)}\,\text{fb}$. The measurements are found to agree, within experimental uncertainties, with theoretical calculations based on the standard model. The fiducial region is defined at particle level (using Born level leptons) as: - emununu, leptons are required not to originate from leptonic tau decays - leading lepton $p_T > 20$ GeV - subleading lepton $p_T > 10$ GeV - psudorapidity of electrons and muons $|\eta| < 2.5$ - Invariant mass of the two charged leptons $m_{ll} > 12$ GeV - Charged lepton pair $p_T > 30$ GeV - Invariant mass of the leptonic system in the transverse plane $m_T^{e\mu\nu\nu} > 50$ GeV Notes on reinterpretation: Major- Despite the existance of a "fiducial" cross section definition, it is not clear this can really be used to constrain any BSM signal other than an excess/deficit in SM Higgs->WW events. There is a b-jet veto is applied to suppress ttbar background, which is however not implemented in the fiducial cross section defintion, and so is extrapolated out during the unfolding. Even after this, the background remains very large and is subtracted using a fit to data. How all this might affect a hypothetical non-SM-H source of electrons and muons (on which the "fiducial" region is based) is very difficult to evaluate. Minor- The rivet routine uses dressed leptons even though the above (and the paper) say they are born level.

Source code: CMS_2017_I1467451.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
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/ChargedLeptons.hh"
#include "Rivet/Projections/DressedLeptons.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/PromptFinalState.hh"
#include "Rivet/Projections/MissingMomentum.hh"

namespace Rivet {


  /// Higgs -> WW -> emu + MET in 8 TeV pp collisions
  class CMS_2017_I1467451 : public Analysis {
  public:

    /// Constructor
    DEFAULT_RIVET_ANALYSIS_CTOR(CMS_2017_I1467451);


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

      const double lepConeSize = 0.1;
      const double lepMaxEta = 2.5;
      const Cut lepton_cut = (Cuts::abseta < lepMaxEta);

      MSG_WARNING("\033[91;1mLIMITED VALIDITY - check info file for details!\033[m");


      // Initialise and register projections
      FinalState fs((Cuts::etaIn(-2.5,2.5)));
      FinalState fsm((Cuts::etaIn(-5,5)));
      declare(fs, "FS");
      declare(fsm, "FSM");

      ChargedLeptons charged_leptons(fs);
      IdentifiedFinalState photons(fs);
      photons.acceptIdPair(PID::PHOTON);

      PromptFinalState prompt_leptons(charged_leptons);
      prompt_leptons.acceptMuonDecays(true);
      prompt_leptons.acceptTauDecays(false);

      PromptFinalState prompt_photons(photons);
      prompt_photons.acceptMuonDecays(true);
      prompt_photons.acceptTauDecays(false);

      DressedLeptons dressed_leptons = DressedLeptons(prompt_photons, prompt_leptons, lepConeSize, lepton_cut, true);
      declare(dressed_leptons, "DressedLeptons");

      MissingMomentum Met(fsm);
      declare(Met, "MET");


      // Book histograms
      book(histoPtH , 1,1,1);
      book(histoXsec, 2,1,1);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const double weight = 1.0;

      Particles leptons = applyProjection<DressedLeptons>(event, "DressedLeptons").particlesByPt(10.0*GeV);
      if (leptons.size() < 2) vetoEvent;
      if (leptons[0].pT() < 20*GeV || leptons[1].pT() < 10*GeV) vetoEvent;
      if (leptons[0].charge() == leptons[1].charge()) vetoEvent;
      if (leptons[0].abspid() == leptons[1].abspid()) vetoEvent;

      FourMomentum LL = (leptons[0].momentum() + leptons[1].momentum());
      if (LL.mass() < 12*GeV) vetoEvent;
      if (LL.pT() < 30*GeV) vetoEvent;

      FourMomentum EtMiss = applyProjection<MissingMomentum>(event,"MET").missingMomentum();
      FourMomentum P4H = LL + EtMiss;

      double dphi = deltaPhi(LL, EtMiss);

      double mT = sqrt(2*LL.pT()*EtMiss.pT()*(1-cos(dphi)));
      if (mT < 50*GeV) vetoEvent;

      histoPtH->fill(min(P4H.pT()/GeV, 199.), weight);
      histoXsec->fill(8000, weight); ///< @todo Should probably be a Counter
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      scale(histoPtH, crossSection()/sumOfWeights()/femtobarn);
      scale(histoXsec, (histoXsec->xMax()-histoXsec->xMin())*crossSection()/sumOfWeights()/femtobarn);
    }


  private:

    Histo1DPtr histoPtH, histoXsec;

  };


  // The hook for the plugin system
  DECLARE_RIVET_PLUGIN(CMS_2017_I1467451);

}