rivet is hosted by Hepforge, IPPP Durham
CDF_1993_S2742446.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/FastJets.hh"
00005 #include "Rivet/Projections/LeadingParticlesFinalState.hh"
00006 #include "Rivet/Projections/VetoedFinalState.hh"
00007 
00008 namespace Rivet {
00009 
00010 
00011   /// @brief CDF <what is this analysis doing?>
00012   class CDF_1993_S2742446 : public Analysis {
00013   public:
00014 
00015     CDF_1993_S2742446()
00016       : Analysis("CDF_1993_S2742446")
00017     {    }
00018 
00019 
00020   public:
00021 
00022     void init() {
00023 
00024       // The photon selection has been corrected to pTmin=22 GeV (vs. 23 in the trigger)
00025       LeadingParticlesFinalState photonfs(FinalState(-0.9, 0.9, 22.0*GeV));
00026       photonfs.addParticleId(PID::PHOTON);
00027       addProjection(photonfs, "LeadingPhoton");
00028 
00029       // FS excluding the leading photon
00030       VetoedFinalState vfs(FinalState(-4.2, 4.2));
00031       vfs.addVetoOnThisFinalState(photonfs);
00032       addProjection(vfs, "VFS");
00033 
00034       // Jets
00035       addProjection(FastJets(vfs, FastJets::CDFJETCLU, 0.7), "Jets");
00036 
00037       _h_costheta = bookHisto1D(1, 1, 1);
00038 
00039     }
00040 
00041 
00042     void analyze(const Event& event) {
00043 
00044       const double weight = event.weight();
00045 
00046       Particles photons = applyProjection<LeadingParticlesFinalState>(event, "LeadingPhoton").particles();
00047       if (photons.size()!=1 || photons[0].pT()>45.0*GeV) {
00048         vetoEvent;
00049       }
00050       FourMomentum leadingPhoton = photons[0].momentum();
00051       double eta_P = leadingPhoton.eta();
00052       double phi_P = leadingPhoton.phi();
00053 
00054       // photon isolation: less than 2 GeV EM E_T
00055       double Etsum=0.0;
00056       foreach (const Particle& p, applyProjection<VetoedFinalState>(event, "VFS").particles()) {
00057         if (p.charge() != 0 && deltaR(eta_P, phi_P, p.eta(), p.phi()) < 0.7) Etsum += p.Et();
00058       }
00059       if (Etsum > 2*GeV) vetoEvent;
00060 
00061       // sum all jets in the opposite hemisphere in phi from the photon
00062       FourMomentum jetsum;
00063       foreach (const Jet& jet, applyProjection<FastJets>(event, "Jets").jets(Cuts::pT > 10*GeV)) {
00064         if (fabs(jet.phi()-phi_P) > M_PI) jetsum+=jet.momentum();
00065       }
00066 
00067       const double costheta = fabs(tanh((eta_P-jetsum.eta())/2.0));
00068       _h_costheta->fill(costheta, weight);
00069     }
00070 
00071 
00072     void finalize() {
00073       /// @todo Take fixed norm direct from ref histo
00074       normalize(_h_costheta, 1.4271); // fixed norm ok
00075     }
00076 
00077 
00078   private:
00079 
00080     Histo1DPtr _h_costheta;
00081 
00082   };
00083 
00084 
00085 
00086   // The hook for the plugin system
00087   DECLARE_RIVET_PLUGIN(CDF_1993_S2742446);
00088 
00089 }