rivet is hosted by Hepforge, IPPP Durham
BABAR_2007_S6895344.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include <iostream>
00003 #include "Rivet/Analysis.hh"
00004 #include "Rivet/Projections/Beam.hh"
00005 #include "Rivet/Projections/UnstableFinalState.hh"
00006 
00007 namespace Rivet {
00008 
00009 
00010   /// @brief BABAR Lambda_c from fragmentation
00011   /// @author Peter Richardson
00012   class BABAR_2007_S6895344 : public Analysis {
00013   public:
00014 
00015     BABAR_2007_S6895344()
00016       : Analysis("BABAR_2007_S6895344")
00017     { }
00018 
00019 
00020     void analyze(const Event& e) {
00021       const double weight = e.weight();
00022 
00023       // Loop through unstable FS particles and look for charmed mesons/baryons
00024       const UnstableFinalState& ufs = applyProjection<UnstableFinalState>(e, "UFS");
00025 
00026       const Beam beamproj = applyProjection<Beam>(e, "Beams");
00027       const ParticlePair& beams = beamproj.beams();
00028       FourMomentum mom_tot = beams.first.momentum() + beams.second.momentum();
00029       LorentzTransform cms_boost(-mom_tot.boostVector());
00030       const double s = sqr(beamproj.sqrtS());
00031       const bool onresonance = fuzzyEquals(beamproj.sqrtS(), 10.58, 2E-3);
00032 
00033       // Particle masses from PDGlive (accessed online 16. Nov. 2009).
00034       foreach (const Particle& p, ufs.particles()) {
00035         // only looking at Lambda_c
00036         if(abs(p.pdgId())!=4122) continue;
00037         MSG_DEBUG("Lambda_c found");
00038         double mH2 = 5.22780; // 2.28646^2
00039         const double mom = cms_boost.transform(p.momentum()).vector3().mod();
00040         double xp = mom/sqrt(s/4.0 - mH2);
00041 
00042         if(onresonance) {
00043           _histOn  ->fill(xp,weight);
00044           _sigmaOn ->fill(10.58,weight);
00045         }
00046         else {
00047           _histOff ->fill(xp,weight);
00048           _sigmaOff->fill(10.54,weight);
00049         }
00050       }
00051     } // analyze
00052 
00053 
00054     void finalize() {
00055 
00056       scale(_sigmaOn , 1./sumOfWeights());
00057       scale(_sigmaOff, 1./sumOfWeights());
00058       scale(_histOn  , 1./sumOfWeights());
00059       scale(_histOff , 1./sumOfWeights());
00060     } // finalize
00061 
00062 
00063     void init() {
00064       addProjection(Beam(), "Beams");
00065       addProjection(UnstableFinalState(), "UFS");
00066 
00067       _histOff  = bookHisto1D(1,1,1);
00068       _sigmaOff = bookHisto1D(2,1,1);
00069       _histOn   = bookHisto1D(3,1,1);
00070       _sigmaOn  = bookHisto1D(4,1,1);
00071 
00072     } // init
00073 
00074   private:
00075 
00076     //@{
00077     // Histograms for the continuum cross sections
00078     Histo1DPtr _sigmaOn ;
00079     Histo1DPtr _sigmaOff;
00080     Histo1DPtr _histOn  ;
00081     Histo1DPtr _histOff ;
00082     //@}
00083 
00084   };
00085 
00086   // The hook for the plugin system
00087   DECLARE_RIVET_PLUGIN(BABAR_2007_S6895344);
00088 
00089 }