Rivet analyses referenceBELLE_2022_I2160445Mass distributions in $\Lambda_c^+\to p K^0_S K^0_S$ and $\Lambda_c^+\to p K^0_S \eta$Experiment: BELLE (KEKB) Inspire ID: 2160445 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY
Measurement of the mass distributions in the decays $\Lambda_c^+\to p K^0_S K^0_S$ and $\Lambda_c^+\to p K^0_S \eta$ by BELLE. The data were read from the plots in the paper but have been corrected for efficiency/acceptance. Source code: BELLE_2022_I2160445.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4#include "Rivet/Projections/DecayedParticles.hh"
5
6namespace Rivet {
7
8
9 /// @brief Lambda_c+ -> p 2K0S and p K0S eta
10 class BELLE_2022_I2160445 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2022_I2160445);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // Initialise and register projections
23 UnstableParticles ufs = UnstableParticles(Cuts::abspid==4122);
24 declare(ufs, "UFS");
25 DecayedParticles LAMBDAC(ufs);
26 LAMBDAC.addStable(PID::PI0);
27 LAMBDAC.addStable(PID::K0S);
28 LAMBDAC.addStable(PID::ETA);
29 declare(LAMBDAC, "LAMBDAC");
30 // histograms
31 for(unsigned int ix=0;ix<2;++ix)
32 for(unsigned int iy=0;iy<2+ix;++iy)
33 book(_h[ix][iy],1+ix,1,1+iy);
34 }
35
36
37 /// Perform the per-event analysis
38 void analyze(const Event& event) {
39 static const map<PdgId,unsigned int> & mode1 = { { PID::PROTON,1}, {310,2}};
40 static const map<PdgId,unsigned int> & mode1CC = { {-PID::PROTON,1}, {310,2}};
41 static const map<PdgId,unsigned int> & mode2 = { { PID::PROTON,1}, {310,1}, { 221,1}};
42 static const map<PdgId,unsigned int> & mode2CC = { {-PID::PROTON,1}, {310,1}, { 221,1}};
43 DecayedParticles LAMBDAC = apply<DecayedParticles>(event, "LAMBDAC");
44 // loop over particles
45 for(unsigned int ix=0;ix<LAMBDAC.decaying().size();++ix) {
46 int sign = 1, mode=-1;
47 if (LAMBDAC.decaying()[ix].pid()>0 && LAMBDAC.modeMatches(ix,3,mode1)) {
48 sign=1;
49 mode=0;
50 }
51 else if (LAMBDAC.decaying()[ix].pid()<0 && LAMBDAC.modeMatches(ix,3,mode1CC)) {
52 sign=-1;
53 mode=0;
54 }
55 else if (LAMBDAC.decaying()[ix].pid()>0 && LAMBDAC.modeMatches(ix,3,mode2)) {
56 sign=1;
57 mode=1;
58 }
59 else if (LAMBDAC.decaying()[ix].pid()<0 && LAMBDAC.modeMatches(ix,3,mode2CC)) {
60 sign=-1;
61 mode=1;
62 }
63 else
64 continue;
65 const Particle & pp = LAMBDAC.decayProducts()[ix].at( sign*PID::PROTON)[0];
66 const Particles & K0 = LAMBDAC.decayProducts()[ix].at( 310);
67 if(mode==0) {
68 _h[0][0]->fill((pp .momentum()+K0[0].momentum()).mass2());
69 _h[0][0]->fill((pp .momentum()+K0[1].momentum()).mass2());
70 _h[0][1]->fill((K0[0].momentum()+K0[1].momentum()).mass2());
71 }
72 else {
73 const Particle & eta = LAMBDAC.decayProducts()[ix].at( 221)[0];
74 _h[1][0]->fill((K0[0].momentum()+eta.momentum()).mass2());
75 _h[1][1]->fill((pp.momentum()+ K0[0].momentum()).mass2());
76 _h[1][2]->fill((pp.momentum()+eta.momentum()).mass2());
77 }
78 }
79 }
80
81
82 /// Normalise histograms etc., after the run
83 void finalize() {
84 for(unsigned int ix=0;ix<2;++ix)
85 for(unsigned int iy=0;iy<2+ix;++iy)
86 normalize(_h[ix][iy],1.,false);
87 }
88
89 /// @}
90
91
92 /// @name Histograms
93 /// @{
94 Histo1DPtr _h[2][3];
95 /// @}
96
97
98 };
99
100
101 RIVET_DECLARE_PLUGIN(BELLE_2022_I2160445);
102
103}
|