rivet is hosted by Hepforge, IPPP Durham
MC_HJETS.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 higgs [-> tau tau] + jets events
00010   class MC_HJETS : public MC_JetAnalysis {
00011   public:
00012 
00013     /// Default constructor
00014     MC_HJETS()
00015       : MC_JetAnalysis("MC_HJETS", 4, "Jets")
00016     {    }
00017 
00018 
00019     /// @name Analysis methods
00020     //@{
00021 
00022     /// Book histograms
00023     void init() {
00024       /// @todo Urk, abuse! Need explicit HiggsFinder (and TauFinder?)
00025       ZFinder hfinder(FinalState(), -3.5, 3.5, 25*GeV, PID::TAU, 115*GeV, 125*GeV, 0.0, ZFinder::NOCLUSTER);
00026       addProjection(hfinder, "Hfinder");
00027       FastJets jetpro(hfinder.remainingFinalState(), FastJets::ANTIKT, 0.4);
00028       addProjection(jetpro, "Jets");
00029 
00030       _h_H_jet1_deta = bookHisto1D("H_jet1_deta", 50, -5.0, 5.0);
00031       _h_H_jet1_dR = bookHisto1D("H_jet1_dR", 25, 0.5, 7.0);
00032 
00033       MC_JetAnalysis::init();
00034     }
00035 
00036 
00037 
00038     /// Do the analysis
00039     void analyze(const Event & e) {
00040       const ZFinder& hfinder = applyProjection<ZFinder>(e, "Hfinder");
00041       if (hfinder.bosons().size() != 1) vetoEvent;
00042       const double weight = e.weight();
00043 
00044       FourMomentum hmom(hfinder.bosons()[0].momentum());
00045       const Jets& jets = applyProjection<FastJets>(e, "Jets").jetsByPt(m_jetptcut);
00046       if (jets.size() > 0) {
00047         _h_H_jet1_deta->fill(hmom.eta()-jets[0].eta(), weight);
00048         _h_H_jet1_dR->fill(deltaR(hmom, jets[0].momentum()), weight);
00049       }
00050 
00051       MC_JetAnalysis::analyze(e);
00052     }
00053 
00054 
00055     /// Finalize
00056     void finalize() {
00057       normalize(_h_H_jet1_deta, crossSection()/picobarn);
00058       normalize(_h_H_jet1_dR, crossSection()/picobarn);
00059       MC_JetAnalysis::finalize();
00060     }
00061 
00062     //@}
00063 
00064 
00065   private:
00066 
00067     /// @name Histograms
00068     //@{
00069     Histo1DPtr _h_H_jet1_deta;
00070     Histo1DPtr _h_H_jet1_dR;
00071     //@}
00072 
00073   };
00074 
00075 
00076 
00077   // The hook for the plugin system
00078   DECLARE_RIVET_PLUGIN(MC_HJETS);
00079 
00080 }