rivet is hosted by Hepforge, IPPP Durham
ATLAS_2011_S9131140.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/RivetYODA.hh"
00004 #include "Rivet/Tools/Logging.hh"
00005 #include "Rivet/Projections/ZFinder.hh"
00006 #include "Rivet/Particle.fhh"
00007 
00008 namespace Rivet {
00009 
00010 
00011   /// @brief ATLAS Z pT in Drell-Yan events at 7 TeV
00012   /// @author Elena Yatsenko, Judith Katzy
00013   class ATLAS_2011_S9131140 : public Analysis {
00014   public:
00015 
00016     /// Constructor
00017     ATLAS_2011_S9131140()
00018       : Analysis("ATLAS_2011_S9131140")
00019     {
00020       _sumw_el_bare = 0;
00021       _sumw_el_dressed = 0;
00022       _sumw_mu_bare = 0;
00023       _sumw_mu_dressed = 0;
00024     }
00025 
00026 
00027     /// @name Analysis methods
00028     //@{
00029 
00030     void init() {
00031 
00032       // Set up projections
00033       FinalState fs;
00034       ZFinder zfinder_dressed_el(fs, -2.4, 2.4, 20, ELECTRON, 66.0*GeV, 116.0*GeV, 0.1, true, false);
00035       addProjection(zfinder_dressed_el, "ZFinder_dressed_el");
00036       ZFinder zfinder_bare_el(fs, -2.4, 2.4, 20, ELECTRON, 66.0*GeV, 116.0*GeV, 0.0, true, false);
00037       addProjection(zfinder_bare_el, "ZFinder_bare_el");
00038       ZFinder zfinder_dressed_mu(fs, -2.4, 2.4, 20, MUON, 66.0*GeV, 116.0*GeV, 0.1, true, false);
00039       addProjection(zfinder_dressed_mu, "ZFinder_dressed_mu");
00040       ZFinder zfinder_bare_mu(fs, -2.4, 2.4, 20, MUON, 66.0*GeV, 116.0*GeV, 0.0, true, false);
00041       addProjection(zfinder_bare_mu, "ZFinder_bare_mu");
00042 
00043       // Book histograms
00044       _hist_zpt_el_dressed     = bookHisto1D(1, 1, 2);  // electron "dressed"
00045       _hist_zpt_el_bare        = bookHisto1D(1, 1, 3);  // electron "bare"
00046       _hist_zpt_mu_dressed     = bookHisto1D(2, 1, 2);  // muon "dressed"
00047       _hist_zpt_mu_bare        = bookHisto1D(2, 1, 3);  // muon "bare"
00048     }
00049 
00050 
00051     /// Do the analysis
00052     void analyze(const Event& evt) {
00053       const double weight = evt.weight();
00054 
00055       const ZFinder& zfinder_dressed_el = applyProjection<ZFinder>(evt, "ZFinder_dressed_el");
00056       if (!zfinder_dressed_el.bosons().empty()) {
00057         _sumw_el_dressed += weight;
00058         const FourMomentum pZ = zfinder_dressed_el.bosons()[0].momentum();
00059         _hist_zpt_el_dressed->fill(pZ.pT()/GeV, weight);
00060       }
00061 
00062       const ZFinder& zfinder_bare_el = applyProjection<ZFinder>(evt, "ZFinder_bare_el");
00063       if (!zfinder_bare_el.bosons().empty()) {
00064         _sumw_el_bare += weight;
00065         const FourMomentum pZ = zfinder_bare_el.bosons()[0].momentum();
00066         _hist_zpt_el_bare->fill(pZ.pT()/GeV, weight);
00067       }
00068 
00069       const ZFinder& zfinder_dressed_mu = applyProjection<ZFinder>(evt, "ZFinder_dressed_mu");
00070       if (!zfinder_dressed_mu.bosons().empty()) {
00071         _sumw_mu_dressed += weight;
00072         const FourMomentum pZ = zfinder_dressed_mu.bosons()[0].momentum();
00073         _hist_zpt_mu_dressed->fill(pZ.pT()/GeV, weight);
00074       }
00075 
00076       const ZFinder& zfinder_bare_mu = applyProjection<ZFinder>(evt, "ZFinder_bare_mu");
00077       if (!zfinder_bare_mu.bosons().empty()) {
00078         _sumw_mu_bare += weight;
00079         const FourMomentum pZ = zfinder_bare_mu.bosons()[0].momentum();
00080         _hist_zpt_mu_bare->fill(pZ.pT()/GeV, weight);
00081       }
00082 
00083     }
00084 
00085 
00086     void finalize() {
00087       scale(_hist_zpt_el_dressed, 1/_sumw_el_dressed);
00088       scale(_hist_zpt_el_bare, 1/_sumw_el_bare);
00089       scale(_hist_zpt_mu_dressed, 1/_sumw_mu_dressed);
00090       scale(_hist_zpt_mu_bare, 1/_sumw_mu_bare);
00091     }
00092 
00093     //@}
00094 
00095 
00096     private:
00097 
00098     double _sumw_el_bare, _sumw_el_dressed;
00099     double _sumw_mu_bare, _sumw_mu_dressed;
00100 
00101     Histo1DPtr _hist_zpt_el_dressed;
00102     Histo1DPtr _hist_zpt_el_bare;
00103     Histo1DPtr _hist_zpt_mu_dressed;
00104     Histo1DPtr _hist_zpt_mu_bare;
00105   };
00106 
00107 
00108   // Hook for the plugin system
00109   DECLARE_RIVET_PLUGIN(ATLAS_2011_S9131140);
00110 
00111 }