CDF_2000_S4266730.cc

Go to the documentation of this file.
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 cross-section, differential in dijet mass
00012   class CDF_2000_S4266730 : public Analysis {
00013   public:
00014 
00015     /// @name Constructors etc.
00016     //@{
00017 
00018     /// Constructor
00019     CDF_2000_S4266730()
00020       : Analysis("CDF_2000_S4266730")
00021     {
00022       setBeams(PROTON, ANTIPROTON);
00023       setNeedsCrossSection(true);
00024     }
00025 
00026     //@}
00027 
00028 
00029   public:
00030 
00031     /// @name Analysis methods
00032     //@{
00033 
00034     /// Book histograms and initialise projections before the run
00035     void init() {
00036       FinalState fs(-4.2, 4.2);
00037       addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets");
00038 
00039       _h_mjj = bookHistogram1D(1, 1, 1);
00040 
00041     }
00042 
00043 
00044     /// Perform the per-event analysis
00045     void analyze(const Event& event) {
00046       const double weight = event.weight();
00047 
00048       Jets jets = applyProjection<FastJets>(event, "Jets").jetsByEt(0.0*GeV);
00049       if (jets.size()<2) {
00050         vetoEvent;
00051       }
00052       FourMomentum jet1 = jets[0].momentum();
00053       FourMomentum jet2 = jets[1].momentum();
00054       double eta1 = jet1.eta();
00055       double eta2 = jet2.eta();
00056       if (fabs(eta1)>2.0 || fabs(eta2)>2.0) {
00057         vetoEvent;
00058       }
00059       if (fabs(tanh((eta1-eta2)/2))>2.0/3.0) {
00060         vetoEvent;
00061       }
00062       double mjj = FourMomentum(jet1+jet2).mass()/GeV;
00063       if (mjj<180.0) {
00064         vetoEvent;
00065       }
00066       _h_mjj->fill(mjj, weight);
00067 
00068     }
00069 
00070 
00071     /// Normalise histograms etc., after the run
00072     void finalize() {
00073       scale(_h_mjj, crossSection()/picobarn/sumOfWeights());
00074     }
00075 
00076     //@}
00077   private:
00078 
00079     /// @name Histograms
00080     //@{
00081     AIDA::IHistogram1D *_h_mjj;
00082     //@}
00083 
00084   };
00085 
00086 
00087 
00088   // This global object acts as a hook for the plugin system
00089   AnalysisBuilder<CDF_2000_S4266730> plugin_CDF_2000_S4266730;
00090 
00091 
00092 }