D0_2004_S5992206.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/RivetYODA.hh" 00004 #include "Rivet/Tools/Logging.hh" 00005 #include "Rivet/Projections/FastJets.hh" 00006 #include "Rivet/Projections/VetoedFinalState.hh" 00007 #include "Rivet/Projections/VisibleFinalState.hh" 00008 #include "Rivet/Projections/MissingMomentum.hh" 00009 00010 namespace Rivet { 00011 00012 00013 /* @brief D0 Run II angular correlations in di-jet events 00014 * @author Lars Sonnenschein 00015 * 00016 * Measurement of angular correlations in di-jet events. 00017 * 00018 * @par Run conditions 00019 * 00020 * @arg \f$ \sqrt{s} = \f$ 1960 GeV 00021 * @arg Run with generic QCD events. 00022 * @arg Several \f$ p_\perp^\text{min} \f$ cutoffs are probably required to fill the histograms: 00023 * @arg \f$ p_\perp^\text{min} = \f$ 50, 75, 100, 150 GeV for the four pT ranges respecively 00024 * 00025 */ 00026 class D0_2004_S5992206 : public Analysis { 00027 00028 public: 00029 00030 /// @name Constructors etc. 00031 //@{ 00032 00033 /// Constructor. 00034 D0_2004_S5992206() 00035 : Analysis("D0_2004_S5992206") 00036 { } 00037 00038 //@} 00039 00040 00041 /// @name Analysis methods 00042 //@{ 00043 00044 void init() { 00045 // Final state for jets, mET etc. 00046 const FinalState fs(-3.0, 3.0); 00047 addProjection(fs, "FS"); 00048 // Veto neutrinos, and muons with pT above 1.0 GeV 00049 VetoedFinalState vfs(fs); 00050 vfs.vetoNeutrinos(); 00051 vfs.addVetoPairDetail(MUON, 1.0*GeV, MAXDOUBLE); 00052 addProjection(vfs, "VFS"); 00053 addProjection(FastJets(vfs, FastJets::D0ILCONE, 0.7), "Jets"); 00054 addProjection(MissingMomentum(vfs), "CalMET"); 00055 00056 // Book histograms 00057 _histJetAzimuth_pTmax75_100 = bookHisto1D(1, 2, 1); 00058 _histJetAzimuth_pTmax100_130 = bookHisto1D(2, 2, 1); 00059 _histJetAzimuth_pTmax130_180 = bookHisto1D(3, 2, 1); 00060 _histJetAzimuth_pTmax180_ = bookHisto1D(4, 2, 1); 00061 } 00062 00063 00064 /// Do the analysis 00065 void analyze(const Event& event) { 00066 00067 // Analyse and print some info 00068 const JetAlg& jetpro = applyProjection<JetAlg>(event, "Jets"); 00069 MSG_DEBUG("Jet multiplicity before any pT cut = " << jetpro.size()); 00070 00071 const Jets jets = jetpro.jetsByPt(40.0*GeV); 00072 if (jets.size() >= 2) { 00073 MSG_DEBUG("Jet multiplicity after pT > 40 GeV cut = " << jets.size()); 00074 } else { 00075 vetoEvent; 00076 } 00077 const double rap1 = jets[0].momentum().rapidity(); 00078 const double rap2 = jets[1].momentum().rapidity(); 00079 if (fabs(rap1) > 0.5 || fabs(rap2) > 0.5) { 00080 vetoEvent; 00081 } 00082 MSG_DEBUG("Jet eta and pT requirements fulfilled"); 00083 const double pT1 = jets[0].momentum().pT(); 00084 00085 const MissingMomentum& caloMissEt = applyProjection<MissingMomentum>(event, "CalMET"); 00086 MSG_DEBUG("Missing vector Et = " << caloMissEt.vectorEt()/GeV << " GeV"); 00087 if (caloMissEt.vectorEt().mod() > 0.7*pT1) { 00088 MSG_DEBUG("Vetoing event with too much missing ET: " 00089 << caloMissEt.vectorEt()/GeV << " GeV > " 00090 << 0.7*pT1/GeV << " GeV"); 00091 vetoEvent; 00092 } 00093 00094 if (pT1/GeV >= 75.0) { 00095 const double weight = event.weight(); 00096 const double dphi = deltaPhi(jets[0].momentum().phi(), jets[1].momentum().phi()); 00097 if (inRange(pT1/GeV, 75.0, 100.0)) { 00098 _histJetAzimuth_pTmax75_100->fill(dphi, weight); 00099 } else if (inRange(pT1/GeV, 100.0, 130.0)) { 00100 _histJetAzimuth_pTmax100_130->fill(dphi, weight); 00101 } else if (inRange(pT1/GeV, 130.0, 180.0)) { 00102 _histJetAzimuth_pTmax130_180->fill(dphi, weight); 00103 } else if (pT1/GeV > 180.0) { 00104 _histJetAzimuth_pTmax180_->fill(dphi, weight); 00105 } 00106 } 00107 00108 } 00109 00110 00111 // Finalize 00112 void finalize() { 00113 // Normalize histograms to unit area 00114 normalize(_histJetAzimuth_pTmax75_100); 00115 normalize(_histJetAzimuth_pTmax100_130); 00116 normalize(_histJetAzimuth_pTmax130_180); 00117 normalize(_histJetAzimuth_pTmax180_); 00118 } 00119 00120 //@} 00121 00122 00123 private: 00124 00125 /// @name Histograms 00126 //@{ 00127 Histo1DPtr _histJetAzimuth_pTmax75_100; 00128 Histo1DPtr _histJetAzimuth_pTmax100_130; 00129 Histo1DPtr _histJetAzimuth_pTmax130_180; 00130 Histo1DPtr _histJetAzimuth_pTmax180_; 00131 //@} 00132 00133 }; 00134 00135 00136 00137 // The hook for the plugin system 00138 DECLARE_RIVET_PLUGIN(D0_2004_S5992206); 00139 00140 } Generated on Fri Dec 21 2012 15:03:40 for The Rivet MC analysis system by ![]() |