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 } Generated on Thu Feb 6 2014 17:38:44 for The Rivet MC analysis system by 1.7.6.1 |