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       FinalState fs;
00025       ZFinder zeefinder(fs, -3.5, 3.5, 25.0*GeV, PID::ELECTRON, 65.0*GeV, 115.0*GeV, 0.2, true, true);
00026       addProjection(zeefinder, "ZeeFinder");
00027 
00028       VetoedFinalState zmminput;
00029       zmminput.addVetoOnThisFinalState(zeefinder);
00030       ZFinder zmmfinder(zmminput, -3.5, 3.5, 25.0*GeV, PID::MUON, 65.0*GeV, 115.0*GeV, 0.2, true, true);
00031       addProjection(zmmfinder, "ZmmFinder");
00032 
00033       VetoedFinalState jetinput;
00034       jetinput
00035           .addVetoOnThisFinalState(zeefinder)
00036           .addVetoOnThisFinalState(zmmfinder);
00037       FastJets jetpro(jetinput, FastJets::KT, 0.6);
00038       addProjection(jetpro, "Jets");
00039 
00040       MC_JetSplittings::init();
00041     }
00042 
00043 
00044     /// Do the analysis
00045     void analyze(const Event & e) {
00046       const ZFinder& zeefinder = applyProjection<ZFinder>(e, "ZeeFinder");
00047       if (zeefinder.bosons().size()!=1) {
00048         vetoEvent;
00049       }
00050 
00051       const ZFinder& zmmfinder = applyProjection<ZFinder>(e, "ZmmFinder");
00052       if (zmmfinder.bosons().size()!=1) {
00053         vetoEvent;
00054       }
00055 
00056       MC_JetSplittings::analyze(e);
00057     }
00058 
00059 
00060     /// Finalize
00061     void finalize() {
00062       MC_JetSplittings::finalize();
00063     }
00064 
00065     //@}
00066 
00067   };
00068 
00069 
00070 
00071   // The hook for the plugin system
00072   DECLARE_RIVET_PLUGIN(MC_ZZKTSPLITTINGS);
00073 
00074 }