rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

MC_ZJETS

Monte Carlo ReleaseTests observables for $Z[e^+ \, e^-]$ + jets production
Experiment: ()
Status: VALIDATED
Authors:
  • Frank Siegert
No references listed
Beams: * *
Beam energies: ANY
Run details:
  • $e^+ e^-$ + jets analysis. Needs mass cut on lepton pair to avoid photon singularity, e.g. a min range of $66 < m_{ee} < 116$ GeV

Available observables are the pT of jets 1-4, jet multiplicity, $\Delta\eta(Z, \text{jet1})$, $\Delta R(\text{jet2}, \text{jet3})$, differential jet rates 0->1, 1->2, 2->3, 3->4, and integrated 0--4 jet rates.

Source code: MC_ZJETS.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// -*- C++ -*-
#include "Rivet/Analyses/MC_JetAnalysis.hh"
#include "Rivet/Projections/ZFinder.hh"
#include "Rivet/Projections/FastJets.hh"

namespace Rivet {


  /// @brief MC validation analysis for Z + jets events
  class MC_ZJETS : public MC_JetAnalysis {
  public:

    /// Default constructor
    MC_ZJETS(string name = "MC_ZJETS")
      : MC_JetAnalysis(name, 4, "Jets")
	  {
		  _dR=0.2;
		  _lepton=PID::ELECTRON;
	  }


    /// @name Analysis methods
    //@{

    /// Initialize
    void init() {
      FinalState fs;
      Cut cut = Cuts::abseta < 3.5 && Cuts::pT > 25*GeV;
      ZFinder zfinder(fs, cut, _lepton, 65*GeV, 115*GeV, _dR, ZFinder::ClusterPhotons::NODECAY, ZFinder::AddPhotons::YES);
      declare(zfinder, "ZFinder");
      FastJets jetpro(zfinder.remainingFinalState(), FastJets::ANTIKT, 0.4);
      declare(jetpro, "Jets");

      book(_h_Z_jet1_deta ,"Z_jet1_deta", 50, -5, 5);
      book(_h_Z_jet1_dR ,"Z_jet1_dR", 25, 0.5, 7.0);

      MC_JetAnalysis::init();
    }



    /// Do the analysis
    void analyze(const Event & e) {
      MSG_TRACE("MC_ZJETS: running ZFinder");
      const ZFinder& zfinder = apply<ZFinder>(e, "ZFinder");
      if (zfinder.bosons().size() != 1) vetoEvent;
      const FourMomentum& zmom = zfinder.bosons()[0].momentum();
      MSG_TRACE("MC_ZJETS: have exactly one Z boson candidate");

      const Jets& jets = apply<FastJets>(e, "Jets").jetsByPt(_jetptcut);
      if (jets.size() > 0) {
        MSG_TRACE("MC_ZJETS: have at least one valid jet");
        const double weight = 1.0;
        _h_Z_jet1_deta->fill(zmom.eta()-jets[0].eta(), weight);
        _h_Z_jet1_dR->fill(deltaR(zmom, jets[0].momentum()), weight);
      }

      MC_JetAnalysis::analyze(e);
    }


    /// Finalize
    void finalize() {
      scale(_h_Z_jet1_deta, crossSection()/picobarn/sumOfWeights());
      scale(_h_Z_jet1_dR, crossSection()/picobarn/sumOfWeights());
      MC_JetAnalysis::finalize();
    }

    //@}


  protected:

    /// @name Parameters for specialised e/mu and dressed/bare subclassing
    //@{
    double _dR;
    PdgId _lepton;
    //@}


  private:

    /// @name Histograms
    //@{
    Histo1DPtr _h_Z_jet1_deta;
    Histo1DPtr _h_Z_jet1_dR;
    //@}

  };



  struct MC_ZJETS_EL : public MC_ZJETS {
    MC_ZJETS_EL() : MC_ZJETS("MC_ZJETS_EL") {
      _dR = 0.2;
      _lepton = PID::ELECTRON;
    }
  };

  struct MC_ZJETS_EL_BARE : public MC_ZJETS {
    MC_ZJETS_EL_BARE() : MC_ZJETS("MC_ZJETS_EL_BARE") {
      _dR = 0;
      _lepton = PID::ELECTRON;
    }
  };

  struct MC_ZJETS_MU : public MC_ZJETS {
    MC_ZJETS_MU() : MC_ZJETS("MC_ZJETS_MU") {
      _dR = 0.2;
      _lepton = PID::MUON;
    }
  };

  struct MC_ZJETS_MU_BARE : public MC_ZJETS {
    MC_ZJETS_MU_BARE() : MC_ZJETS("MC_ZJETS_MU_BARE") {
      _dR = 0;
      _lepton = PID::MUON;
    }
  };



  // The hooks for the plugin system
  DECLARE_RIVET_PLUGIN(MC_ZJETS);
  DECLARE_RIVET_PLUGIN(MC_ZJETS_EL);
  DECLARE_RIVET_PLUGIN(MC_ZJETS_EL_BARE);
  DECLARE_RIVET_PLUGIN(MC_ZJETS_MU);
  DECLARE_RIVET_PLUGIN(MC_ZJETS_MU_BARE);

}