D0_2009_S8202443.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Tools/Logging.hh" 00004 #include "Rivet/Projections/FinalState.hh" 00005 #include "Rivet/Projections/ZFinder.hh" 00006 #include "Rivet/Projections/FastJets.hh" 00007 #include "Rivet/RivetYODA.hh" 00008 00009 namespace Rivet { 00010 00011 00012 /// @brief D0 Z + jet + \f$ X \f$ cross-section / \f$ p_\perp \f$ distributions 00013 class D0_2009_S8202443 : public Analysis { 00014 public: 00015 00016 /// @name Construction 00017 //@{ 00018 /// Constructor 00019 D0_2009_S8202443() : Analysis("D0_2009_S8202443"), 00020 _sum_of_weights(0.0), _sum_of_weights_constrained(0.0) 00021 { 00022 } 00023 00024 //@} 00025 00026 00027 /// @name Analysis methods 00028 //@{ 00029 00030 /// Book histograms 00031 void init() { 00032 FinalState fs; 00033 // Leptons in constrained tracking acceptance 00034 vector<pair<double, double> > etaRanges; 00035 etaRanges.push_back(make_pair(-2.5, -1.5)); 00036 etaRanges.push_back(make_pair(-1.1, 1.1)); 00037 etaRanges.push_back(make_pair(1.5, 2.5)); 00038 ZFinder zfinder_constrained(fs, etaRanges, 25.0*GeV, ELECTRON, 00039 65.0*GeV, 115.0*GeV, 0.2, true, true); 00040 addProjection(zfinder_constrained, "ZFinderConstrained"); 00041 FastJets conefinder_constrained(zfinder_constrained.remainingFinalState(), 00042 FastJets::D0ILCONE, 0.5); 00043 addProjection(conefinder_constrained, "ConeFinderConstrained"); 00044 00045 // Unconstrained leptons 00046 ZFinder zfinder(fs, -MAXRAPIDITY, MAXRAPIDITY, 0.0*GeV, ELECTRON, 00047 65.0*GeV, 115.0*GeV, 0.2, true, true); 00048 addProjection(zfinder, "ZFinder"); 00049 FastJets conefinder(zfinder.remainingFinalState(), FastJets::D0ILCONE, 0.5); 00050 addProjection(conefinder, "ConeFinder"); 00051 00052 _h_jet1_pT_constrained = bookHisto1D(1, 1, 1); 00053 _h_jet2_pT_constrained = bookHisto1D(3, 1, 1); 00054 _h_jet3_pT_constrained = bookHisto1D(5, 1, 1); 00055 _h_jet1_pT = bookHisto1D(2, 1, 1); 00056 _h_jet2_pT = bookHisto1D(4, 1, 1); 00057 _h_jet3_pT = bookHisto1D(6, 1, 1); 00058 } 00059 00060 00061 00062 // Do the analysis 00063 void analyze(const Event& e) { 00064 double weight = e.weight(); 00065 00066 // unconstrained electrons first 00067 const ZFinder& zfinder = applyProjection<ZFinder>(e, "ZFinder"); 00068 if (zfinder.bosons().size()==1) { 00069 _sum_of_weights += weight; 00070 const JetAlg& jetpro = applyProjection<JetAlg>(e, "ConeFinder"); 00071 const Jets& jets = jetpro.jetsByPt(20.0*GeV); 00072 Jets jets_cut; 00073 foreach (const Jet& j, jets) { 00074 if (fabs(j.momentum().pseudorapidity()) < 2.5) { 00075 jets_cut.push_back(j); 00076 } 00077 } 00078 00079 if (jets_cut.size()>0) { 00080 _h_jet1_pT->fill(jets_cut[0].momentum().pT()/GeV, weight); 00081 } 00082 if (jets_cut.size()>1) { 00083 _h_jet2_pT->fill(jets_cut[1].momentum().pT()/GeV, weight); 00084 } 00085 if (jets_cut.size()>2) { 00086 _h_jet3_pT->fill(jets_cut[2].momentum().pT()/GeV, weight); 00087 } 00088 } 00089 else { 00090 MSG_DEBUG("no unique lepton pair found."); 00091 } 00092 00093 00094 // constrained electrons 00095 const ZFinder& zfinder_constrained = applyProjection<ZFinder>(e, "ZFinderConstrained"); 00096 if (zfinder_constrained.bosons().size()==1) { 00097 _sum_of_weights_constrained += weight; 00098 const JetAlg& jetpro = applyProjection<JetAlg>(e, "ConeFinderConstrained"); 00099 const Jets& jets = jetpro.jetsByPt(20.0*GeV); 00100 Jets jets_cut; 00101 foreach (const Jet& j, jets) { 00102 if (fabs(j.momentum().pseudorapidity()) < 2.5) { 00103 jets_cut.push_back(j); 00104 } 00105 } 00106 00107 if (jets_cut.size()>0) { 00108 _h_jet1_pT_constrained->fill(jets_cut[0].momentum().pT()/GeV, weight); 00109 } 00110 if (jets_cut.size()>1) { 00111 _h_jet2_pT_constrained->fill(jets_cut[1].momentum().pT()/GeV, weight); 00112 } 00113 if (jets_cut.size()>2) { 00114 _h_jet3_pT_constrained->fill(jets_cut[2].momentum().pT()/GeV, weight); 00115 } 00116 } 00117 else { 00118 MSG_DEBUG("no unique lepton pair found."); 00119 vetoEvent; 00120 } 00121 } 00122 00123 00124 00125 // Finalize 00126 void finalize() { 00127 scale(_h_jet1_pT, 1.0/_sum_of_weights); 00128 scale(_h_jet2_pT, 1.0/_sum_of_weights); 00129 scale(_h_jet3_pT, 1.0/_sum_of_weights); 00130 scale(_h_jet1_pT_constrained, 1.0/_sum_of_weights_constrained); 00131 scale(_h_jet2_pT_constrained, 1.0/_sum_of_weights_constrained); 00132 scale(_h_jet3_pT_constrained, 1.0/_sum_of_weights_constrained); 00133 } 00134 00135 //@} 00136 00137 00138 private: 00139 00140 /// @name Histograms 00141 //@{ 00142 Histo1DPtr _h_jet1_pT; 00143 Histo1DPtr _h_jet2_pT; 00144 Histo1DPtr _h_jet3_pT; 00145 Histo1DPtr _h_jet1_pT_constrained; 00146 Histo1DPtr _h_jet2_pT_constrained; 00147 Histo1DPtr _h_jet3_pT_constrained; 00148 //@} 00149 00150 double _sum_of_weights, _sum_of_weights_constrained; 00151 00152 }; 00153 00154 00155 00156 // The hook for the plugin system 00157 DECLARE_RIVET_PLUGIN(D0_2009_S8202443); 00158 00159 } Generated on Fri Dec 21 2012 15:03:40 for The Rivet MC analysis system by ![]() |