rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2013_I1217425

Mass 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:
  • Peter Richardson
References:
  • Phys.Rev.D 87 (2013) 9, 092004
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing B0/Bbar0, original e+e- at Upsilon(4S)

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}