rivet is hosted by Hepforge, IPPP Durham
MC_ZJETS.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analyses/MC_JetAnalysis.hh"
00003 #include "Rivet/Projections/ZFinder.hh"
00004 #include "Rivet/Projections/FastJets.hh"
00005 
00006 namespace Rivet {
00007 
00008 
00009   /// @brief MC validation analysis for Z + jets events
00010   class MC_ZJETS : public MC_JetAnalysis {
00011   public:
00012 
00013     /// Default constructor
00014     MC_ZJETS()
00015       : MC_JetAnalysis("MC_ZJETS", 4, "Jets")
00016     {    }
00017 
00018 
00019     /// @name Analysis methods
00020     //@{
00021 
00022     /// Initialize
00023     void init() {
00024       FinalState fs;
00025       Cut cut = EtaIn(-3.5,3.5) & (Cuts::pT >= 25.0*GeV);
00026       ZFinder zfinder(fs, cut, PID::ELECTRON, 65*GeV, 115*GeV, 0.2, ZFinder::CLUSTERNODECAY, ZFinder::TRACK);
00027       addProjection(zfinder, "ZFinder");
00028       FastJets jetpro(zfinder.remainingFinalState(), FastJets::ANTIKT, 0.4);
00029       addProjection(jetpro, "Jets");
00030 
00031       _h_Z_jet1_deta = bookHisto1D("Z_jet1_deta", 50, -5, 5);
00032       _h_Z_jet1_dR = bookHisto1D("Z_jet1_dR", 25, 0.5, 7.0);
00033 
00034       MC_JetAnalysis::init();
00035     }
00036 
00037 
00038 
00039     /// Do the analysis
00040     void analyze(const Event & e) {
00041       const ZFinder& zfinder = applyProjection<ZFinder>(e, "ZFinder");
00042       if (zfinder.bosons().size() != 1) vetoEvent;
00043       const FourMomentum& zmom = zfinder.bosons()[0].momentum();
00044 
00045       const Jets& jets = applyProjection<FastJets>(e, "Jets").jetsByPt(m_jetptcut);
00046       if (jets.size() > 0) {
00047         const double weight = e.weight();
00048         _h_Z_jet1_deta->fill(zmom.eta()-jets[0].eta(), weight);
00049         _h_Z_jet1_dR->fill(deltaR(zmom, jets[0].momentum()), weight);
00050       }
00051 
00052       MC_JetAnalysis::analyze(e);
00053     }
00054 
00055 
00056     /// Finalize
00057     void finalize() {
00058       normalize(_h_Z_jet1_deta, crossSection()/picobarn);
00059       normalize(_h_Z_jet1_dR, crossSection()/picobarn);
00060       MC_JetAnalysis::finalize();
00061     }
00062 
00063     //@}
00064 
00065 
00066   private:
00067 
00068     /// @name Histograms
00069     //@{
00070     Histo1DPtr _h_Z_jet1_deta;
00071     Histo1DPtr _h_Z_jet1_dR;
00072     //@}
00073 
00074   };
00075 
00076 
00077 
00078   // The hook for the plugin system
00079   DECLARE_RIVET_PLUGIN(MC_ZJETS);
00080 
00081 }