Rivet analyses referenceCDF_1996_I393345Properties of high-mass multijet eventsExperiment: CDF (Tevatron Run 1) Inspire ID: 393345 Status: VALIDATED Authors:
Beam energies: (900.0, 900.0) GeV Run details:
Properties of two-, three-, four-, five-, and six-jet events... Multijet-mass, leading jet angle, jet pT. Source code: CDF_1996_I393345.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5#include "Rivet/Projections/SmearedJets.hh"
6
7namespace Rivet {
8
9
10 /// @brief CDF properties of high-mass multi-jet events
11 class CDF_1996_I393345 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(CDF_1996_I393345);
16
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23
24 /// Initialise and register projections here
25 const FinalState fs(Cuts::abseta < 4.2);
26 FastJets fj(fs, JetAlg::CDFJETCLU, 0.7);
27
28 // Smear energy and mass with the 10% uncertainty quoted in the paper
29 SmearedJets sj_E(fj, [](const Jet& jet){ return P4_SMEAR_MASS_GAUSS(P4_SMEAR_E_GAUSS(jet, 0.1*jet.E()), 0.1*jet.mass()); });
30 declare(sj_E, "SmearedJets_E");
31
32
33 /// Book histograms here, e.g.:
34 for (size_t i=0; i<5; ++i) {
35 book(_h_m[i], 1+i, 1, 1);
36 book(_h_costheta[i], 10+i, 1, 1);
37 book(_h_pT[i], 15+i, 1, 1);
38 }
39 /// @todo Ratios of mass histograms left out: Binning doesn't work out
40 }
41
42
43 /// Perform the per-event analysis
44 void analyze(const Event& event) {
45 // Get the smeared jets
46 const Jets SJets = apply<JetFinder>(event, "SmearedJets_E").jets(Cuts::Et > 20.0*GeV, cmpMomByEt);
47 if (SJets.size() < 2 || SJets.size() > 6) vetoEvent;
48
49 // Calculate Et, total jet 4 Momentum
50 double sumEt(0), sumE(0);
51 FourMomentum JS(0,0,0,0);
52
53 for (const Jet& jet : SJets) {
54 sumEt += jet.Et()/GeV;
55 sumE += jet.E()/GeV;
56 JS+=jet.momentum();
57 }
58
59 if (sumEt < 420. || sumE > 2000.) vetoEvent;
60
61 double mass = JS.mass()/GeV;
62
63 LorentzTransform cms_boost = LorentzTransform::mkFrameTransformFromBeta(JS.betaVec());
64 FourMomentum jet0boosted(cms_boost.transform(SJets[0].momentum()));
65 double costheta0 = fabs(cos(jet0boosted.theta()));
66
67 if (costheta0 < 2.0/3.0) _h_m[SJets.size()-2]->fill(mass);
68 if (mass > 600.) _h_costheta[SJets.size()-2]->fill(costheta0);
69 if (costheta0 < 2.0/3.0 && mass > 600.) {
70 for (const Jet& jet : SJets) _h_pT[SJets.size()-2]->fill(jet.pT());
71 }
72 }
73
74
75 /// Normalise histograms etc., after the run
76 void finalize() {
77
78 /// Normalise, scale and otherwise manipulate histograms here
79 for (size_t i=0; i<5; ++i) {
80 normalize(_h_m[i], 40.0);
81 normalize(_h_costheta[i], 2.0);
82 normalize(_h_pT[i], 20.0);
83 }
84
85 }
86
87 /// @}
88
89
90 private:
91
92 /// @name Histograms
93 /// @{
94 Histo1DPtr _h_m[5];
95 Histo1DPtr _h_costheta[5];
96 Histo1DPtr _h_pT[5];
97 /// @}
98
99 };
100
101
102
103 RIVET_DECLARE_ALIASED_PLUGIN(CDF_1996_I393345, CDF_1996_S3108457);
104
105}
|