MC_ZINC.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/ZFinder.hh" 00004 00005 namespace Rivet { 00006 00007 00008 /// @brief MC validation analysis for Z events 00009 class MC_ZINC : public Analysis { 00010 public: 00011 00012 /// Default constructor 00013 MC_ZINC() 00014 : Analysis("MC_ZINC") 00015 { } 00016 00017 00018 /// @name Analysis methods 00019 //@{ 00020 00021 /// Book histograms 00022 void init() { 00023 FinalState fs; 00024 ZFinder zfinder(fs, -3.5, 3.5, 25.0*GeV, PID::ELECTRON, 65.0*GeV, 115.0*GeV, 0.2, true, true); 00025 addProjection(zfinder, "ZFinder"); 00026 00027 _h_Z_mass = bookHisto1D("Z_mass", 50, 66.0, 116.0); 00028 _h_Z_pT = bookHisto1D("Z_pT", logspace(100, 1.0, 0.5*sqrtS())); 00029 _h_Z_pT_peak = bookHisto1D("Z_pT_peak", 25, 0.0, 25.0); 00030 _h_Z_y = bookHisto1D("Z_y", 40, -4.0, 4.0); 00031 _h_Z_phi = bookHisto1D("Z_phi", 25, 0.0, TWOPI); 00032 _h_lepton_pT = bookHisto1D("lepton_pT", logspace(100, 10.0, 0.25*sqrtS())); 00033 _h_lepton_eta = bookHisto1D("lepton_eta", 40, -4.0, 4.0); 00034 00035 } 00036 00037 00038 00039 /// Do the analysis 00040 void analyze(const Event & e) { 00041 const ZFinder& zfinder = applyProjection<ZFinder>(e, "ZFinder"); 00042 if (zfinder.bosons().size()!=1) { 00043 vetoEvent; 00044 } 00045 const double weight = e.weight(); 00046 00047 FourMomentum zmom(zfinder.bosons()[0].momentum()); 00048 _h_Z_mass->fill(zmom.mass(),weight); 00049 _h_Z_pT->fill(zmom.pT(),weight); 00050 _h_Z_pT_peak->fill(zmom.pT(),weight); 00051 _h_Z_y->fill(zmom.rapidity(),weight); 00052 _h_Z_phi->fill(zmom.azimuthalAngle(),weight); 00053 foreach (const Particle& l, zfinder.constituents()) { 00054 _h_lepton_pT->fill(l.pT(), weight); 00055 _h_lepton_eta->fill(l.eta(), weight); 00056 } 00057 } 00058 00059 00060 /// Finalize 00061 void finalize() { 00062 scale(_h_Z_mass, crossSection()/sumOfWeights()); 00063 scale(_h_Z_pT, crossSection()/sumOfWeights()); 00064 scale(_h_Z_pT_peak, crossSection()/sumOfWeights()); 00065 scale(_h_Z_y, crossSection()/sumOfWeights()); 00066 scale(_h_Z_phi, crossSection()/sumOfWeights()); 00067 scale(_h_lepton_pT, crossSection()/sumOfWeights()); 00068 scale(_h_lepton_eta, crossSection()/sumOfWeights()); 00069 } 00070 00071 //@} 00072 00073 00074 private: 00075 00076 /// @name Histograms 00077 //@{ 00078 Histo1DPtr _h_Z_mass; 00079 Histo1DPtr _h_Z_pT; 00080 Histo1DPtr _h_Z_pT_peak; 00081 Histo1DPtr _h_Z_y; 00082 Histo1DPtr _h_Z_phi; 00083 Histo1DPtr _h_lepton_pT; 00084 Histo1DPtr _h_lepton_eta; 00085 //@} 00086 00087 }; 00088 00089 00090 00091 // The hook for the plugin system 00092 DECLARE_RIVET_PLUGIN(MC_ZINC); 00093 00094 } Generated on Fri Oct 25 2013 12:41:46 for The Rivet MC analysis system by ![]() |