Rivet analyses referenceCLEO_1990_I281039$D_1(2420)^0$ and $D_2^*(2460)^0$ decay angle distributionsExperiment: CLEO (CESR) Inspire ID: 281039 Status: VALIDATED Authors:
Beam energies: (5.2, 5.2) GeV
Measurement of the $D_1(2420)^0$ and $D^*_2(2460)^0$ mesons at 10.5 GeV. The decay angle of the $D^{+*}$ with respect to the $D_1(2420)^0$ or $D^*_2(2460)^0$ direction in the rest frame of the parent hadron, is measured. This gives information on the spin of the parent. Source code: CLEO_1990_I281039.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5#include "Rivet/Projections/FastJets.hh"
6
7namespace Rivet {
8
9
10 /// @brief D_1 D*2 decay angle
11 class CLEO_1990_I281039 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_1990_I281039);
16
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23
24 // Initialise and register projections
25 declare(UnstableParticles(), "UFS");
26
27 // Book histograms
28 book(_h_D1, 1, 1, 1);
29 book(_h_D2, 1, 1, 2);
30
31 }
32
33 /// Recursively walk the decay tree to find decay products of @a p
34 void findDecayProducts(Particle mother, Particles & dstar, Particles & pi,unsigned int & ncount) {
35 for(const Particle & p: mother.children()) {
36 if(p.abspid()==413)
37 dstar.push_back(p);
38 else if(p.abspid()==211)
39 pi.push_back(p);
40 ncount +=1;
41 }
42 }
43
44 /// Perform the per-event analysis
45 void analyze(const Event& event) {
46 for(const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==425||
47 Cuts::abspid==10423)) {
48 // decay products
49 Particles dstar,pi;
50 unsigned int ncount=0;
51 findDecayProducts(p,dstar,pi,ncount);
52 if(ncount!=2 || dstar.size()!=1 || pi.size()!=1) continue;
53 if(dstar[0].pid()/p.pid()<0) continue;
54 LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
55 Vector3 axis = boost.transform(dstar[0].momentum()).p3().unit();
56 double cosL = axis.dot(p.momentum().p3().unit());
57 // decay angles
58 if(p.abspid()==425)
59 _h_D2->fill(cosL);
60 else
61 _h_D1->fill(cosL);
62 }
63 }
64
65
66 /// Normalise histograms etc., after the run
67 void finalize() {
68
69 normalize(_h_D1);
70 normalize(_h_D2);
71
72 }
73
74 /// @}
75
76
77 /// @name Histograms
78 /// @{
79 Histo1DPtr _h_D1,_h_D2;
80 /// @}
81
82
83 };
84
85
86 RIVET_DECLARE_PLUGIN(CLEO_1990_I281039);
87
88
89}
|