rivet is hosted by Hepforge, IPPP Durham
D0_2011_I895662.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/RivetYODA.hh"
00004 #include "Rivet/Tools/Logging.hh"
00005 #include "Rivet/Projections/FinalState.hh"
00006 #include "Rivet/Projections/FastJets.hh"
00007 
00008 namespace Rivet {
00009 
00010 
00011   class D0_2011_I895662 : public Analysis {
00012   public:
00013 
00014     D0_2011_I895662()
00015       : Analysis("D0_2011_I895662")
00016     {    }
00017 
00018 
00019   public:
00020 
00021     void init() {
00022       FastJets jets(FinalState(-3.6, 3.6, 0.*GeV), FastJets::D0ILCONE, 0.7);
00023       jets.useInvisibles();
00024       addProjection(jets, "Jets");
00025 
00026       _h_m3j_08_40  = bookHisto1D(1, 1, 1);
00027       _h_m3j_16_40  = bookHisto1D(2, 1, 1);
00028       _h_m3j_24_40  = bookHisto1D(3, 1, 1);
00029       _h_m3j_24_70  = bookHisto1D(4, 1, 1);
00030       _h_m3j_24_100 = bookHisto1D(5, 1, 1);
00031     }
00032 
00033 
00034     void analyze(const Event& event) {
00035       const double weight = event.weight();
00036 
00037       Jets jets = applyProjection<FastJets>(event, "Jets").jetsByPt(40.*GeV);
00038 
00039       // Need three jets, leading jet above 150 GeV
00040       if (jets.size() < 3 || jets[0].momentum().pT() <= 150.*GeV) vetoEvent;
00041 
00042       std::vector<FourMomentum> p;
00043       for (size_t i=0; i<3; i++) {
00044         p.push_back(jets[i].momentum());
00045       }
00046 
00047       // Jets need to be separated by 2*Rcone
00048       if (deltaR(p[0], p[1], RAPIDITY) < 1.4 ||
00049           deltaR(p[0], p[2], RAPIDITY) < 1.4 ||
00050           deltaR(p[1], p[2], RAPIDITY) < 1.4)
00051         vetoEvent;
00052 
00053       // Leading three jets need to be within |y|<2.4
00054       double ymax = fabs(p[0].rapidity());
00055       for (size_t i=1; i<3; i++) {
00056         if (ymax < fabs(p[i].rapidity())) ymax = fabs(p[i].rapidity());
00057       }
00058       if (ymax >= 2.4) vetoEvent;
00059 
00060       double m3jet = (p[0]+p[1]+p[2]).mass()/GeV;
00061 
00062       if (ymax < 0.8) _h_m3j_08_40->fill(m3jet, weight);
00063       if (ymax < 1.6) _h_m3j_16_40->fill(m3jet, weight);
00064       if (ymax < 2.4) {
00065         _h_m3j_24_40->fill(m3jet, weight);
00066         if (p[2].pT() > 70.*GeV)  _h_m3j_24_70->fill(m3jet, weight);
00067         if (p[2].pT() > 100.*GeV) _h_m3j_24_100->fill(m3jet, weight);
00068       }
00069 
00070     }
00071 
00072 
00073     void finalize() {
00074       // Factor of 1000 is based on GeV <-> TeV mismatch between paper and Hepdata table
00075       scale(_h_m3j_08_40,  1000*crossSection()/picobarn/sumOfWeights());
00076       scale(_h_m3j_16_40,  1000*crossSection()/picobarn/sumOfWeights());
00077       scale(_h_m3j_24_40,  1000*crossSection()/picobarn/sumOfWeights());
00078       scale(_h_m3j_24_70,  1000*crossSection()/picobarn/sumOfWeights());
00079       scale(_h_m3j_24_100, 1000*crossSection()/picobarn/sumOfWeights());
00080     }
00081 
00082 
00083   private:
00084 
00085     Histo1DPtr _h_m3j_08_40;
00086     Histo1DPtr _h_m3j_16_40;
00087     Histo1DPtr _h_m3j_24_40;
00088     Histo1DPtr _h_m3j_24_70;
00089     Histo1DPtr _h_m3j_24_100;
00090 
00091   };
00092 
00093 
00094   // The hook for the plugin system
00095   DECLARE_RIVET_PLUGIN(D0_2011_I895662);
00096 
00097 }