Rivet analyses referenceBESIII_2013_I1126137Photon Spectrum in $J/\psi\to3\gamma$ decaysExperiment: BESIII (BEPC) Inspire ID: 1126137 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the photon pectrum in $J/\psi\to3\gamma$ decays by BES. The data was read from the figure in the paper but is corrected. Source code: BESIII_2013_I1126137.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief J/psi -> 3 gamma
9 class BESIII_2013_I1126137 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2013_I1126137);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // projections
22 declare(UnstableParticles(Cuts::pid==443), "UFS");
23 // histos
24 book(_h,1,1,1);
25 book(_c,"TMP/nJPsi");
26 }
27
28
29 /// Perform the per-event analysis
30 void analyze(const Event& event) {
31 // Find the J/psi among the unstables
32 for (const Particle& psi : apply<UnstableParticles>(event, "UFS").particles()) {
33 _c->fill();
34 unsigned int nhadron(0);
35 Particles photons;
36 for(const Particle & child : psi.children()) {
37 if(PID::isHadron(child.pid()))
38 ++nhadron;
39 else if(child.pid()==PID::PHOTON)
40 photons.push_back(child);
41 }
42 if(nhadron==0 && photons.size()==3) {
43 LorentzTransform boost;
44 if (psi.p3().mod() > 1*MeV)
45 boost = LorentzTransform::mkFrameTransformFromBeta(psi.momentum().betaVec());
46 for(const Particle & gamma:photons)
47 _h->fill(2.*boost.transform(gamma.momentum()).E()/psi.mass());
48 }
49 }
50 }
51
52
53 /// Normalise histograms etc., after the run
54 void finalize() {
55 scale(_h, 1e6/3. / *_c);
56 }
57
58 /// @}
59
60
61 /// @name Histograms
62 /// @{
63 Histo1DPtr _h;
64 CounterPtr _c;
65 /// @}
66
67
68 };
69
70
71 RIVET_DECLARE_PLUGIN(BESIII_2013_I1126137);
72
73}
|