00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/RivetAIDA.hh" 00004 #include "Rivet/Tools/Logging.hh" 00005 #include "Rivet/Projections/FinalState.hh" 00006 #include "Rivet/Projections/FastJets.hh" 00007 00008 namespace Rivet { 00009 00010 00011 /// @brief CDF dijet mass spectrum 00012 class CDF_2008_S8093652 : public Analysis { 00013 public: 00014 00015 /// Constructor 00016 CDF_2008_S8093652() 00017 : Analysis("CDF_2008_S8093652") 00018 { } 00019 00020 00021 /// @name Analysis methods 00022 //@{ 00023 00024 /// Book histograms 00025 void init() { 00026 FinalState fs; 00027 FastJets conefinder(fs, FastJets::CDFMIDPOINT, 0.7); 00028 addProjection(conefinder, "ConeFinder"); 00029 00030 _h_m_dijet = bookHistogram1D(1, 1, 1); 00031 } 00032 00033 00034 /// Do the analysis 00035 void analyze(const Event & e) { 00036 const double weight = e.weight(); 00037 00038 const JetAlg& jetpro = applyProjection<JetAlg>(e, "ConeFinder"); 00039 const Jets& jets = jetpro.jetsByPt(); 00040 00041 if (jets.size() < 2) vetoEvent; 00042 00043 const FourMomentum j0(jets[0].momentum()); 00044 const FourMomentum j1(jets[1].momentum()); 00045 if (fabs(j1.rapidity()) > 1.0 || fabs(j0.rapidity()) > 1.0) { 00046 vetoEvent; 00047 } 00048 00049 double mjj = FourMomentum(j0+j1).mass(); 00050 _h_m_dijet->fill(mjj, weight); 00051 } 00052 00053 00054 /// Finalize 00055 void finalize() { 00056 scale(_h_m_dijet, crossSection()/sumOfWeights()); 00057 } 00058 //@} 00059 00060 00061 private: 00062 00063 /// @name Histograms 00064 //@{ 00065 AIDA::IHistogram1D* _h_m_dijet; 00066 //@} 00067 00068 }; 00069 00070 00071 00072 // The hook for the plugin system 00073 DECLARE_RIVET_PLUGIN(CDF_2008_S8093652); 00074 00075 }