ATLAS_2011_I925932.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 // ATLAS W pT analysis 00003 00004 #include "Rivet/Analysis.hh" 00005 #include "Rivet/RivetYODA.hh" 00006 #include "Rivet/Tools/Logging.hh" 00007 #include "Rivet/Projections/WFinder.hh" 00008 00009 namespace Rivet { 00010 00011 00012 namespace { 00013 inline double calcMT(const FourMomentum& a, const FourMomentum& b) { 00014 return sqrt(2.0 * a.pT() * b.pT() * (1.0 - cos(a.phi() - b.phi())) ); 00015 } 00016 } 00017 00018 00019 class ATLAS_2011_I925932 : public Analysis { 00020 public: 00021 00022 /// Constructor 00023 ATLAS_2011_I925932() : Analysis("ATLAS_2011_I925932") { } 00024 00025 00026 /// @name Analysis methods 00027 //@{ 00028 00029 void init() { 00030 // Set up projections 00031 FinalState fs; 00032 WFinder wfinder_dressed_el(fs, -2.4, 2.4, 20.0*GeV, ELECTRON, 0.0*GeV, 1000.0*GeV, 25.0*GeV, 0.2,true,false); 00033 addProjection(wfinder_dressed_el, "WFinder_dressed_el"); 00034 WFinder wfinder_bare_el(fs, -2.4, 2.4, 20.0*GeV, ELECTRON, 0.0*GeV, 1000.0*GeV, 25.0*GeV, 0.0,true,false); 00035 addProjection(wfinder_bare_el, "WFinder_bare_el"); 00036 WFinder wfinder_dressed_mu(fs, -2.4, 2.4, 20.0*GeV, MUON, 0.0*GeV, 1000.0*GeV, 25.0*GeV, 0.2,true,false); 00037 addProjection(wfinder_dressed_mu, "WFinder_dressed_mu"); 00038 WFinder wfinder_bare_mu(fs, -2.4, 2.4, 20.0*GeV, MUON, 0.0*GeV, 1000.0*GeV, 25.0*GeV, 0.0,true,false); 00039 addProjection(wfinder_bare_mu, "WFinder_bare_mu"); 00040 00041 // Book histograms 00042 _hist_wpt_dressed_el = bookHisto1D(1, 1, 1); 00043 _hist_wpt_bare_el = bookHisto1D(1, 1, 2); 00044 _hist_wpt_dressed_mu = bookHisto1D(2, 1, 1); 00045 _hist_wpt_bare_mu = bookHisto1D(2, 1, 2); 00046 } 00047 00048 00049 /// Do the analysis 00050 void analyze(const Event& event) { 00051 00052 const WFinder& wfinder_dressed_el = applyProjection<WFinder>(event, "WFinder_dressed_el"); 00053 const WFinder& wfinder_bare_el = applyProjection<WFinder>(event, "WFinder_bare_el"); 00054 const WFinder& wfinder_dressed_mu = applyProjection<WFinder>(event, "WFinder_dressed_mu"); 00055 const WFinder& wfinder_bare_mu = applyProjection<WFinder>(event, "WFinder_bare_mu"); 00056 00057 if (wfinder_dressed_el.particles().empty() && wfinder_bare_el.particles().empty() && 00058 wfinder_dressed_mu.particles().empty() && wfinder_bare_mu.particles().empty()) { 00059 MSG_DEBUG("No W bosons found"); 00060 vetoEvent; 00061 } 00062 00063 // "Dressed" electron 00064 if (!wfinder_dressed_el.particles().empty()) { 00065 const FourMomentum el = wfinder_dressed_el.constituentLeptons()[0].momentum(); 00066 const FourMomentum nu = wfinder_dressed_el.constituentNeutrinos()[0].momentum(); 00067 if (calcMT(el, nu) > 40.0*GeV && nu.pT() > 25.0*GeV) { 00068 _hist_wpt_dressed_el->fill(wfinder_dressed_el.bosons()[0].momentum().pT()/GeV, event.weight()); 00069 } 00070 } 00071 00072 // "Bare" electron 00073 if (!wfinder_bare_el.particles().empty()) { 00074 const FourMomentum el = wfinder_bare_el.constituentLeptons()[0].momentum(); 00075 const FourMomentum nu = wfinder_bare_el.constituentNeutrinos()[0].momentum(); 00076 if (calcMT(el, nu) > 40.0*GeV && nu.pT() > 25.0*GeV) { 00077 _hist_wpt_bare_el->fill(wfinder_bare_el.bosons()[0].momentum().pT()/GeV, event.weight()); 00078 } 00079 } 00080 00081 // "Dressed" muon 00082 if (!wfinder_dressed_mu.particles().empty()) { 00083 const FourMomentum mu = wfinder_dressed_mu.constituentLeptons()[0].momentum(); 00084 const FourMomentum nu = wfinder_dressed_mu.constituentNeutrinos()[0].momentum(); 00085 if (calcMT(mu, nu) > 40.0*GeV && nu.pT() > 25.0*GeV) { 00086 _hist_wpt_dressed_mu->fill(wfinder_dressed_mu.bosons()[0].momentum().pT()/GeV, event.weight()); 00087 } 00088 } 00089 00090 // "Bare" muon 00091 if (!wfinder_bare_mu.particles().empty()) { 00092 const FourMomentum mu = wfinder_bare_mu.constituentLeptons()[0].momentum(); 00093 const FourMomentum nu = wfinder_bare_mu.constituentNeutrinos()[0].momentum(); 00094 if (calcMT(mu, nu) > 40.0*GeV && nu.pT() > 25.0*GeV) { 00095 _hist_wpt_bare_mu->fill(wfinder_bare_mu.bosons()[0].momentum().pT()/GeV, event.weight()); 00096 } 00097 } 00098 00099 } 00100 00101 00102 // Normalize histos 00103 void finalize() { 00104 normalize(_hist_wpt_dressed_el); 00105 normalize(_hist_wpt_bare_el); 00106 normalize(_hist_wpt_dressed_mu); 00107 normalize(_hist_wpt_bare_mu); 00108 } 00109 00110 //@} 00111 00112 00113 private: 00114 00115 Histo1DPtr _hist_wpt_dressed_el; 00116 Histo1DPtr _hist_wpt_bare_el; 00117 Histo1DPtr _hist_wpt_dressed_mu; 00118 Histo1DPtr _hist_wpt_bare_mu; 00119 00120 }; 00121 00122 00123 // Hook for the plugin system 00124 DECLARE_RIVET_PLUGIN(ATLAS_2011_I925932); 00125 00126 } Generated on Fri Dec 21 2012 15:03:38 for The Rivet MC analysis system by ![]() |