Rivet analyses referenceBELLE_2024_I2778312Mass and angular distributions in B−→D0π−π0 in the ρ regionExperiment: BELLE (KEKB) Inspire ID: 2778312 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass and angular distribution in B−→D0π−π0 decays in the ρ region Source code: BELLE_2024_I2778312.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 B -> D rho
10 class BELLE_2024_I2778312 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2024_I2778312);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 UnstableParticles ufs = UnstableParticles(Cuts::pid==-521);
23 declare(ufs, "UFS");
24 DecayedParticles BP(ufs);
25 BP.addStable(421);
26 BP.addStable(111);
27 declare(BP, "BP");
28 for(unsigned int ix=0;ix<2;++ix)
29 book(_h[ix],1,1,1+ix);
30 }
31
32
33 /// Perform the per-event analysis
34 void analyze(const Event& event) {
35 DecayedParticles BP = apply<DecayedParticles>(event, "BP");
36 for (unsigned int ix=0; ix<BP.decaying().size(); ++ix) {
37 if ( ! BP.modeMatches(ix,3,mode)) continue;
38 const Particle& pim = BP.decayProducts()[ix].at(-211)[0];
39 const Particle& pi0 = BP.decayProducts()[ix].at( 111)[0];
40 // compute the helicity angles
41 LorentzTransform boost1 = LorentzTransform::mkFrameTransformFromBeta(BP.decaying()[ix].mom().betaVec());
42
43 // pi pi mass and angle
44 FourMomentum ppipi = pim.mom()+pi0.mom();
45 ppipi = boost1.transform(ppipi);
46 LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(ppipi.betaVec());
47 FourMomentum pPi = boost1.transform(pim.mom());
48 FourMomentum pPi3 = boost2.transform(pPi);
49 double cTheta = -pPi3.p3().unit().dot(ppipi.p3().unit());
50 if(cTheta>0.7) continue;
51 _h[0]->fill(cTheta);
52 _h[1]->fill(ppipi.mass()/GeV);
53 }
54 }
55
56
57 /// Normalise histograms etc., after the run
58 void finalize() {
59 for(unsigned int ix=0;ix<2;++ix)
60 normalize(_h[ix],1.,false);
61 }
62
63 /// @}
64
65
66 /// @name Histograms
67 /// @{
68 Histo1DPtr _h[2];
69 const map<PdgId,unsigned int> mode= { {-211,1}, {111,1}, {421,1}};
70 /// @}
71
72
73 };
74
75
76 RIVET_DECLARE_PLUGIN(BELLE_2024_I2778312);
77
78}
|