Rivet analyses referenceBELLE_2007_I723916Decay angles for $\Lambda_c(2880)^+\to\Sigma_c^{0,++}\pi^{+,-}$Experiment: BELLE (KEKB) Inspire ID: 723916 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Measurement of the helicity and decay angles for the decay $\Lambda_c(2880)^+\to\Sigma_c^{0,++}\pi^{+,-}$. The PDG code for this particle is not specified and which multiplet it belongs to is unclear. The default is to use, 4126, i.e the first spin $\frac{5}{2}$ state Source code: BELLE_2007_I723916.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5
6namespace Rivet {
7
8
9 /// @brief Lambda_c(2880) -> Sigma_c pi
10 class BELLE_2007_I723916 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2007_I723916);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 declare(Beam(), "Beams");
23 // set the PDG code
24 _pid = getOption<double>("PID", 4126);
25 // projections
26 declare(UnstableParticles(Cuts::abspid==_pid), "UFS");
27 for(unsigned int ix=0;ix<2;++ix)
28 book(_h[ix],1,1,1+ix);
29 }
30
31
32 /// Perform the per-event analysis
33 void analyze(const Event& event) {
34 // get the axis, direction of incoming electron
35 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
36 Vector3 axis;
37 if(beams.first.pid()>0)
38 axis = beams.first .momentum().p3().unit();
39 else
40 axis = beams.second.momentum().p3().unit();
41 // Get beams and average beam momentum
42 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
43 for (const Particle& p : ufs.particles()) {
44 // xp cut
45 double xp = p.momentum().p3().mod()/sqrt(0.25*sqrtS()-p.mass2());
46 if (xp<.7) continue;
47 // find the decay products
48 int sign = p.pid()/p.abspid();
49 // first decay
50 if(p.children().size()!=2) continue;
51 Particle Sigma,pi1;
52 if((p.children()[0].abspid()== 4222*sign &&
53 p.children()[1].abspid()==-211 *sign) ||
54 (p.children()[0].abspid()== 4112*sign &&
55 p.children()[1].abspid()== 211 *sign) ) {
56 Sigma = p.children()[0];
57 pi1 = p.children()[1];
58 }
59 else if((p.children()[1].abspid()== 4222*sign &&
60 p.children()[0].abspid()==-211 *sign) ||
61 (p.children()[1].abspid()== 4112*sign &&
62 p.children()[0].abspid()== 211 *sign) ) {
63 Sigma = p.children()[1];
64 pi1 = p.children()[0];
65 }
66 else
67 continue;
68 Vector3 axis1 = p.momentum().p3().unit();
69 LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
70 Vector3 axis2 = boost.transform(pi1.momentum()).p3().unit();
71 _h[0]->fill(axis1.dot(axis2));
72 Vector3 axis3 = axis.cross(axis1).unit();
73 Vector3 axis4 = axis1.cross(axis2).unit();
74 double phi = acos(axis3.dot(axis4));
75 _h[1]->fill(phi);
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_2007_I723916);
100
101}
|