rivet is hosted by Hepforge, IPPP Durham
CMS_2011_S8950903.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/Tools/BinnedHistogram.hh"
00004 #include "Rivet/Projections/FinalState.hh"
00005 #include "Rivet/Projections/FastJets.hh"
00006 
00007 namespace Rivet {
00008 
00009   // CMS azimuthal decorrelations
00010   class CMS_2011_S8950903 : public Analysis {
00011   public:
00012 
00013     CMS_2011_S8950903() : Analysis("CMS_2011_S8950903") {}
00014 
00015 
00016     void init() {
00017       FinalState fs;
00018       FastJets akt(fs, FastJets::ANTIKT, 0.5);
00019       addProjection(akt, "antikT");
00020 
00021       _h_deltaPhi.addHistogram( 80.,  110., bookHisto1D(1, 1, 1));
00022       _h_deltaPhi.addHistogram(110.,  140., bookHisto1D(2, 1, 1));
00023       _h_deltaPhi.addHistogram(140.,  200., bookHisto1D(3, 1, 1));
00024       _h_deltaPhi.addHistogram(200.,  300., bookHisto1D(4, 1, 1));
00025       _h_deltaPhi.addHistogram(300., 7000., bookHisto1D(5, 1, 1));
00026     }
00027 
00028 
00029     void analyze(const Event & event) {
00030       const double weight = event.weight();
00031 
00032       const Jets& jets = applyProjection<JetAlg>(event, "antikT").jetsByPt();
00033       if (jets.size() < 2) vetoEvent;
00034 
00035       if (fabs(jets[0].eta()) > 1.1 || jets[0].pT() < 80.) vetoEvent;
00036       if (fabs(jets[1].eta()) > 1.1 || jets[1].pT() < 30.) vetoEvent;
00037 
00038       double dphi = deltaPhi(jets[0].momentum(), jets[1].momentum().phi());
00039 
00040       _h_deltaPhi.fill(jets[0].pT(), dphi, weight);
00041     }
00042 
00043 
00044     void finalize() {
00045       foreach (Histo1DPtr histo, _h_deltaPhi.getHistograms()) {
00046         normalize(histo, 1.);
00047       }
00048     }
00049 
00050   private:
00051 
00052     BinnedHistogram<double> _h_deltaPhi;
00053 
00054   };
00055 
00056   // This global object acts as a hook for the plugin system
00057   DECLARE_RIVET_PLUGIN(CMS_2011_S8950903);
00058 
00059 }
00060