Rivet analyses referenceBELLE_2021_I1809180Helicity and decay angles for the decay $\Xi_c(2790)^+\to\Xi_c^{*0}(\to\Xi_c^+\pi^-)\pi^+$'Experiment: BELLE (KEKB) Inspire ID: 1809180 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Measurement of the helicity and decay angles for the decay $\Xi_c(2790)^+\to\Xi_c^{*0}(\to\Xi_c^+\pi^-)\pi^+$. The PDG code for this particle is not specified and which multiplet it belongs to is unclear. The default is to use 204232, i.e. it is in the same multiplet as the Roper resonance, but this can be changed using the PID option. Source code: BELLE_2021_I1809180.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief Xi_c(2970) decays
9 class BELLE_2021_I1809180 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2021_I1809180);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // set the PDG code
22 _pid = getOption<double>("PID", 103242);
23 // projections
24 declare(UnstableParticles(Cuts::abspid==_pid), "UFS");
25 for(unsigned int ix=0;ix<2;++ix)
26 book(_h[ix],1+ix,1,1);
27 }
28
29
30 /// Perform the per-event analysis
31 void analyze(const Event& event) {
32 // Get beams and average beam momentum
33 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
34 for (const Particle& p : ufs.particles()) {
35 // xp cut
36 double xp = p.momentum().p3().mod()/sqrt(0.25*sqrtS()-p.mass2());
37 if (xp<.7) continue;
38 // find the decay products
39 // first decay
40 if(p.children().size()!=2) continue;
41 Particle XiStar,pi1;
42 if(p.children()[0].abspid()==4314 &&
43 p.children()[1].abspid()== 211) {
44 XiStar = p.children()[0];
45 pi1 = p.children()[1];
46 }
47 else if(p.children()[1].abspid()==4314 &&
48 p.children()[0].abspid()== 211) {
49 XiStar = p.children()[1];
50 pi1 = p.children()[0];
51 }
52 else
53 continue;
54 Vector3 axis1 = p.momentum().p3().unit();
55 LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
56 FourMomentum ppi1 = boost.transform(pi1.momentum());
57 _h[0]->fill(axis1.dot(ppi1.p3().unit()));
58 Particle pi2;
59 // second decay
60 if(XiStar.children()[0].abspid()==4232 &&
61 XiStar.children()[1].abspid()== 211) {
62 pi2 = XiStar.children()[1];
63 }
64 else if(XiStar.children()[1].abspid()== 4232 &&
65 XiStar.children()[0].abspid()== 211) {
66 pi2 = XiStar.children()[0];
67 }
68 else
69 continue;
70 FourMomentum pXiStar = boost.transform(XiStar.momentum());
71 FourMomentum ppi2 = boost.transform(pi2.momentum());
72 LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pXiStar.betaVec());
73 ThreeVector axis2 = pXiStar.p3().unit();
74 ppi2 = boost2.transform(ppi2);
75 _h[1]->fill(axis2.dot(ppi2.p3().unit()));
76 }
77 }
78
79
80 /// Normalise histograms etc., after the run
81 void finalize() {
82 for(unsigned int ix=0;ix<2;++ix)
83 normalize(_h[ix]);
84 }
85
86 /// @}
87
88
89 /// @name Histograms
90 /// @{
91 int _pid;
92 Histo1DPtr _h[2];
93 /// @}
94
95
96 };
97
98
99 RIVET_DECLARE_PLUGIN(BELLE_2021_I1809180);
100
101}
|