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