CDF_1993_S2742446.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/RivetAIDA.hh"
00004 #include "Rivet/Tools/Logging.hh"
00005 #include "Rivet/Projections/FinalState.hh"
00006 #include "Rivet/Projections/FastJets.hh"
00007 #include "Rivet/Projections/LeadingParticlesFinalState.hh"
00008 #include "Rivet/Projections/VetoedFinalState.hh"
00009 #include "Rivet/Tools/ParticleIdUtils.hh"
00010 
00011 namespace Rivet {
00012 
00013 
00014   /// @brief CDF <what is this analysis doing?>
00015   class CDF_1993_S2742446 : public Analysis {
00016   public:
00017 
00018     CDF_1993_S2742446()
00019       : Analysis("CDF_1993_S2742446")
00020     {
00021       setBeams(PROTON, ANTIPROTON);
00022       setNeedsCrossSection(false);
00023     }
00024 
00025 
00026   public:
00027 
00028     void init() {
00029 
00030       // The photon selection has been corrected to pTmin=22 GeV (vs. 23 in the trigger)
00031       LeadingParticlesFinalState photonfs(FinalState(-0.9, 0.9, 22.0*GeV));
00032       photonfs.addParticleId(PHOTON);
00033       addProjection(photonfs, "LeadingPhoton");
00034 
00035       // FS excluding the leading photon
00036       VetoedFinalState vfs(FinalState(-4.2, 4.2));
00037       vfs.addVetoOnThisFinalState(photonfs);
00038       addProjection(vfs, "VFS");
00039 
00040       // Jets
00041       addProjection(FastJets(vfs, FastJets::CDFJETCLU, 0.7), "Jets");
00042 
00043       _h_costheta = bookHistogram1D(1, 1, 1);
00044 
00045     }
00046 
00047 
00048     void analyze(const Event& event) {
00049 
00050       const double weight = event.weight();
00051 
00052       ParticleVector photons = applyProjection<LeadingParticlesFinalState>(event, "LeadingPhoton").particles();
00053       if (photons.size()!=1 || photons[0].momentum().pT()>45.0*GeV) {
00054         vetoEvent;
00055       }
00056       FourMomentum leadingPhoton = photons[0].momentum();
00057       double eta_P = leadingPhoton.eta();
00058       double phi_P = leadingPhoton.phi();
00059 
00060       // photon isolation: less than 2 GeV EM E_T
00061       double Etsum=0.0;
00062       foreach (const Particle& p, applyProjection<VetoedFinalState>(event, "VFS").particles()) {
00063         if (PID::threeCharge(p.pdgId())!=0 &&
00064             deltaR(eta_P, phi_P, p.momentum().eta(), p.momentum().phi()) < 0.7) {
00065           Etsum += p.momentum().Et();
00066         }
00067       }
00068       if (Etsum > 2.0*GeV) {
00069         vetoEvent;
00070       }
00071 
00072       // sum all jets in the opposite hemisphere in phi from the photon
00073       FourMomentum jetsum;
00074       foreach (const Jet& jet, applyProjection<FastJets>(event, "Jets").jets(10.0*GeV)) {
00075         if (fabs(jet.momentum().phi()-phi_P) > M_PI) {
00076           jetsum+=jet.momentum();
00077         }
00078       }
00079 
00080       double costheta = fabs(tanh((eta_P-jetsum.eta())/2.0));
00081 
00082       _h_costheta->fill(costheta, weight);
00083 
00084     }
00085 
00086 
00087     void finalize() {
00088 
00089       normalize(_h_costheta, 1.4271); // fixed norm ok
00090 
00091     }
00092 
00093 
00094   private:
00095 
00096     AIDA::IHistogram1D *_h_costheta;
00097 
00098   };
00099 
00100 
00101 
00102   // This global object acts as a hook for the plugin system
00103   AnalysisBuilder<CDF_1993_S2742446> plugin_CDF_1993_S2742446;
00104 
00105 
00106 }