Rivet analyses referenceCMS_2015_I1370682_PARTONParton-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:
Beam energies: (4000.0, 4000.0) GeV Run details:
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}
|