D0_1996_S3324664.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Tools/BinnedHistogram.hh" 00004 #include "Rivet/Projections/FastJets.hh" 00005 #include "Rivet/Projections/FinalState.hh" 00006 00007 namespace Rivet { 00008 00009 00010 /// @brief D0 azimuthal correlation of jets widely separated in rapidity 00011 class D0_1996_S3324664 : public Analysis { 00012 public: 00013 00014 /// @name Constructors etc. 00015 //@{ 00016 00017 /// Constructor 00018 D0_1996_S3324664() : Analysis("D0_1996_S3324664") 00019 { } 00020 00021 00022 /// @name Analysis methods 00023 //@{ 00024 00025 void init() { 00026 const FinalState fs; 00027 addProjection(fs, "FS"); 00028 /// @todo Use correct jet algorithm 00029 addProjection(FastJets(fs, FastJets::D0ILCONE, 0.7), "ConeJets"); 00030 00031 _h_deta = bookHisto1D(1, 1, 1); 00032 _h_dphi.addHistogram(0.0, 2.0, bookHisto1D(2, 1, 1)); 00033 _h_dphi.addHistogram(2.0, 4.0, bookHisto1D(2, 1, 2)); 00034 _h_dphi.addHistogram(4.0, 6.0, bookHisto1D(2, 1, 3)); 00035 _h_cosdphi_deta = bookProfile1D(3, 1, 1); 00036 } 00037 00038 00039 void analyze(const Event& event) { 00040 const double weight = event.weight(); 00041 00042 Jets jets; 00043 foreach (const Jet& jet, applyProjection<FastJets>(event, "ConeJets").jets(20.0*GeV)) { 00044 if (fabs(jet.eta()) < 3.0) { 00045 jets.push_back(jet); 00046 } 00047 } 00048 00049 if (jets.size() < 2) { 00050 vetoEvent; 00051 } 00052 00053 FourMomentum minjet = jets[0].momentum(); 00054 FourMomentum maxjet = jets[1].momentum(); 00055 double mineta = minjet.eta(); 00056 double maxeta = maxjet.eta(); 00057 00058 foreach(const Jet& jet, jets) { 00059 double eta = jet.eta(); 00060 if (eta < mineta) { 00061 minjet = jet.momentum(); 00062 mineta = eta; 00063 } 00064 else if (eta > maxeta) { 00065 maxjet = jet.momentum(); 00066 maxeta = eta; 00067 } 00068 } 00069 00070 if (minjet.Et()<50*GeV && maxjet.Et()<50.0*GeV) { 00071 vetoEvent; 00072 } 00073 00074 double deta = maxjet.eta()-minjet.eta(); 00075 double dphi = mapAngle0To2Pi(maxjet.phi()-minjet.phi()); 00076 00077 _h_deta->fill(deta, weight); 00078 _h_dphi.fill(deta, 1.0-dphi/M_PI, weight); 00079 _h_cosdphi_deta->fill(deta, cos(M_PI-dphi), weight); 00080 00081 } 00082 00083 00084 void finalize() { 00085 // Normalised to #events 00086 normalize(_h_deta, 8830.0); // fixed norm OK 00087 00088 // I have no idea what this is normalised to... in the paper it says unity! 00089 /// @todo Understand this! 00090 foreach (Histo1DPtr histo, _h_dphi.getHistograms()) { 00091 /// @todo Prefer to scale rather than normalize, if possible 00092 normalize(histo, 0.0798); 00093 } 00094 00095 } 00096 00097 //@} 00098 00099 00100 private: 00101 00102 /// @name Histograms 00103 //@{ 00104 00105 Histo1DPtr _h_deta; 00106 BinnedHistogram<double> _h_dphi; 00107 Profile1DPtr _h_cosdphi_deta; 00108 //@} 00109 00110 }; 00111 00112 00113 00114 // The hook for the plugin system 00115 DECLARE_RIVET_PLUGIN(D0_1996_S3324664); 00116 00117 } Generated on Fri Oct 25 2013 12:41:45 for The Rivet MC analysis system by ![]() |