ATLAS_2010_S8919674.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/VetoedFinalState.hh" 00004 #include "Rivet/Projections/FastJets.hh" 00005 #include "Rivet/Projections/WFinder.hh" 00006 00007 namespace Rivet { 00008 00009 using namespace Cuts; 00010 00011 /// W + jets jet multiplicities and pT 00012 class ATLAS_2010_S8919674 : public Analysis { 00013 public: 00014 00015 /// @name Constructors etc. 00016 //@{ 00017 00018 /// Constructor 00019 ATLAS_2010_S8919674() 00020 : Analysis("ATLAS_2010_S8919674") 00021 { } 00022 00023 //@} 00024 00025 00026 public: 00027 00028 /// @name Analysis methods 00029 //@{ 00030 00031 /// Book histograms and initialise projections before the run 00032 void init() { 00033 00034 // Set up projections to find the electron and muon Ws 00035 FinalState fs; 00036 Cut cuts = ( etaIn(-2.47, -1.52) 00037 | etaIn(-1.37, 1.37) 00038 | etaIn( 1.52, 2.47) ) & (pT >= 20.0*GeV); 00039 WFinder wfinder_e(fs, cuts, PID::ELECTRON, 0*GeV, 1000*GeV, 25*GeV); 00040 addProjection(wfinder_e, "W_e"); 00041 WFinder wfinder_mu(fs, etaIn(-2.4,2.4) & (pT >= 20.0*GeV), PID::MUON, 0*GeV, 1000*GeV, 25*GeV); 00042 addProjection(wfinder_mu, "W_mu"); 00043 00044 // Input for the jets: no neutrinos, no muons, and no electron which passed the electron cuts 00045 VetoedFinalState veto; 00046 veto.addVetoOnThisFinalState(wfinder_e); 00047 veto.addVetoOnThisFinalState(wfinder_mu); 00048 veto.addVetoPairId(PID::MUON); 00049 veto.vetoNeutrinos(); 00050 FastJets jets(veto, FastJets::ANTIKT, 0.4); 00051 addProjection(jets, "jets"); 00052 00053 /// Book histograms 00054 _h_el_njet_inclusive = bookHisto1D(1,1,1); 00055 _h_mu_njet_inclusive = bookHisto1D(2,1,1); 00056 _h_el_pT_jet1 = bookHisto1D(5,1,1); 00057 _h_mu_pT_jet1 = bookHisto1D(6,1,1); 00058 _h_el_pT_jet2 = bookHisto1D(7,1,1); 00059 _h_mu_pT_jet2 = bookHisto1D(8,1,1); 00060 } 00061 00062 00063 /// Perform the per-event analysis 00064 void analyze(const Event& event) { 00065 const double weight = event.weight(); 00066 00067 const Jets& jets = applyProjection<FastJets>(event, "jets").jetsByPt(20.0*GeV); 00068 00069 const WFinder& We = applyProjection<WFinder>(event, "W_e"); 00070 if (We.bosons().size() == 1) { 00071 const FourMomentum& p_miss = We.constituentNeutrinos()[0].momentum(); 00072 const FourMomentum& p_lept = We.constituentLeptons()[0].momentum(); 00073 if (p_miss.Et() > 25*GeV && We.mT() > 40*GeV) { 00074 Jets js; 00075 foreach (const Jet& j, jets) { 00076 if (j.abseta() < 2.8 && deltaR(p_lept, j.momentum()) > 0.5) 00077 js.push_back(j); 00078 } 00079 _h_el_njet_inclusive->fill(0, weight); 00080 if (js.size() >= 1) { 00081 _h_el_njet_inclusive->fill(1, weight); 00082 _h_el_pT_jet1->fill(js[0].pT(), weight); 00083 } 00084 if (js.size() >= 2) { 00085 _h_el_njet_inclusive->fill(2, weight); 00086 _h_el_pT_jet2->fill(js[1].pT(), weight); 00087 } 00088 if (js.size() >= 3) { 00089 _h_el_njet_inclusive->fill(3, weight); 00090 } 00091 } 00092 } 00093 00094 const WFinder& Wm = applyProjection<WFinder>(event, "W_mu"); 00095 if (Wm.bosons().size() == 1) { 00096 const FourMomentum& p_miss = Wm.constituentNeutrinos()[0].momentum(); 00097 const FourMomentum& p_lept = Wm.constituentLeptons()[0].momentum(); 00098 if (p_miss.Et() > 25*GeV && Wm.mT() > 40*GeV) { 00099 Jets js; 00100 foreach (const Jet& j, jets) { 00101 if (j.abseta() < 2.8 && deltaR(p_lept, j.momentum()) > 0.5) 00102 js.push_back(j); 00103 } 00104 _h_mu_njet_inclusive->fill(0, weight); 00105 if (js.size() >= 1) { 00106 _h_mu_njet_inclusive->fill(1, weight); 00107 _h_mu_pT_jet1->fill(js[0].pT(), weight); 00108 } 00109 if (js.size() >= 2) { 00110 _h_mu_njet_inclusive->fill(2, weight); 00111 _h_mu_pT_jet2->fill(js[1].pT(), weight); 00112 } 00113 if (js.size() >= 3) { 00114 _h_mu_njet_inclusive->fill(3, weight); 00115 } 00116 if (js.size() >= 4) { 00117 _h_mu_njet_inclusive->fill(4, weight); 00118 } 00119 } 00120 } 00121 00122 } 00123 00124 00125 /// Normalise histograms etc., after the run 00126 void finalize() { 00127 double normfac = crossSection()/sumOfWeights(); 00128 scale(_h_el_njet_inclusive, normfac); 00129 scale(_h_mu_njet_inclusive, normfac); 00130 scale(_h_el_pT_jet1, normfac); 00131 scale(_h_mu_pT_jet1, normfac); 00132 scale(_h_el_pT_jet2, normfac); 00133 scale(_h_mu_pT_jet2, normfac); 00134 } 00135 00136 //@} 00137 00138 00139 private: 00140 00141 /// @name Histograms 00142 //@{ 00143 00144 Histo1DPtr _h_el_njet_inclusive; 00145 Histo1DPtr _h_mu_njet_inclusive; 00146 Histo1DPtr _h_el_pT_jet1; 00147 Histo1DPtr _h_mu_pT_jet1; 00148 Histo1DPtr _h_el_pT_jet2; 00149 Histo1DPtr _h_mu_pT_jet2; 00150 //@} 00151 00152 }; 00153 00154 00155 00156 // The hook for the plugin system 00157 DECLARE_RIVET_PLUGIN(ATLAS_2010_S8919674); 00158 00159 } Generated on Tue Sep 30 2014 19:45:41 for The Rivet MC analysis system by ![]() |