D0_2004_S5992206.cc
Go to the documentation of this file.00001
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/RivetAIDA.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
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 class D0_2004_S5992206 : public Analysis {
00027
00028 public:
00029
00030
00031
00032
00033
00034 D0_2004_S5992206()
00035 : Analysis("D0_2004_S5992206")
00036 { }
00037
00038
00039
00040
00041
00042
00043
00044 void init() {
00045
00046 const FinalState fs(-3.0, 3.0);
00047 addProjection(fs, "FS");
00048
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
00057 _histJetAzimuth_pTmax75_100 = bookHistogram1D(1, 2, 1);
00058 _histJetAzimuth_pTmax100_130 = bookHistogram1D(2, 2, 1);
00059 _histJetAzimuth_pTmax130_180 = bookHistogram1D(3, 2, 1);
00060 _histJetAzimuth_pTmax180_ = bookHistogram1D(4, 2, 1);
00061 }
00062
00063
00064
00065 void analyze(const Event& event) {
00066
00067
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
00112 void finalize() {
00113
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
00126
00127 AIDA::IHistogram1D* _histJetAzimuth_pTmax75_100;
00128 AIDA::IHistogram1D* _histJetAzimuth_pTmax100_130;
00129 AIDA::IHistogram1D* _histJetAzimuth_pTmax130_180;
00130 AIDA::IHistogram1D* _histJetAzimuth_pTmax180_;
00131
00132
00133 };
00134
00135
00136
00137
00138 DECLARE_RIVET_PLUGIN(D0_2004_S5992206);
00139
00140 }