rivet is hosted by Hepforge, IPPP Durham
D0_2009_S8320160.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/Tools/Logging.hh"
00004 #include "Rivet/Tools/BinnedHistogram.hh"
00005 #include "Rivet/Projections/FinalState.hh"
00006 #include "Rivet/Projections/ChargedFinalState.hh"
00007 #include "Rivet/Projections/FastJets.hh"
00008 #include "Rivet/RivetYODA.hh"
00009 
00010 namespace Rivet {
00011 
00012 
00013   /// @brief D0 dijet angular distributions
00014   class D0_2009_S8320160 : public Analysis {
00015   public:
00016 
00017     /// @name Construction
00018     //@{
00019 
00020     /// Constructor
00021     D0_2009_S8320160() : Analysis("D0_2009_S8320160")
00022     {
00023     }
00024 
00025     //@}
00026 
00027 
00028     /// @name Analysis methods
00029     //@{
00030 
00031     // Book histograms
00032     void init() {
00033       FinalState fs;
00034       FastJets conefinder(fs, FastJets::D0ILCONE, 0.7);
00035       addProjection(conefinder, "ConeFinder");
00036 
00037       _h_chi_dijet.addHistogram(250., 300., bookHisto1D(1, 1, 1));
00038       _h_chi_dijet.addHistogram(300., 400., bookHisto1D(2, 1, 1));
00039       _h_chi_dijet.addHistogram(400., 500., bookHisto1D(3, 1, 1));
00040       _h_chi_dijet.addHistogram(500., 600., bookHisto1D(4, 1, 1));
00041       _h_chi_dijet.addHistogram(600., 700., bookHisto1D(5, 1, 1));
00042       _h_chi_dijet.addHistogram(700., 800., bookHisto1D(6, 1, 1));
00043       _h_chi_dijet.addHistogram(800., 900., bookHisto1D(7, 1, 1));
00044       _h_chi_dijet.addHistogram(900., 1000., bookHisto1D(8, 1, 1));
00045       _h_chi_dijet.addHistogram(1000., 1100., bookHisto1D(9, 1, 1));
00046       _h_chi_dijet.addHistogram(1100., 1960, bookHisto1D(10, 1, 1));
00047     }
00048 
00049 
00050 
00051     /// Do the analysis
00052     void analyze(const Event & e) {
00053       const double weight = e.weight();
00054 
00055       const Jets& jets = applyProjection<JetAlg>(e, "ConeFinder").jetsByPt();
00056       if (jets.size() < 2) vetoEvent;
00057 
00058       FourMomentum j0(jets[0].momentum());
00059       FourMomentum j1(jets[1].momentum());
00060       double y0 = j0.rapidity();
00061       double y1 = j1.rapidity();
00062 
00063       if (fabs(y0+y1)>2) vetoEvent;
00064 
00065       double mjj = FourMomentum(j0+j1).mass();
00066       double chi = exp(fabs(y0-y1));
00067       _h_chi_dijet.fill(mjj, chi, weight);
00068     }
00069 
00070 
00071 
00072     /// Finalize
00073     void finalize() {
00074       foreach (Histo1DPtr hist, _h_chi_dijet.getHistograms()) {
00075         normalize(hist);
00076       }
00077     }
00078 
00079     //@}
00080 
00081 
00082   private:
00083 
00084     /// @name Histograms
00085     //@{
00086     BinnedHistogram<double> _h_chi_dijet;
00087     //@}
00088 
00089   };
00090 
00091 
00092 
00093   // The hook for the plugin system
00094   DECLARE_RIVET_PLUGIN(D0_2009_S8320160);
00095 
00096 }