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