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