CDF_1996_S3108457.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/FinalState.hh" 00004 #include "Rivet/Projections/FastJets.hh" 00005 00006 namespace Rivet { 00007 00008 00009 /// @brief CDF properties of high-mass multi-jet events 00010 class CDF_1996_S3108457 : public Analysis { 00011 public: 00012 00013 /// @name Constructors etc. 00014 //@{ 00015 00016 /// Constructor 00017 CDF_1996_S3108457() 00018 : Analysis("CDF_1996_S3108457") 00019 { } 00020 00021 //@} 00022 00023 00024 public: 00025 00026 /// @name Analysis methods 00027 //@{ 00028 00029 /// Book histograms and initialise projections before the run 00030 void init() { 00031 00032 /// Initialise and register projections here 00033 const FinalState fs(-4.2, 4.2); 00034 addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets"); 00035 00036 00037 /// Book histograms here, e.g.: 00038 for (size_t i=0; i<5; ++i) { 00039 _h_m[i] = bookHisto1D(1+i, 1, 1); 00040 _h_costheta[i] = bookHisto1D(10+i, 1, 1); 00041 _h_pT[i] = bookHisto1D(15+i, 1, 1); 00042 } 00043 /// @todo Ratios of mass histograms left out: Binning doesn't work out 00044 } 00045 00046 00047 /// Perform the per-event analysis 00048 void analyze(const Event& event) { 00049 const double weight = event.weight(); 00050 00051 /// Do the event by event analysis here 00052 Jets jets; 00053 double sumEt = 0.0; 00054 FourMomentum jetsystem(0.0, 0.0, 0.0, 0.0); 00055 foreach (const Jet& jet, applyProjection<FastJets>(event, "Jets").jetsByEt()) { 00056 double Et = jet.momentum().Et(); 00057 if (Et > 20.0*GeV) { 00058 jets.push_back(jet); 00059 sumEt += Et; 00060 jetsystem += jet.momentum(); 00061 } 00062 } 00063 /// @todo include gaussian jet energy resolution smearing? 00064 00065 if (jets.size() < 2 || jets.size() > 6) { 00066 vetoEvent; 00067 } 00068 00069 if (sumEt < 420.0*GeV) { 00070 vetoEvent; 00071 } 00072 00073 LorentzTransform cms_boost(-jetsystem.boostVector()); 00074 FourMomentum jet0boosted(cms_boost.transform(jets[0].momentum())); 00075 00076 double mass = jetsystem.mass(); 00077 double costheta0 = fabs(cos(jet0boosted.theta())); 00078 00079 if (costheta0 < 2.0/3.0) { 00080 _h_m[jets.size()-2]->fill(mass, weight); 00081 } 00082 00083 if (mass > 600.0*GeV) { 00084 _h_costheta[jets.size()-2]->fill(costheta0, weight); 00085 } 00086 00087 if (costheta0 < 2.0/3.0 && mass > 600.0*GeV) { 00088 foreach (const Jet jet, jets) { 00089 _h_pT[jets.size()-2]->fill(jet.pT(), weight); 00090 } 00091 } 00092 } 00093 00094 00095 /// Normalise histograms etc., after the run 00096 void finalize() { 00097 00098 /// Normalise, scale and otherwise manipulate histograms here 00099 for (size_t i=0; i<5; ++i) { 00100 normalize(_h_m[i], 40.0); 00101 normalize(_h_costheta[i], 2.0); 00102 normalize(_h_pT[i], 20.0); 00103 } 00104 00105 } 00106 00107 //@} 00108 00109 00110 private: 00111 00112 /// @name Histograms 00113 //@{ 00114 00115 Histo1DPtr _h_m[5]; 00116 Histo1DPtr _h_costheta[5]; 00117 Histo1DPtr _h_pT[5]; 00118 00119 //@} 00120 00121 }; 00122 00123 00124 00125 // The hook for the plugin system 00126 DECLARE_RIVET_PLUGIN(CDF_1996_S3108457); 00127 00128 } Generated on Fri Oct 25 2013 12:41:44 for The Rivet MC analysis system by ![]() |