Rivet analyses referenceBABAR_2013_I1217425Mass distributions in the decay $\bar{B}^0\to\Lambda_c^+\bar{p}\pi^+\pi^-$Experiment: BABAR (PEP-II) Inspire ID: 1217425 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurements of mass distributions in $\bar{B}^0\to\Lambda_c^+\bar{p}\pi^+\pi^-$ and modes with intermediate states. The data were read from the plots in the paper but are background subtracted and efficiency corrected. Source code: BABAR_2013_I1217425.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 Bbar0 -> Lambda_c+ pbar pi+ pi-
10 class BABAR_2013_I1217425 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2013_I1217425);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // Initialise and register projections
23 UnstableParticles ufs = UnstableParticles(Cuts::abspid==511);
24 declare(ufs, "UFS");
25 DecayedParticles B0(ufs);
26 // treat Lambda_c, Sigma_c and sigma_c* as stable
27 B0.addStable( 4122);
28 B0.addStable(-4122);
29 B0.addStable( 4112);
30 B0.addStable(-4112);
31 B0.addStable( 4212);
32 B0.addStable(-4212);
33 B0.addStable( 4222);
34 B0.addStable(-4222);
35 B0.addStable( 4114);
36 B0.addStable(-4114);
37 B0.addStable( 4214);
38 B0.addStable(-4214);
39 B0.addStable( 4224);
40 B0.addStable(-4224);
41 declare(B0, "B0");
42 // histograms
43 for(unsigned int ix=0;ix<5;++ix) {
44 for(unsigned int iy=0;iy<6;++iy) {
45 if( (ix<3 && iy>=3) or (ix==4 && iy>=4) ) continue;
46 book(_h[ix][iy],1+ix,1,1+iy);
47 }
48 }
49 }
50
51
52 void analyze(const Event& event) {
53 static const map<PdgId,unsigned int> & mode1 = { { 4112,1},{-2212,1}, { 211,1}};
54 static const map<PdgId,unsigned int> & mode1CC = { {-4112,1},{ 2212,1}, {-211,1}};
55 static const map<PdgId,unsigned int> & mode2 = { { 4222,1},{-2212,1}, {-211,1}};
56 static const map<PdgId,unsigned int> & mode2CC = { {-4222,1},{ 2212,1}, { 211,1}};
57 static const map<PdgId,unsigned int> & mode3 = { { 4224,1},{-2212,1}, {-211,1}};
58 static const map<PdgId,unsigned int> & mode3CC = { {-4224,1},{ 2212,1}, { 211,1}};
59 static const map<PdgId,unsigned int> & mode4 = { { 4122,1},{-2212,1}, { 211,1}, {-211,1}};
60 static const map<PdgId,unsigned int> & mode4CC = { {-4122,1},{ 2212,1}, { 211,1}, {-211,1}};
61 DecayedParticles B0 = apply<DecayedParticles>(event, "B0");
62 // loop over particles
63 for(unsigned int ix=0;ix<B0.decaying().size();++ix) {
64 int sign = 1,imode=-1, ibaryon,ipi=-211;
65 if (B0.decaying()[ix].pid()<0 && B0.modeMatches(ix,3,mode1)) {
66 sign=1;
67 imode=0;
68 ibaryon=4112;
69 ipi=211;
70 }
71 else if (B0.decaying()[ix].pid()>0 && B0.modeMatches(ix,3,mode1CC)) {
72 sign=-1;
73 imode=0;
74 ibaryon=4112;
75 ipi=211;
76 }
77 else if (B0.decaying()[ix].pid()<0 && B0.modeMatches(ix,3,mode2)) {
78 sign=1;
79 imode=1;
80 ibaryon=4222;
81 }
82 else if (B0.decaying()[ix].pid()>0 && B0.modeMatches(ix,3,mode2CC)) {
83 sign=-1;
84 imode=1;
85 ibaryon=4222;
86 }
87 else if (B0.decaying()[ix].pid()<0 && B0.modeMatches(ix,3,mode3)) {
88 sign=1;
89 imode=2;
90 ibaryon=4224;
91 }
92 else if (B0.decaying()[ix].pid()>0 && B0.modeMatches(ix,3,mode3CC)) {
93 sign=-1;
94 imode=2;
95 ibaryon=4224;
96 }
97 else if (B0.decaying()[ix].pid()<0 && B0.modeMatches(ix,4,mode4)) {
98 sign=1;
99 imode=3;
100 ibaryon=4122;
101 }
102 else if (B0.decaying()[ix].pid()>0 && B0.modeMatches(ix,4,mode4CC)) {
103 sign=-1;
104 imode=3;
105 ibaryon=4122;
106 }
107 else
108 continue;
109 const Particle & SigC = B0.decayProducts()[ix].at( sign*ibaryon)[0];
110 const Particle & pbar = B0.decayProducts()[ix].at(-sign*2212 )[0];
111 const Particle & pim = B0.decayProducts()[ix].at( sign*ipi )[0];
112 if(imode<=2) {
113 _h[imode][0]->fill((SigC.momentum()+pim .momentum()).mass());
114 _h[imode][1]->fill((SigC.momentum()+pbar.momentum()).mass());
115 _h[imode][2]->fill((pbar.momentum()+pim .momentum()).mass());
116 }
117 else {
118 const Particle & pip = B0.decayProducts()[ix].at(-sign*ipi )[0];
119 _h[imode][0]->fill((SigC.momentum()+pip .momentum()).mass());
120 _h[imode][1]->fill((SigC.momentum()+pim .momentum()).mass());
121 _h[imode][2]->fill((pbar.momentum()+pip .momentum()).mass());
122 _h[imode][3]->fill((pbar.momentum()+pim .momentum()).mass());
123 FourMomentum ppipi = pip .momentum()+pim .momentum();
124 _h[imode][4]->fill(ppipi.mass());
125 FourMomentum plam = SigC.momentum()+pbar.momentum();
126 _h[imode][5]->fill(plam.mass());
127 _h[4][0]->fill((ppipi+pbar.momentum()).mass());
128 _h[4][1]->fill((ppipi+SigC.momentum()).mass());
129 _h[4][2]->fill((plam+pim.momentum()).mass());
130 _h[4][3]->fill((plam+pip.momentum()).mass());
131 }
132 }
133 }
134
135
136 /// Normalise histograms etc., after the run
137 void finalize() {
138 for(unsigned int ix=0;ix<5;++ix) {
139 for(unsigned int iy=0;iy<6;++iy) {
140 if( (ix<3 && iy>=3) or (ix==4 && iy>=5) ) continue;
141 normalize(_h[ix][iy],1.,false);
142 }
143 }
144 }
145
146 /// @}
147
148
149 /// @name Histograms
150 /// @{
151 Histo1DPtr _h[5][6];
152 /// @}
153
154
155 };
156
157
158 RIVET_DECLARE_PLUGIN(BABAR_2013_I1217425);
159
160}
|