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 /// @name Analysis methods 00025 //@{ 00026 00027 /// Book histograms and initialise projections before the run 00028 void init() { 00029 00030 /// Initialise and register projections here 00031 const FinalState fs(-4.2, 4.2); 00032 addProjection(FastJets(fs, FastJets::CDFJETCLU, 0.7), "Jets"); 00033 00034 00035 /// Book histograms here, e.g.: 00036 for (size_t i=0; i<5; ++i) { 00037 _h_m[i] = bookHisto1D(1+i, 1, 1); 00038 _h_costheta[i] = bookHisto1D(10+i, 1, 1); 00039 _h_pT[i] = bookHisto1D(15+i, 1, 1); 00040 } 00041 /// @todo Ratios of mass histograms left out: Binning doesn't work out 00042 } 00043 00044 00045 /// Perform the per-event analysis 00046 void analyze(const Event& event) { 00047 const double weight = event.weight(); 00048 00049 /// Do the event by event analysis here 00050 Jets jets; 00051 double sumEt = 0.0; 00052 FourMomentum jetsystem(0.0, 0.0, 0.0, 0.0); 00053 foreach (const Jet& jet, applyProjection<FastJets>(event, "Jets").jets(cmpMomByEt)) { 00054 double Et = jet.Et(); 00055 if (Et > 20.0*GeV) { 00056 jets.push_back(jet); 00057 sumEt += Et; 00058 jetsystem += jet.momentum(); 00059 } 00060 } 00061 /// @todo include gaussian jet energy resolution smearing? 00062 00063 if (jets.size() < 2 || jets.size() > 6) { 00064 vetoEvent; 00065 } 00066 00067 if (sumEt < 420.0*GeV) { 00068 vetoEvent; 00069 } 00070 00071 LorentzTransform cms_boost(-jetsystem.boostVector()); 00072 FourMomentum jet0boosted(cms_boost.transform(jets[0].momentum())); 00073 00074 double mass = jetsystem.mass(); 00075 double costheta0 = fabs(cos(jet0boosted.theta())); 00076 00077 if (costheta0 < 2.0/3.0) { 00078 _h_m[jets.size()-2]->fill(mass, weight); 00079 } 00080 00081 if (mass > 600.0*GeV) { 00082 _h_costheta[jets.size()-2]->fill(costheta0, weight); 00083 } 00084 00085 if (costheta0 < 2.0/3.0 && mass > 600.0*GeV) { 00086 foreach (const Jet jet, jets) { 00087 _h_pT[jets.size()-2]->fill(jet.pT(), weight); 00088 } 00089 } 00090 } 00091 00092 00093 /// Normalise histograms etc., after the run 00094 void finalize() { 00095 00096 /// Normalise, scale and otherwise manipulate histograms here 00097 for (size_t i=0; i<5; ++i) { 00098 normalize(_h_m[i], 40.0); 00099 normalize(_h_costheta[i], 2.0); 00100 normalize(_h_pT[i], 20.0); 00101 } 00102 00103 } 00104 00105 //@} 00106 00107 00108 private: 00109 00110 /// @name Histograms 00111 //@{ 00112 00113 Histo1DPtr _h_m[5]; 00114 Histo1DPtr _h_costheta[5]; 00115 Histo1DPtr _h_pT[5]; 00116 00117 //@} 00118 00119 }; 00120 00121 00122 00123 // The hook for the plugin system 00124 DECLARE_RIVET_PLUGIN(CDF_1996_S3108457); 00125 00126 } Generated on Thu Mar 10 2016 08:29:48 for The Rivet MC analysis system by ![]() |