Rivet analyses referenceBABAR_2004_I656424Helicity angle in $B\to D^+_{s1}(2460) \bar{D}$ decaysExperiment: BABAR (PEP-II) Inspire ID: 656424 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Helicity angle in $B\to D^+_{s1}(2460) \bar{D}$ decays. The efficiency corrected, background subtracted data was read from Figure 3 in the paper. Source code: BABAR_2004_I656424.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief B -> Ds1(2460) Dbar
9 class BABAR_2004_I656424 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2004_I656424);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // Initialise and register projections
22 UnstableParticles ufs = UnstableParticles(Cuts::abspid==511||
23 Cuts::abspid==521);
24 declare(ufs, "UFS");
25 // histos
26 book(_h,1,1,1);
27 }
28
29
30 /// Perform the per-event analysis
31 void analyze(const Event& event) {
32 Particles BB = apply<UnstableParticles>(event, "UFS").particles();
33 for(const Particle & p : BB) {
34 if(p.children().size()!=2) continue;
35 int sign = p.pid()/p.abspid();
36 int iD = -sign*(p.abspid()-100);
37 Particle Ds1;
38 if(p.children()[0].pid()==sign*20433 &&
39 p.children()[1].pid()==iD) {
40 Ds1=p.children()[0];
41 }
42 else if(p.children()[1].pid()==sign*20433 &&
43 p.children()[0].pid()==iD) {
44 Ds1=p.children()[1];
45 }
46 else
47 continue;
48 // find children of the Ds1 meson
49 Particle Ds;
50 if(Ds1.children().size()!=2) continue;
51 if(Ds1.children()[0].abspid()==431 &&
52 Ds1.children()[1].abspid()==22)
53 Ds = Ds1.children()[0];
54 else if (Ds1.children()[1].abspid()==431 &&
55 Ds1.children()[0].abspid()==22)
56 Ds = Ds1.children()[1];
57 else
58 continue;
59 // boost to rest frame
60 LorentzTransform boostB = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
61 FourMomentum pDs1 = boostB.transform(Ds1.momentum());
62 FourMomentum pDs = boostB.transform(Ds .momentum());
63 LorentzTransform boostDs1 = LorentzTransform::mkFrameTransformFromBeta(pDs1.betaVec());
64 pDs = boostDs1.transform(pDs);
65 Vector3 axis = pDs1.p3().unit();
66 double cTheta = axis.dot(pDs.p3().unit());
67 _h->fill(cTheta);
68 }
69 }
70
71
72 /// Normalise histograms etc., after the run
73 void finalize() {
74 normalize(_h,1.,false);
75 }
76
77 /// @}
78
79
80 /// @name Histograms
81 /// @{
82 Histo1DPtr _h;
83 /// @}
84
85
86 };
87
88
89 RIVET_DECLARE_PLUGIN(BABAR_2004_I656424);
90
91}
|