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