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 } Generated on Fri Dec 21 2012 15:03:40 for The Rivet MC analysis system by ![]() |