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