rivet is hosted by Hepforge, IPPP Durham
CDF_2009_S8383952.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/FinalState.hh"
00006 #include "Rivet/Projections/ZFinder.hh"
00007 
00008 namespace Rivet {
00009 
00010 
00011   /// @brief CDF Z boson rapidity measurement
00012   class CDF_2009_S8383952 : public Analysis {
00013   public:
00014 
00015     /// @name Constructors etc.
00016     //@{
00017 
00018     /// Constructor
00019     CDF_2009_S8383952()
00020       : Analysis("CDF_2009_S8383952")
00021     {    }
00022 
00023     //@}
00024 
00025 
00026   public:
00027 
00028     /// @name Analysis methods
00029     //@{
00030 
00031     /// Book histograms and initialise projections before the run
00032     void init() {
00033 
00034       /// Initialise and register projections here
00035       // this seems to have been corrected completely for all selection cuts,
00036       // i.e. eta cuts and pT cuts on leptons.
00037       FinalState fs;
00038       ZFinder zfinder(fs, -MAXRAPIDITY, MAXRAPIDITY, 0.0*GeV, ELECTRON,
00039                       66.0*GeV, 116.0*GeV, 0.2, true, true);
00040       addProjection(zfinder, "ZFinder");
00041 
00042 
00043       /// Book histograms here
00044       _h_xs = bookHisto1D(1, 1, 1);
00045       _h_yZ = bookHisto1D(2, 1, 1);
00046 
00047     }
00048 
00049 
00050     /// Perform the per-event analysis
00051     void analyze(const Event& event) {
00052       const double weight = event.weight();
00053 
00054       const ZFinder& zfinder = applyProjection<ZFinder>(event, "ZFinder");
00055       if (zfinder.bosons().size() == 1) {
00056         double yZ = fabs(zfinder.bosons()[0].momentum().rapidity());
00057         _h_yZ->fill(yZ, weight);
00058         _h_xs->fill(1960.0, weight);
00059       }
00060       else {
00061         MSG_DEBUG("no unique lepton pair found.");
00062       }
00063 
00064     }
00065 
00066 
00067     /// Normalise histograms etc., after the run
00068     void finalize() {
00069       scale(_h_xs, crossSection()/sumOfWeights());
00070       // Data seems to have been normalized for the avg of the two sides
00071       // (+ve & -ve rapidity) rather than the sum, hence the 0.5:
00072       scale(_h_yZ, 0.5*crossSection()/sumOfWeights());
00073     }
00074 
00075     //@}
00076 
00077 
00078   private:
00079 
00080     /// @name Histograms
00081     //@{
00082     Histo1DPtr _h_yZ;
00083     Histo1DPtr _h_xs;
00084     //@}
00085 
00086   };
00087 
00088 
00089 
00090   // The hook for the plugin system
00091   DECLARE_RIVET_PLUGIN(CDF_2009_S8383952);
00092 
00093 }