ATLAS_2011_I954993.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/ZFinder.hh" 00004 #include "Rivet/Projections/WFinder.hh" 00005 #include "Rivet/Projections/VetoedFinalState.hh" 00006 00007 namespace Rivet { 00008 00009 00010 /// @brief WZ fiducial cross-section measurement 00011 class ATLAS_2011_I954993 : public Analysis { 00012 public: 00013 00014 /// Default constructor 00015 ATLAS_2011_I954993() 00016 : Analysis("ATLAS_2011_I954993") 00017 { 00018 setNeedsCrossSection(true); 00019 } 00020 00021 00022 /// @name Analysis methods 00023 //@{ 00024 00025 /// Projection and histogram setup 00026 void init() { 00027 00028 ZFinder zfinder_e(-2.5, 2.5, 15*GeV, PID::ELECTRON, 81.1876*GeV, 101.1876*GeV, 0.1, ZFinder::CLUSTERNODECAY); 00029 addProjection(zfinder_e, "ZFinder_e"); 00030 ZFinder zfinder_mu(-2.5, 2.5, 15*GeV, PID::MUON, 81.1876*GeV, 101.1876*GeV, 0.1, ZFinder::CLUSTERNODECAY); 00031 addProjection(zfinder_mu, "ZFinder_mu"); 00032 00033 VetoedFinalState weinput; 00034 weinput.addVetoOnThisFinalState(zfinder_e); 00035 WFinder wfinder_e(weinput, -2.5, 2.5, 15*GeV, PID::ELECTRON, 0*GeV, 1000*GeV, 25*GeV, 0.1, WFinder::CLUSTERNODECAY); 00036 addProjection(wfinder_e, "WFinder_e"); 00037 00038 VetoedFinalState wminput; 00039 wminput.addVetoOnThisFinalState(zfinder_mu); 00040 WFinder wfinder_mu(wminput,-2.5, 2.5, 15*GeV, PID::MUON, 0*GeV, 1000*GeV, 25*GeV, 0.1, WFinder::CLUSTERNODECAY); 00041 addProjection(wfinder_mu, "WFinder_mu"); 00042 00043 // Histograms 00044 _h_fiducial = bookHisto1D(1,1,1); 00045 } 00046 00047 00048 /// Do the analysis 00049 void analyze(const Event& e) { 00050 const ZFinder& zfinder_e = applyProjection<ZFinder>(e, "ZFinder_e"); 00051 const ZFinder& zfinder_mu = applyProjection<ZFinder>(e, "ZFinder_mu"); 00052 const WFinder& wfinder_e = applyProjection<WFinder>(e, "WFinder_e"); 00053 const WFinder& wfinder_mu = applyProjection<WFinder>(e, "WFinder_mu"); 00054 00055 // Looking for a Z, exit if not found 00056 if (zfinder_e.bosons().size() != 1 && zfinder_mu.bosons().size() != 1) { 00057 MSG_DEBUG("No Z boson found, vetoing event"); 00058 vetoEvent; 00059 } 00060 00061 // Looking for a W, exit if not found 00062 if (wfinder_e.bosons().size()!= 1 && wfinder_mu.bosons().size() != 1) { 00063 MSG_DEBUG("No W boson found, vetoing event"); 00064 vetoEvent; 00065 } 00066 00067 // If we find a W, make fiducial acceptance cuts and exit if not found 00068 if (wfinder_e.bosons().size() == 1) { 00069 const FourMomentum& We = wfinder_e.constituentLeptons()[0].momentum(); 00070 const FourMomentum& Wenu = wfinder_e.constituentNeutrinos()[0].momentum(); 00071 const double mT = wfinder_e.mT(); 00072 if (Wenu.pT() < 25*GeV || We.pT() < 20*GeV || mT < 20*GeV) { 00073 MSG_DEBUG("Wnu pT = " << Wenu.pT()/GeV << " GeV, Wl pT = " << We.pT()/GeV << " GeV, mT = " << mT/GeV << " GeV"); 00074 vetoEvent; 00075 } 00076 } else if (wfinder_mu.bosons().size() == 1) { 00077 const FourMomentum& Wmu = wfinder_mu.constituentLeptons()[0].momentum(); 00078 const FourMomentum& Wmunu = wfinder_mu.constituentNeutrinos()[0].momentum(); 00079 const double mT = wfinder_mu.mT(); 00080 if (Wmunu.pT() < 25*GeV || Wmu.pT() < 20*GeV || mT < 20*GeV) { 00081 MSG_DEBUG("Wnu pT = " << Wmunu.pT()/GeV << ", Wl pT = " << Wmu.pT()/GeV << " GeV, mT = " << mT/GeV << " GeV"); 00082 vetoEvent; 00083 } 00084 } else { 00085 MSG_DEBUG("No W boson found: vetoing event"); 00086 vetoEvent; 00087 } 00088 00089 // Update the fiducial cross-section histogram 00090 _h_fiducial->fill(7000, e.weight()); 00091 } 00092 00093 00094 /// Finalize 00095 void finalize() { 00096 normalize(_h_fiducial, crossSection()/femtobarn); 00097 } 00098 00099 //@} 00100 00101 00102 private: 00103 00104 /// @name Histograms 00105 //@{ 00106 Histo1DPtr _h_fiducial; 00107 //@} 00108 00109 }; 00110 00111 00112 //// The hook for the plugin system 00113 DECLARE_RIVET_PLUGIN(ATLAS_2011_I954993); 00114 00115 } Generated on Tue May 13 2014 11:38:25 for The Rivet MC analysis system by ![]() |