rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

MC_ZZKTSPLITTINGS

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

Monte Carlo validation observables for $Z[e^+ \, e^-]Z[\mu^+ \, \mu^-]$ + jets production

Source code: MC_ZZKTSPLITTINGS.cc
 1// -*- C++ -*-
 2#include "Rivet/Analyses/MC_KTSPLITTINGS_BASE.hh"
 3#include "Rivet/Projections/DileptonFinder.hh"
 4#include "Rivet/Projections/FastJets.hh"
 5#include "Rivet/Projections/VetoedFinalState.hh"
 6
 7namespace Rivet {
 8
 9
10  /// @brief MC validation analysis for Z[ee]Z[mumu] + jets events
11  class MC_ZZKTSPLITTINGS : public MC_KTSPLITTINGS_BASE {
12  public:
13
14    /// Default constructor
15    MC_ZZKTSPLITTINGS()
16      : MC_KTSPLITTINGS_BASE("MC_ZZKTSPLITTINGS", 4, "Jets")
17    {    }
18
19
20    /// @name Analysis methods
21    /// @{
22
23    /// Book histograms
24    void init() {
25
26      // set FS cuts from input options
27      const double etaecut = getOption<double>("ABSETAEMAX", 3.5);
28      const double ptecut = getOption<double>("PTEMIN", 25.);
29      Cut cute = Cuts::abseta < etaecut && Cuts::pT > ptecut*GeV;
30      DileptonFinder zeefinder(91.2*GeV, 0.2, cute &&
31                               Cuts::abspid == PID::ELECTRON, Cuts::massIn(65*GeV, 115*GeV));
32      declare(zeefinder, "ZeeFinder");
33
34      VetoedFinalState zmminput;
35      zmminput.vetoFinalState(zeefinder);
36
37      // set FS cuts from input options
38      const double etamucut = getOption<double>("ABSETAMUMAX", 3.5);
39      const double ptmucut = getOption<double>("PTMUMIN", 25.);
40      Cut cutmu = Cuts::abseta < etamucut && Cuts::pT > ptmucut*GeV;
41      DileptonFinder zmmfinder(PromptFinalState(zmminput), 91.2*GeV, 0.2, cutmu &&
42                               Cuts::abspid == PID::MUON, Cuts::massIn(65*GeV, 115*GeV));
43      declare(zmmfinder, "ZmmFinder");
44
45      VetoedFinalState jetinput;
46      jetinput
47          .addVetoOnThisFinalState(zeefinder)
48          .addVetoOnThisFinalState(zmmfinder);
49
50      // set clustering radius from input option
51      const double R = getOption<double>("R", 0.6);
52
53      FastJets jetpro(jetinput, JetAlg::KT, R);
54      declare(jetpro, "Jets");
55
56      MC_KTSPLITTINGS_BASE::init();
57    }
58
59
60    /// Do the analysis
61    void analyze(const Event & e) {
62      const DileptonFinder& zeefinder = apply<DileptonFinder>(e, "ZeeFinder");
63      if (zeefinder.bosons().size() != 1) vetoEvent;
64      const DileptonFinder& zmmfinder = apply<DileptonFinder>(e, "ZmmFinder");
65      if (zmmfinder.bosons().size() != 1) vetoEvent;
66      MC_KTSPLITTINGS_BASE::analyze(e);
67    }
68
69
70    /// Finalize
71    void finalize() {
72      MC_KTSPLITTINGS_BASE::finalize();
73    }
74
75    /// @}
76
77  };
78
79
80
81  RIVET_DECLARE_PLUGIN(MC_ZZKTSPLITTINGS);
82
83}