ATLAS_2013_I1216670.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/FinalState.hh" 00004 #include "Rivet/Projections/WFinder.hh" 00005 #include "Rivet/Projections/FastJets.hh" 00006 #include "Rivet/Projections/VetoedFinalState.hh" 00007 00008 namespace Rivet { 00009 00010 /// @brief MPI sensitive di-jet balance variables for W->ejj or W->mujj events. 00011 class ATLAS_2013_I1216670 : public Analysis { 00012 public: 00013 00014 /// @name Constructor 00015 ATLAS_2013_I1216670() 00016 : Analysis("ATLAS_2013_I1216670") 00017 { } 00018 00019 00020 /// @name Analysis methods 00021 //@{ 00022 00023 /// Book histograms, set up projections for W and jets 00024 void init() { 00025 00026 _h_delta_jets_n = bookHisto1D(1, 1, 1); 00027 _h_delta_jets = bookHisto1D(2, 1, 1); 00028 00029 FinalState fs; 00030 00031 Cut cuts = Cuts::abseta < 2.5 && Cuts::pT >= 20*GeV; 00032 00033 WFinder w_e_finder(fs, cuts, PID::ELECTRON, 40*GeV, MAXDOUBLE, 0.0*GeV, 0.0, WFinder::CLUSTERNODECAY, 00034 WFinder::NOTRACK, WFinder::TRANSMASS); 00035 addProjection(w_e_finder, "W_E_FINDER"); 00036 00037 WFinder w_mu_finder(fs, cuts, PID::MUON, 40*GeV, MAXDOUBLE, 0.0*GeV, 0.0, WFinder::CLUSTERNODECAY, 00038 WFinder::NOTRACK, WFinder::TRANSMASS); 00039 addProjection(w_mu_finder, "W_MU_FINDER"); 00040 00041 VetoedFinalState jet_fs(fs); 00042 jet_fs.addVetoOnThisFinalState(getProjection<WFinder>("W_E_FINDER")); 00043 jet_fs.addVetoOnThisFinalState(getProjection<WFinder>("W_MU_FINDER")); 00044 FastJets jets(jet_fs, FastJets::ANTIKT, 0.4); 00045 addProjection(jets, "JETS"); 00046 00047 } 00048 00049 /// Do the analysis 00050 void analyze(const Event &e) { 00051 00052 double weight = e.weight(); 00053 00054 const WFinder& w_e_finder = applyProjection<WFinder>(e, "W_E_FINDER" ); 00055 const WFinder& w_mu_finder = applyProjection<WFinder>(e, "W_MU_FINDER"); 00056 Particle lepton, neutrino; 00057 Jets all_jets, jets; 00058 00059 // Find exactly 1 W->e or W->mu boson 00060 if(w_e_finder.bosons().size() == 1 && w_mu_finder.bosons().size() == 0) { 00061 MSG_DEBUG(" Event identified as W->e nu."); 00062 if( !(w_e_finder.mT() > 40*GeV && w_e_finder.constituentNeutrino().Et() > 25.0*GeV) ) vetoEvent; 00063 lepton = w_e_finder.constituentLepton(); 00064 } else if(w_mu_finder.bosons().size() == 1 && w_e_finder.bosons().size() == 0) { 00065 MSG_DEBUG(" Event identified as W->mu nu."); 00066 if( !(w_mu_finder.mT() > 40*GeV && w_mu_finder.constituentNeutrino().Et() > 25.0*GeV) ) vetoEvent; 00067 lepton = w_mu_finder.constituentLepton(); 00068 } else { 00069 MSG_DEBUG(" No W found passing cuts."); 00070 vetoEvent; 00071 } 00072 00073 all_jets = applyProjection<FastJets>(e, "JETS").jetsByPt(Cuts::pt>20.0*GeV && Cuts::absrap<2.8); 00074 00075 // Remove jets DeltaR < 0.5 from W lepton 00076 for(Jets::iterator it = all_jets.begin(); it != all_jets.end(); ++it) { 00077 double distance = deltaR( lepton, (*it) ); 00078 if(distance < 0.5) { 00079 MSG_DEBUG(" Veto jet DeltaR " << distance << " from W lepton"); 00080 } else { 00081 jets.push_back(*it); 00082 } 00083 } 00084 00085 // Exactly two jets required 00086 if( jets.size() != 2 ) vetoEvent; 00087 00088 // Calculate analysis quantities from the two jets 00089 double delta_jets = (jets.front().momentum() + jets.back().momentum()).pT(); 00090 double total_pt = jets.front().momentum().pT() + jets.back().momentum().pT(); 00091 double delta_jets_n = delta_jets / total_pt; 00092 00093 _h_delta_jets->fill( delta_jets, weight ); // Jet pT balance 00094 _h_delta_jets_n->fill( delta_jets_n, weight ); // Jet pT balance, normalised by scalar dijet pT 00095 00096 } 00097 00098 /// Finalize 00099 void finalize() { 00100 00101 // Data is normalised to 0.03 and 3 00102 normalize(_h_delta_jets_n, 0.03); 00103 normalize(_h_delta_jets , 3.0 ); 00104 00105 } 00106 00107 //@} 00108 00109 private: 00110 00111 /// @name Histograms 00112 //@{ 00113 Histo1DPtr _h_delta_jets_n; 00114 Histo1DPtr _h_delta_jets; 00115 //@} 00116 00117 }; 00118 00119 // The hook for the plugin system 00120 DECLARE_RIVET_PLUGIN(ATLAS_2013_I1216670); 00121 00122 } Generated on Wed Oct 7 2015 12:09:11 for The Rivet MC analysis system by ![]() |