rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMS_2015_I1370682_PARTON

Parton-level differential top-quark pair production cross-sections in $pp$ collisions at $\sqrt{s} = 8\,\text{TeV}$
Experiment: CMS (LHC)
Inspire ID: 1370682
Status: VALIDATED
Authors:
  • Jungwan John Goh
  • Markus Seidel
References:
  • Eur.Phys.J. C75 (2015) 542
Beams: p+ p+
Beam energies: (4000.0, 4000.0) GeV
Run details:
  • $t\bar{t}$ events at $\sqrt{s}= 8\,\text{TeV}$. Top quarks with physical momenta must be present in the event record.

The normalized parton level differential cross section for top quark pair production is measured in $pp$ collisions at a centre-of-mass energy of 8\,\text{TeV}.

Source code: CMS_2015_I1370682_PARTON.cc
  1#include "Rivet/Analysis.hh"
  2#include "Rivet/Projections/FastJets.hh"
  3#include "Rivet/Projections/PartonicTops.hh"
  4
  5namespace Rivet {
  6
  7
  8  class CMS_2015_I1370682_PARTON : public Analysis {
  9  public:
 10
 11    RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2015_I1370682_PARTON);
 12
 13
 14    /// Book projections and histograms
 15    void init() {
 16      declare(PartonicTops(TopDecay::E_MU, PromptEMuFromTau::NO), "LeptonicPartonTops");
 17      declare(PartonicTops(TopDecay::HADRONIC), "HadronicPartonTops");
 18
 19      book(_hSL_topPt        , 15, 1, 1);
 20      book(_hSL_topPtTtbarSys, 16, 1, 1);
 21      book(_hSL_topY         , 17, 1, 1);
 22      book(_hSL_ttbarDelPhi  , 18, 1, 1);
 23      book(_hSL_topPtLead    , 19, 1, 1);
 24      book(_hSL_topPtSubLead , 20, 1, 1);
 25      book(_hSL_ttbarPt      , 21, 1, 1);
 26      book(_hSL_ttbarY       , 22, 1, 1);
 27      book(_hSL_ttbarMass    , 23, 1, 1);
 28
 29      book(_hDL_topPt        , 24, 1, 1);
 30      book(_hDL_topPtTtbarSys, 25, 1, 1);
 31      book(_hDL_topY         , 26, 1, 1);
 32      book(_hDL_ttbarDelPhi  , 27, 1, 1);
 33      book(_hDL_topPtLead    , 28, 1, 1);
 34      book(_hDL_topPtSubLead , 29, 1, 1);
 35      book(_hDL_ttbarPt      , 30, 1, 1);
 36      book(_hDL_ttbarY       , 31, 1, 1);
 37      book(_hDL_ttbarMass    , 32, 1, 1);
 38      }
 39
 40
 41      void analyze(const Event& event) {
 42
 43        // Do the analysis only for the ttbar full leptonic or semileptonic channel, without tau decay
 44        const Particles leptonicpartontops = apply<ParticleFinder>(event, "LeptonicPartonTops").particlesByPt();
 45        const Particles hadronicpartontops = apply<ParticleFinder>(event, "HadronicPartonTops").particlesByPt();
 46        const bool isSemilepton = (leptonicpartontops.size() == 1 && hadronicpartontops.size() == 1);
 47        const bool isDilepton = (leptonicpartontops.size() == 2 && hadronicpartontops.size() == 0);
 48        if (!isSemilepton && !isDilepton) vetoEvent;
 49
 50        // Parton level at full phase space
 51        // Fill top quarks defined in the parton level, full phase space
 52        const FourMomentum t1P4 = leptonicpartontops[0];
 53        const FourMomentum t2P4 = isSemilepton ? hadronicpartontops[0] : leptonicpartontops[1];
 54        const double t1Pt = t1P4.pT(), t2Pt = t2P4.pT();
 55        const FourMomentum ttbarP4 = t1P4 + t2P4;
 56        const FourMomentum t1P4AtCM = LorentzTransform::mkFrameTransformFromBeta(ttbarP4.betaVec()).transform(t1P4);
 57        const double dPhi = deltaPhi(t1P4.phi(), t2P4.phi());
 58
 59        if (isSemilepton) {
 60          _hSL_topPt->fill(t1Pt);
 61          _hSL_topPt->fill(t2Pt);
 62          _hSL_topPtTtbarSys->fill(t1P4AtCM.pT());
 63          _hSL_topY->fill(t1P4.rapidity());
 64          _hSL_topY->fill(t2P4.rapidity());
 65          _hSL_ttbarDelPhi->fill(dPhi);
 66          _hSL_topPtLead->fill(std::max(t1Pt, t2Pt));
 67          _hSL_topPtSubLead->fill(std::min(t1Pt, t2Pt));
 68          _hSL_ttbarPt->fill(ttbarP4.pT());
 69          _hSL_ttbarY->fill(ttbarP4.rapidity());
 70          _hSL_ttbarMass->fill(ttbarP4.mass());
 71        } else { // if (isDilepton) {
 72          _hDL_topPt->fill(t1Pt);
 73          _hDL_topPt->fill(t2Pt);
 74          _hDL_topPtTtbarSys->fill(t1P4AtCM.pT());
 75          _hDL_topY->fill(t1P4.rapidity());
 76          _hDL_topY->fill(t2P4.rapidity());
 77          _hDL_ttbarDelPhi->fill(dPhi);
 78          _hDL_topPtLead->fill(std::max(t1Pt, t2Pt));
 79          _hDL_topPtSubLead->fill(std::min(t1Pt, t2Pt));
 80          _hDL_ttbarPt->fill(ttbarP4.pT());
 81          _hDL_ttbarY->fill(ttbarP4.rapidity());
 82          _hDL_ttbarMass->fill(ttbarP4.mass());
 83        }
 84      }
 85
 86
 87      void finalize() {
 88        normalize(_hSL_topPt); normalize(_hSL_topPtTtbarSys); normalize(_hSL_topY);
 89        normalize(_hSL_ttbarDelPhi); normalize(_hSL_topPtLead); normalize(_hSL_topPtSubLead);
 90        normalize(_hSL_ttbarPt); normalize(_hSL_ttbarY); normalize(_hSL_ttbarMass);
 91        normalize(_hDL_topPt); normalize(_hDL_topPtTtbarSys); normalize(_hDL_topY);
 92        normalize(_hDL_ttbarDelPhi); normalize(_hDL_topPtLead); normalize(_hDL_topPtSubLead);
 93        normalize(_hDL_ttbarPt); normalize(_hDL_ttbarY); normalize(_hDL_ttbarMass);
 94      }
 95
 96
 97  private:
 98
 99    /// @name Histograms
100    /// @{
101    Histo1DPtr _hSL_topPt, _hSL_topPtTtbarSys, _hSL_topY, _hSL_ttbarDelPhi, _hSL_topPtLead,
102      _hSL_topPtSubLead, _hSL_ttbarPt, _hSL_ttbarY, _hSL_ttbarMass;
103    Histo1DPtr _hDL_topPt, _hDL_topPtTtbarSys, _hDL_topY, _hDL_ttbarDelPhi, _hDL_topPtLead,
104      _hDL_topPtSubLead, _hDL_ttbarPt, _hDL_ttbarY, _hDL_ttbarMass;
105    /// @}
106
107  };
108
109
110  RIVET_DECLARE_PLUGIN(CMS_2015_I1370682_PARTON);
111
112}