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