CDF_2001_S4517016.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/Tools/BinnedHistogram.hh"
00006 #include "Rivet/Projections/FinalState.hh"
00007 #include "Rivet/Projections/FastJets.hh"
00008 
00009 namespace Rivet {
00010 
00011 
00012   /// @brief CDF two jet tripply-differential cross-section
00013   class CDF_2001_S4517016 : public Analysis {
00014   public:
00015 
00016     /// @name Constructors etc.
00017     //@{
00018 
00019     /// Constructor
00020     CDF_2001_S4517016()
00021       : Analysis("CDF_2001_S4517016")
00022     {
00023       setBeams(PROTON, ANTIPROTON);
00024       setNeedsCrossSection(true);
00025     }
00026 
00027     //@}
00028 
00029 
00030   public:
00031 
00032     /// @name Analysis methods
00033     //@{
00034 
00035     /// Book histograms and initialise projections before the run
00036     void init() {
00037       FinalState fs(-4.2, 4.2);
00038       addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets");
00039 
00040       _h_ET.addHistogram(0.1, 0.7, bookHistogram1D(1, 1, 1));
00041       _h_ET.addHistogram(0.7, 1.4, bookHistogram1D(2, 1, 1));
00042       _h_ET.addHistogram(1.4, 2.1, bookHistogram1D(3, 1, 1));
00043       _h_ET.addHistogram(2.1, 3.0, bookHistogram1D(4, 1, 1));
00044     }
00045 
00046 
00047     /// Perform the per-event analysis
00048     void analyze(const Event& event) {
00049       const double weight = event.weight();
00050 
00051       Jets jets = applyProjection<FastJets>(event, "Jets").jetsByEt(10.0*GeV);
00052       if (jets.size()<2) {
00053         vetoEvent;
00054       }
00055       FourMomentum jet1 = jets[0].momentum();
00056       FourMomentum jet2 = jets[1].momentum();
00057       double eta1 = fabs(jet1.eta());
00058       double eta2 = fabs(jet2.eta());
00059       double ET1 = jet1.Et();
00060       double ET2 = jet2.Et();
00061       if (eta1<0.1 || eta1>0.7 || ET1<40.0*GeV) {
00062         vetoEvent;
00063       }
00064       if (eta2<0.1 || eta2>3.0) {
00065         vetoEvent;
00066       }
00067       _h_ET.fill(eta2, ET1, weight);
00068       if (eta2<0.7 && ET2>40.0*GeV) _h_ET.fill(eta1, ET2, weight);
00069     }
00070 
00071 
00072     /// Normalise histograms etc., after the run
00073     void finalize() {
00074       double deta1 = 1.2;
00075       _h_ET.scale(crossSection()/nanobarn/sumOfWeights()/deta1 / 2.0, this);
00076     }
00077 
00078     //@}
00079 
00080 
00081   private:
00082 
00083     /// @name Histograms
00084     //@{
00085     BinnedHistogram<double> _h_ET;
00086     //@}
00087 
00088   };
00089 
00090 
00091 
00092   // This global object acts as a hook for the plugin system
00093   AnalysisBuilder<CDF_2001_S4517016> plugin_CDF_2001_S4517016;
00094 
00095 
00096 }