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 
00024     //@}
00025 
00026 
00027   public:
00028 
00029     /// @name Analysis methods
00030     //@{
00031 
00032     /// Book histograms and initialise projections before the run
00033     void init() {
00034       FinalState fs(-4.2, 4.2);
00035       addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets");
00036 
00037       _h_ET.addHistogram(0.1, 0.7, bookHistogram1D(1, 1, 1));
00038       _h_ET.addHistogram(0.7, 1.4, bookHistogram1D(2, 1, 1));
00039       _h_ET.addHistogram(1.4, 2.1, bookHistogram1D(3, 1, 1));
00040       _h_ET.addHistogram(2.1, 3.0, bookHistogram1D(4, 1, 1));
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(10.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 = fabs(jet1.eta());
00055       double eta2 = fabs(jet2.eta());
00056       double ET1 = jet1.Et();
00057       double ET2 = jet2.Et();
00058       if (eta1<0.1 || eta1>0.7 || ET1<40.0*GeV) {
00059         vetoEvent;
00060       }
00061       if (eta2<0.1 || eta2>3.0) {
00062         vetoEvent;
00063       }
00064       _h_ET.fill(eta2, ET1, weight);
00065       if (eta2<0.7 && ET2>40.0*GeV) _h_ET.fill(eta1, ET2, weight);
00066     }
00067 
00068 
00069     /// Normalise histograms etc., after the run
00070     void finalize() {
00071       double deta1 = 1.2;
00072       _h_ET.scale(crossSection()/nanobarn/sumOfWeights()/deta1 / 2.0, this);
00073     }
00074 
00075     //@}
00076 
00077 
00078   private:
00079 
00080     /// @name Histograms
00081     //@{
00082     BinnedHistogram<double> _h_ET;
00083     //@}
00084 
00085   };
00086 
00087 
00088 
00089   // The hook for the plugin system
00090   DECLARE_RIVET_PLUGIN(CDF_2001_S4517016);
00091 
00092 }