rivet is hosted by Hepforge, IPPP Durham
BELLE_2013_I1216515.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/Projections/Beam.hh"
00004 #include "Rivet/Projections/ChargedFinalState.hh"
00005 
00006 namespace Rivet {
00007 
00008 
00009   /// @brief BELLE pion and kaon continuum production
00010   /// @author Peter Richardson
00011   class BELLE_2013_I1216515 : public Analysis {
00012   public:
00013 
00014     BELLE_2013_I1216515()
00015       : Analysis("BELLE_2013_I1216515")
00016     { }
00017 
00018 
00019     void analyze(const Event& e) {
00020       const double weight = e.weight();
00021 
00022       // Loop through charged FS particles and look for charmed mesons/baryons
00023       const ChargedFinalState& fs = apply<ChargedFinalState>(e, "FS");
00024 
00025       const Beam beamproj = apply<Beam>(e, "Beams");
00026       const ParticlePair& beams = beamproj.beams();
00027       const FourMomentum mom_tot = beams.first.momentum() + beams.second.momentum();
00028       const LorentzTransform cms_boost = LorentzTransform::mkFrameTransformFromBeta(mom_tot.betaVec());
00029       MSG_DEBUG("CMS energy sqrt s = " << beamproj.sqrtS());
00030 
00031       foreach (const Particle& p, fs.particles()) {
00032         // energy in CMS frame
00033         const double en = cms_boost.transform(p.momentum()).t();
00034     const double z = 2.*en/beamproj.sqrtS();
00035         const int PdgId = p.abspid();
00036         MSG_DEBUG("pdgID = " << PdgId << "  Energy = " << en);
00037         switch (PdgId) {
00038     case PID::PIPLUS:
00039       _histPion->fill(z,weight);
00040       break;
00041     case PID::KPLUS:
00042       _histKaon->fill(z,weight);
00043       break;
00044     default :
00045       break;
00046         }
00047       }
00048     } // analyze
00049 
00050 
00051     void finalize() {
00052 
00053       scale(_histPion,crossSection()/femtobarn/sumOfWeights());
00054       scale(_histKaon,crossSection()/femtobarn/sumOfWeights());
00055     } // finalize
00056 
00057 
00058     void init() {
00059       declare(Beam(), "Beams");
00060       declare(ChargedFinalState(), "FS");
00061 
00062       _histPion = bookHisto1D(1,1,1);
00063       _histKaon = bookHisto1D(1,1,2);
00064 
00065     } // init
00066 
00067   private:
00068 
00069     //@{
00070     // Histograms for continuum data (sqrt(s) = 10.52 GeV)
00071     Histo1DPtr _histPion;
00072     Histo1DPtr _histKaon;
00073     //@}
00074 
00075   };
00076 
00077 
00078   // The hook for the plugin system
00079   DECLARE_RIVET_PLUGIN(BELLE_2013_I1216515);
00080 
00081 }