rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CDF_1996_S3108457

Properties of high-mass multijet events
Experiment: CDF (Tevatron Run 1)
Inspire ID: 393345
Status: VALIDATED
Authors:
  • Frank Siegert
References: Beams: p- p+
Beam energies: (900.0, 900.0) GeV
Run details:
  • Pure QCD events without underlying event (the paper states that UE was corrected for). Several runs with different kinematic cuts might be needed to fill the 2,3,4,5 and 6-jet properly.

Properties of two-, three-, four-, five-, and six-jet events... Multijet-mass, leading jet angle, jet pT.

Source code: CDF_1996_S3108457.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_S3108457 : public Analysis {
 12  public:
 13
 14    /// Constructor
 15    RIVET_DEFAULT_ANALYSIS_CTOR(CDF_1996_S3108457);
 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, FastJets::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<JetAlg>(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_S3108457, CDF_1996_I393345);
104
105}