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