rivet is hosted by Hepforge, IPPP Durham
MC_ZZKTSPLITTINGS.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analyses/MC_JetSplittings.hh"
00003 #include "Rivet/Projections/ZFinder.hh"
00004 #include "Rivet/Projections/FastJets.hh"
00005 #include "Rivet/Projections/VetoedFinalState.hh"
00006 
00007 namespace Rivet {
00008 
00009 
00010   /// @brief MC validation analysis for Z[ee]Z[mumu] + jets events
00011   class MC_ZZKTSPLITTINGS : public MC_JetSplittings {
00012   public:
00013 
00014     /// Default constructor
00015     MC_ZZKTSPLITTINGS()
00016       : MC_JetSplittings("MC_ZZKTSPLITTINGS", 4, "Jets")
00017     {    }
00018 
00019 
00020     /// @name Analysis methods
00021     //@{
00022 
00023     /// Book histograms
00024     void init() {
00025       Cut cut = Cuts::abseta < 3.5 && Cuts::pT > 25*GeV;
00026       ZFinder zeefinder(FinalState(), cut, PID::ELECTRON, 65*GeV, 115*GeV,
00027                         0.2, ZFinder::CLUSTERNODECAY, ZFinder::TRACK);
00028       addProjection(zeefinder, "ZeeFinder");
00029 
00030       VetoedFinalState zmminput;
00031       zmminput.addVetoOnThisFinalState(zeefinder);
00032       ZFinder zmmfinder(zmminput, cut, PID::MUON, 65*GeV, 115*GeV,
00033                         0.2, ZFinder::CLUSTERNODECAY, ZFinder::TRACK);
00034       addProjection(zmmfinder, "ZmmFinder");
00035 
00036       VetoedFinalState jetinput;
00037       jetinput
00038           .addVetoOnThisFinalState(zeefinder)
00039           .addVetoOnThisFinalState(zmmfinder);
00040       FastJets jetpro(jetinput, FastJets::KT, 0.6);
00041       addProjection(jetpro, "Jets");
00042 
00043       MC_JetSplittings::init();
00044     }
00045 
00046 
00047     /// Do the analysis
00048     void analyze(const Event & e) {
00049       const ZFinder& zeefinder = applyProjection<ZFinder>(e, "ZeeFinder");
00050       if (zeefinder.bosons().size() != 1) vetoEvent;
00051       const ZFinder& zmmfinder = applyProjection<ZFinder>(e, "ZmmFinder");
00052       if (zmmfinder.bosons().size() != 1) vetoEvent;
00053       MC_JetSplittings::analyze(e);
00054     }
00055 
00056 
00057     /// Finalize
00058     void finalize() {
00059       MC_JetSplittings::finalize();
00060     }
00061 
00062     //@}
00063 
00064   };
00065 
00066 
00067 
00068   // The hook for the plugin system
00069   DECLARE_RIVET_PLUGIN(MC_ZZKTSPLITTINGS);
00070 
00071 }