MC_PHOTONKTSPLITTINGS.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analyses/MC_JetSplittings.hh" 00003 #include "Rivet/Projections/LeadingParticlesFinalState.hh" 00004 #include "Rivet/Projections/VetoedFinalState.hh" 00005 #include "Rivet/Projections/FastJets.hh" 00006 00007 namespace Rivet { 00008 00009 00010 00011 00012 /// @brief MC validation analysis for photon + jets events 00013 class MC_PHOTONKTSPLITTINGS : public MC_JetSplittings { 00014 public: 00015 00016 /// Default constructor 00017 MC_PHOTONKTSPLITTINGS() 00018 : MC_JetSplittings("MC_PHOTONKTSPLITTINGS", 4, "Jets") 00019 { } 00020 00021 00022 /// @name Analysis methods 00023 //@{ 00024 00025 /// Book histograms 00026 void init() { 00027 // General FS 00028 FinalState fs(-5.0, 5.0); 00029 addProjection(fs, "FS"); 00030 00031 // Get leading photon 00032 LeadingParticlesFinalState photonfs(FinalState(-1.0, 1.0, 30.0*GeV)); 00033 photonfs.addParticleId(PID::PHOTON); 00034 addProjection(photonfs, "LeadingPhoton"); 00035 00036 // FS for jets excludes the leading photon 00037 VetoedFinalState vfs(fs); 00038 vfs.addVetoOnThisFinalState(photonfs); 00039 addProjection(vfs, "JetFS"); 00040 FastJets jetpro(vfs, FastJets::KT, 0.6); 00041 addProjection(jetpro, "Jets"); 00042 00043 MC_JetSplittings::init(); 00044 } 00045 00046 00047 /// Do the analysis 00048 void analyze(const Event& e) { 00049 // Get the photon 00050 const Particles photons = applyProjection<FinalState>(e, "LeadingPhoton").particles(); 00051 if (photons.size() != 1) { 00052 vetoEvent; 00053 } 00054 const FourMomentum photon = photons.front().momentum(); 00055 00056 // Get all charged particles 00057 const FinalState& fs = applyProjection<FinalState>(e, "JetFS"); 00058 if (fs.empty()) { 00059 vetoEvent; 00060 } 00061 00062 // Isolate photon by ensuring that a 0.4 cone around it contains less than 7% of the photon's energy 00063 const double egamma = photon.E(); 00064 double econe = 0.0; 00065 foreach (const Particle& p, fs.particles()) { 00066 if (deltaR(photon, p.momentum()) < 0.4) { 00067 econe += p.E(); 00068 // Veto as soon as E_cone gets larger 00069 if (econe/egamma > 0.07) { 00070 vetoEvent; 00071 } 00072 } 00073 } 00074 00075 MC_JetSplittings::analyze(e); 00076 } 00077 00078 00079 // Finalize 00080 void finalize() { 00081 MC_JetSplittings::finalize(); 00082 } 00083 00084 //@} 00085 00086 }; 00087 00088 00089 00090 // The hook for the plugin system 00091 DECLARE_RIVET_PLUGIN(MC_PHOTONKTSPLITTINGS); 00092 00093 } Generated on Wed Oct 7 2015 12:09:14 for The Rivet MC analysis system by ![]() |