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