Rivet analyses referenceBESII_2004_I650570Mass and angular distributions in $J/\psi\to pK^-\bar\Lambda$ +c.c.Experiment: BESII (BEPC) Inspire ID: 650570 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
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}
|