ATLAS_2012_I1083318.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/IdentifiedFinalState.hh" 00004 #include "Rivet/Projections/VetoedFinalState.hh" 00005 #include "Rivet/Projections/MissingMomentum.hh" 00006 #include "Rivet/Projections/FastJets.hh" 00007 #include "Rivet/Projections/DressedLeptons.hh" 00008 #include "Rivet/Projections/LeadingParticlesFinalState.hh" 00009 00010 namespace Rivet { 00011 00012 00013 00014 00015 /// ATLAS W + jets production at 7 TeV 00016 class ATLAS_2012_I1083318 : public Analysis { 00017 public: 00018 00019 /// @name Constructors etc. 00020 //@{ 00021 00022 /// Constructor 00023 ATLAS_2012_I1083318() 00024 : Analysis("ATLAS_2012_I1083318") 00025 { } 00026 00027 //@} 00028 00029 00030 public: 00031 00032 /// @name Analysis methods 00033 //@{ 00034 00035 /// Book histograms and initialise projections before the run 00036 void init() { 00037 00038 FinalState fs; 00039 IdentifiedFinalState allleptons; 00040 allleptons.acceptIdPair(PID::ELECTRON); 00041 allleptons.acceptIdPair(PID::MUON); 00042 Cut cuts = Cuts::abseta < 2.5 && Cuts::pT > 20*GeV; 00043 DressedLeptons leptons(fs, allleptons, 0.1, cuts); 00044 addProjection(leptons, "leptons"); 00045 00046 // Leading neutrinos for Etmiss 00047 LeadingParticlesFinalState neutrinos(fs); 00048 neutrinos.addParticleIdPair(PID::NU_E); 00049 neutrinos.addParticleIdPair(PID::NU_MU); 00050 neutrinos.setLeadingOnly(true); 00051 addProjection(neutrinos, "neutrinos"); 00052 00053 // Input for the jets: "Neutrinos, electrons, and muons from decays of the 00054 // massive W boson were not used" 00055 VetoedFinalState veto; 00056 veto.addVetoOnThisFinalState(leptons); 00057 veto.addVetoOnThisFinalState(neutrinos); 00058 FastJets jets(veto, FastJets::ANTIKT, 0.4); 00059 jets.useInvisibles(true); 00060 addProjection(jets, "jets"); 00061 00062 for (size_t i = 0; i < 2; ++i) { 00063 _h_NjetIncl[i] = bookHisto1D(1, 1, i+1); 00064 _h_RatioNjetIncl[i] = bookScatter2D(2, 1, i+1); 00065 _h_FirstJetPt_1jet[i] = bookHisto1D(3, 1, i+1); 00066 _h_FirstJetPt_2jet[i] = bookHisto1D(4, 1, i+1); 00067 _h_FirstJetPt_3jet[i] = bookHisto1D(5, 1, i+1); 00068 _h_FirstJetPt_4jet[i] = bookHisto1D(6, 1, i+1); 00069 _h_SecondJetPt_2jet[i] = bookHisto1D(7, 1, i+1); 00070 _h_SecondJetPt_3jet[i] = bookHisto1D(8, 1, i+1); 00071 _h_SecondJetPt_4jet[i] = bookHisto1D(9, 1, i+1); 00072 _h_ThirdJetPt_3jet[i] = bookHisto1D(10, 1, i+1); 00073 _h_ThirdJetPt_4jet[i] = bookHisto1D(11, 1, i+1); 00074 _h_FourthJetPt_4jet[i] = bookHisto1D(12, 1, i+1); 00075 _h_Ht_1jet[i] = bookHisto1D(13, 1, i+1); 00076 _h_Ht_2jet[i] = bookHisto1D(14, 1, i+1); 00077 _h_Ht_3jet[i] = bookHisto1D(15, 1, i+1); 00078 _h_Ht_4jet[i] = bookHisto1D(16, 1, i+1); 00079 _h_Minv_2jet[i] = bookHisto1D(17, 1, i+1); 00080 _h_Minv_3jet[i] = bookHisto1D(18, 1, i+1); 00081 _h_Minv_4jet[i] = bookHisto1D(19, 1, i+1); 00082 _h_JetRapidity[i] = bookHisto1D(20, 1, i+1); 00083 _h_DeltaYElecJet[i] = bookHisto1D(21, 1, i+1); 00084 _h_SumYElecJet[i] = bookHisto1D(22, 1, i+1); 00085 _h_DeltaR_2jet[i] = bookHisto1D(23, 1, i+1); 00086 _h_DeltaY_2jet[i] = bookHisto1D(24, 1, i+1); 00087 _h_DeltaPhi_2jet[i] = bookHisto1D(25, 1, i+1); 00088 } 00089 } 00090 00091 00092 /// Perform the per-event analysis 00093 void analyze(const Event& event) { 00094 const double weight = event.weight(); 00095 00096 const vector<DressedLepton>& leptons = applyProjection<DressedLeptons>(event, "leptons").dressedLeptons(); 00097 Particles neutrinos = applyProjection<FinalState>(event, "neutrinos").particlesByPt(); 00098 00099 if (leptons.size() != 1 || (neutrinos.size() == 0)) { 00100 vetoEvent; 00101 } 00102 00103 FourMomentum lepton = leptons[0].momentum(); 00104 FourMomentum p_miss = neutrinos[0].momentum(); 00105 if (p_miss.Et() < 25.0*GeV) { 00106 vetoEvent; 00107 } 00108 00109 double mT = sqrt(2.0 * lepton.pT() * p_miss.Et() * (1.0 - cos( lepton.phi()-p_miss.phi()) ) ); 00110 if (mT < 40.0*GeV) { 00111 vetoEvent; 00112 } 00113 00114 double jetcuts[] = { 30.0*GeV, 20.0*GeV }; 00115 const FastJets& jetpro = applyProjection<FastJets>(event, "jets"); 00116 00117 for (size_t i = 0; i < 2; ++i) { 00118 vector<FourMomentum> jets; 00119 double HT = lepton.pT() + p_miss.pT(); 00120 foreach (const Jet& jet, jetpro.jetsByPt(jetcuts[i])) { 00121 if (jet.absrap() < 4.4 && deltaR(lepton, jet.momentum()) > 0.5) { 00122 jets.push_back(jet.momentum()); 00123 HT += jet.pT(); 00124 } 00125 } 00126 00127 _h_NjetIncl[i]->fill(0.0, weight); 00128 00129 // Njet>=1 observables 00130 if (jets.size() < 1) continue; 00131 _h_NjetIncl[i]->fill(1.0, weight); 00132 _h_FirstJetPt_1jet[i]->fill(jets[0].pT(), weight); 00133 _h_JetRapidity[i]->fill(jets[0].rapidity(), weight); 00134 _h_Ht_1jet[i]->fill(HT, weight); 00135 _h_DeltaYElecJet[i]->fill(lepton.rapidity()-jets[0].rapidity(), weight); 00136 _h_SumYElecJet[i]->fill(lepton.rapidity()+jets[0].rapidity(), weight); 00137 00138 // Njet>=2 observables 00139 if (jets.size() < 2) continue; 00140 _h_NjetIncl[i]->fill(2.0, weight); 00141 _h_FirstJetPt_2jet[i]->fill(jets[0].pT(), weight); 00142 _h_SecondJetPt_2jet[i]->fill(jets[1].pT(), weight); 00143 _h_Ht_2jet[i]->fill(HT, weight); 00144 double m2_2jet = FourMomentum(jets[0]+jets[1]).mass2(); 00145 _h_Minv_2jet[i]->fill(m2_2jet>0.0 ? sqrt(m2_2jet) : 0.0, weight); 00146 _h_DeltaR_2jet[i]->fill(deltaR(jets[0], jets[1]), weight); 00147 _h_DeltaY_2jet[i]->fill(jets[0].rapidity()-jets[1].rapidity(), weight); 00148 _h_DeltaPhi_2jet[i]->fill(deltaPhi(jets[0], jets[1]), weight); 00149 00150 // Njet>=3 observables 00151 if (jets.size() < 3) continue; 00152 _h_NjetIncl[i]->fill(3.0, weight); 00153 _h_FirstJetPt_3jet[i]->fill(jets[0].pT(), weight); 00154 _h_SecondJetPt_3jet[i]->fill(jets[1].pT(), weight); 00155 _h_ThirdJetPt_3jet[i]->fill(jets[2].pT(), weight); 00156 _h_Ht_3jet[i]->fill(HT, weight); 00157 double m2_3jet = FourMomentum(jets[0]+jets[1]+jets[2]).mass2(); 00158 _h_Minv_3jet[i]->fill(m2_3jet>0.0 ? sqrt(m2_3jet) : 0.0, weight); 00159 00160 // Njet>=4 observables 00161 if (jets.size() < 4) continue; 00162 _h_NjetIncl[i]->fill(4.0, weight); 00163 _h_FirstJetPt_4jet[i]->fill(jets[0].pT(), weight); 00164 _h_SecondJetPt_4jet[i]->fill(jets[1].pT(), weight); 00165 _h_ThirdJetPt_4jet[i]->fill(jets[2].pT(), weight); 00166 _h_FourthJetPt_4jet[i]->fill(jets[3].pT(), weight); 00167 _h_Ht_4jet[i]->fill(HT, weight); 00168 double m2_4jet = FourMomentum(jets[0]+jets[1]+jets[2]+jets[3]).mass2(); 00169 _h_Minv_4jet[i]->fill(m2_4jet>0.0 ? sqrt(m2_4jet) : 0.0, weight); 00170 00171 // Njet>=5 observables 00172 if (jets.size() < 5) continue; 00173 _h_NjetIncl[i]->fill(5.0, weight); 00174 } 00175 } 00176 00177 00178 /// Normalise histograms etc., after the run 00179 void finalize() { 00180 for (size_t i = 0; i < 2; ++i) { 00181 00182 // Construct jet multiplicity ratio 00183 for (size_t n = 1; n < _h_NjetIncl[i]->numBins(); ++n) { 00184 YODA::HistoBin1D& b0 = _h_NjetIncl[i]->bin(n-1); 00185 YODA::HistoBin1D& b1 = _h_NjetIncl[i]->bin(n); 00186 if (b0.height() == 0.0 || b1.height() == 0.0) continue; 00187 _h_RatioNjetIncl[i]->addPoint(n, b1.height()/b0.height(), 0.5, 00188 b1.height()/b0.height() * (b0.relErr() + b1.relErr())); 00189 } 00190 00191 // Scale all histos to the cross section 00192 const double factor = crossSection()/sumOfWeights(); 00193 scale(_h_DeltaPhi_2jet[i], factor); 00194 scale(_h_DeltaR_2jet[i], factor); 00195 scale(_h_DeltaY_2jet[i], factor); 00196 scale(_h_DeltaYElecJet[i], factor); 00197 scale(_h_FirstJetPt_1jet[i], factor); 00198 scale(_h_FirstJetPt_2jet[i], factor); 00199 scale(_h_FirstJetPt_3jet[i], factor); 00200 scale(_h_FirstJetPt_4jet[i], factor); 00201 scale(_h_FourthJetPt_4jet[i], factor); 00202 scale(_h_Ht_1jet[i], factor); 00203 scale(_h_Ht_2jet[i], factor); 00204 scale(_h_Ht_3jet[i], factor); 00205 scale(_h_Ht_4jet[i], factor); 00206 scale(_h_JetRapidity[i], factor); 00207 scale(_h_Minv_2jet[i], factor); 00208 scale(_h_Minv_3jet[i], factor); 00209 scale(_h_Minv_4jet[i], factor); 00210 scale(_h_NjetIncl[i], factor); 00211 scale(_h_SecondJetPt_2jet[i], factor); 00212 scale(_h_SecondJetPt_3jet[i], factor); 00213 scale(_h_SecondJetPt_4jet[i], factor); 00214 scale(_h_SumYElecJet[i], factor); 00215 scale(_h_ThirdJetPt_3jet[i], factor); 00216 scale(_h_ThirdJetPt_4jet[i], factor); 00217 } 00218 } 00219 00220 //@} 00221 00222 00223 private: 00224 00225 /// @name Histograms 00226 //@{ 00227 Histo1DPtr _h_DeltaPhi_2jet[2]; 00228 Histo1DPtr _h_DeltaR_2jet[2]; 00229 Histo1DPtr _h_DeltaY_2jet[2]; 00230 Histo1DPtr _h_DeltaYElecJet[2]; 00231 Histo1DPtr _h_FirstJetPt_1jet[2]; 00232 Histo1DPtr _h_FirstJetPt_2jet[2]; 00233 Histo1DPtr _h_FirstJetPt_3jet[2]; 00234 Histo1DPtr _h_FirstJetPt_4jet[2]; 00235 Histo1DPtr _h_FourthJetPt_4jet[2]; 00236 Histo1DPtr _h_Ht_1jet[2]; 00237 Histo1DPtr _h_Ht_2jet[2]; 00238 Histo1DPtr _h_Ht_3jet[2]; 00239 Histo1DPtr _h_Ht_4jet[2]; 00240 Histo1DPtr _h_JetRapidity[2]; 00241 Histo1DPtr _h_Minv_2jet[2]; 00242 Histo1DPtr _h_Minv_3jet[2]; 00243 Histo1DPtr _h_Minv_4jet[2]; 00244 Histo1DPtr _h_NjetIncl[2]; 00245 Scatter2DPtr _h_RatioNjetIncl[2]; 00246 Histo1DPtr _h_SecondJetPt_2jet[2]; 00247 Histo1DPtr _h_SecondJetPt_3jet[2]; 00248 Histo1DPtr _h_SecondJetPt_4jet[2]; 00249 Histo1DPtr _h_SumYElecJet[2]; 00250 Histo1DPtr _h_ThirdJetPt_3jet[2]; 00251 Histo1DPtr _h_ThirdJetPt_4jet[2]; 00252 //@} 00253 00254 00255 }; 00256 00257 00258 00259 // The hook for the plugin system 00260 DECLARE_RIVET_PLUGIN(ATLAS_2012_I1083318); 00261 00262 } Generated on Thu Mar 10 2016 08:29:47 for The Rivet MC analysis system by ![]() |