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   /// @brief MC validation analysis for Z[ee]Z[mumu] + jets events
00010   class MC_ZZKTSPLITTINGS : public MC_JetSplittings {
00011   public:
00012 
00013     /// Default constructor
00014     MC_ZZKTSPLITTINGS()
00015       : MC_JetSplittings("MC_ZZKTSPLITTINGS", 4, "Jets")
00016     {    }
00017 
00018 
00019     /// @name Analysis methods
00020     //@{
00021 
00022     /// Book histograms
00023     void init() {
00024       Cut cut = EtaIn(-3.5,3.5) & (Cuts::pT >= 25.0*GeV);
00025       ZFinder zeefinder(FinalState(), cut, PID::ELECTRON, 65*GeV, 115*GeV,
00026                         0.2, ZFinder::CLUSTERNODECAY, ZFinder::TRACK);
00027       addProjection(zeefinder, "ZeeFinder");
00028 
00029       VetoedFinalState zmminput;
00030       zmminput.addVetoOnThisFinalState(zeefinder);
00031       ZFinder zmmfinder(zmminput, cut, PID::MUON, 65*GeV, 115*GeV,
00032                         0.2, ZFinder::CLUSTERNODECAY, ZFinder::TRACK);
00033       addProjection(zmmfinder, "ZmmFinder");
00034 
00035       VetoedFinalState jetinput;
00036       jetinput
00037           .addVetoOnThisFinalState(zeefinder)
00038           .addVetoOnThisFinalState(zmmfinder);
00039       FastJets jetpro(jetinput, FastJets::KT, 0.6);
00040       addProjection(jetpro, "Jets");
00041 
00042       MC_JetSplittings::init();
00043     }
00044 
00045 
00046     /// Do the analysis
00047     void analyze(const Event & e) {
00048       const ZFinder& zeefinder = applyProjection<ZFinder>(e, "ZeeFinder");
00049       if (zeefinder.bosons().size() != 1) vetoEvent;
00050       const ZFinder& zmmfinder = applyProjection<ZFinder>(e, "ZmmFinder");
00051       if (zmmfinder.bosons().size() != 1) vetoEvent;
00052       MC_JetSplittings::analyze(e);
00053     }
00054 
00055 
00056     /// Finalize
00057     void finalize() {
00058       MC_JetSplittings::finalize();
00059     }
00060 
00061     //@}
00062 
00063   };
00064 
00065 
00066 
00067   // The hook for the plugin system
00068   DECLARE_RIVET_PLUGIN(MC_ZZKTSPLITTINGS);
00069 
00070 }