rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESII_2004_I650570

Mass and angular distributions in $J/\psi\to pK^-\bar\Lambda$ +c.c.
Experiment: BESII (BEPC)
Inspire ID: 650570
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 93 (2004) 112002
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing j/psi, originally e+e-

Mass and angular distributions in $J/\psi\to pK^-\bar\Lambda$ +c.c.. The data were read from figure 2 in the paper, which is not background subtracted but has very small ($\sim1\%$) backgrounds.

Source code: BESII_2004_I650570.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4#include "Rivet/Projections/DecayedParticles.hh"
 5
 6
 7namespace Rivet {
 8
 9
10  /// @brief J/psi -> p K- Lambdabar
11  class BESII_2004_I650570 : public Analysis {
12  public:
13
14    /// Constructor
15    RIVET_DEFAULT_ANALYSIS_CTOR(BESII_2004_I650570);
16
17
18    /// @name Analysis methods
19    /// @{
20
21    /// Book histograms and initialise projections before the run
22    void init() {
23      // projections
24      UnstableParticles ufs = UnstableParticles(Cuts::pid==443);
25      declare(ufs, "UFS");
26      DecayedParticles psi(ufs);
27      psi.addStable( PID::PI0);
28      psi.addStable( PID::K0S);
29      psi.addStable( PID::LAMBDA);
30      psi.addStable(-PID::LAMBDA);
31      declare(psi, "psi");
32      // histos
33      for (unsigned int ix=0; ix<3; ++ix) {
34        book(_h[ix], 1, 1, 1+ix);
35      }
36    }
37
38
39    /// Perform the per-event analysis
40    void analyze(const Event& event) {
41      DecayedParticles psi = apply<DecayedParticles>(event, "psi");
42      // loop over particles
43      for (unsigned int ix=0; ix<psi.decaying().size(); ++ix) {
44        int sign=1;
45      	if      (psi.modeMatches(ix,3,mode  )) sign =  1;
46        else if (psi.modeMatches(ix,3,modeCC)) sign = -1;
47        else  continue;
48        const Particle pp     = psi.decayProducts()[ix].at( sign*2212)[0];
49        const Particle lamBar = psi.decayProducts()[ix].at(-sign*3122)[0];
50        FourMomentum pL = pp.mom()+lamBar.mom();
51        double mass = pL.mass();
52        _h[0]->fill(mass/GeV);
53        double delta = mass-pp.mass()-lamBar.mass();
54        _h[1]->fill(delta/GeV);
55        if (delta>.15) continue;
56        LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(psi.decaying()[ix].mom().betaVec());
57        FourMomentum pProton = boost.transform(pp.mom());
58        pL = boost.transform(pL);
59        LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pL.betaVec());
60        pProton = boost2.transform(pProton);
61        const double cosp = -pL.p3().unit().dot(pProton.p3().unit());
62        _h[2]->fill(cosp);
63      }
64    }
65
66
67    /// Normalise histograms etc., after the run
68    void finalize() {
69      normalize(_h, 1.0, false);
70    }
71
72    /// @}
73
74
75    /// @name Histograms
76    /// @{
77    Histo1DPtr _h[3];
78    const map<PdgId,unsigned int> mode   = { { 2212,1}, {-3122,1}, {-321,1} };
79    const map<PdgId,unsigned int> modeCC = { {-2212,1}, { 3122,1}, { 321,1} };
80    /// @}
81
82
83  };
84
85
86  RIVET_DECLARE_PLUGIN(BESII_2004_I650570);
87
88}