Rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### BABAR_2005_S6181155

Production and decay of $\Xi^0_c$ at BABAR.
Experiment: BaBar (PEP-II)
Inspire ID: 679961
Status: VALIDATED
Authors:
• Peter Richardson
References:
• Phys.Rev.Lett. 95 (2005) 142003
• hep-ex/0504014
Beams: e+ e-
Beam energies: (3.5, 8.0); (3.5, 7.9) GeV
Run details:
• $e^+ e^-$ analysis on the $\Upsilon(4S)$ resonance, with CoM boosts of 8.0 GeV ($e^-$) and 3.5 GeV ($e^+$)

Analysis of $\Xi_c^0$ production in B decays and from the $c\bar{c}$ continuum, with the $\Xi_c^0$ decaying into $\Omega^- K^+$ and $\Xi^- \pi^+$ final states measured using 116.1 $\text{fb}^{-1}$ of data collected by the BABAR detector. The normalisation of the data as been modifed from that presented in the original paper in order to produce a differential cross section rather than the cross section in each bin. In addition to the data presented in the paper plots are alos made with unit normalisation which can be more useful for Monte Carlo tuning.

Source code: BABAR_2005_S6181155.cc
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 // -*- C++ -*- #include "Rivet/Analysis.hh" #include "Rivet/Projections/Beam.hh" #include "Rivet/Projections/UnstableFinalState.hh" namespace Rivet { /// @brief BABAR Xi_c baryons from fragmentation /// @author Peter Richardson class BABAR_2005_S6181155 : public Analysis { public: BABAR_2005_S6181155() : Analysis("BABAR_2005_S6181155") { } void init() { declare(Beam(), "Beams"); declare(UnstableFinalState(), "UFS"); _histOnResonanceA = bookHisto1D(1,1,1); _histOnResonanceB = bookHisto1D(2,1,1); _histOffResonance = bookHisto1D(2,1,2); _sigma = bookHisto1D(3,1,1); _histOnResonanceA_norm = bookHisto1D(4,1,1); _histOnResonanceB_norm = bookHisto1D(5,1,1); _histOffResonance_norm = bookHisto1D(5,1,2); } void analyze(const Event& e) { const double weight = e.weight(); // Loop through unstable FS particles and look for charmed mesons/baryons const UnstableFinalState& ufs = apply(e, "UFS"); const Beam beamproj = apply(e, "Beams"); const ParticlePair& beams = beamproj.beams(); const FourMomentum mom_tot = beams.first.momentum() + beams.second.momentum(); const LorentzTransform cms_boost = LorentzTransform::mkFrameTransformFromBeta(mom_tot.betaVec()); const double s = sqr(beamproj.sqrtS()); const bool onresonance = fuzzyEquals(beamproj.sqrtS()/GeV, 10.58, 2E-3); foreach (const Particle& p, ufs.particles()) { // 3-momentum in CMS frame const double mom = cms_boost.transform(p.momentum()).vector3().mod(); // Only looking at Xi_c^0 if (p.abspid() != 4132 ) continue; if (onresonance) { _histOnResonanceA_norm->fill(mom,weight); _histOnResonanceB_norm->fill(mom,weight); } else { _histOffResonance_norm->fill(mom,s/sqr(10.58)*weight); } MSG_DEBUG("mom = " << mom); // off-resonance cross section if (checkDecay(p.genParticle())) { if (onresonance) { _histOnResonanceA->fill(mom,weight); _histOnResonanceB->fill(mom,weight); } else { _histOffResonance->fill(mom,s/sqr(10.58)*weight); _sigma->fill(10.6,weight); } } } } void finalize() { scale(_histOnResonanceA, crossSection()/femtobarn/sumOfWeights()); scale(_histOnResonanceB, crossSection()/femtobarn/sumOfWeights()); scale(_histOffResonance, crossSection()/femtobarn/sumOfWeights()); scale(_sigma , crossSection()/femtobarn/sumOfWeights()); normalize(_histOnResonanceA_norm); normalize(_histOnResonanceB_norm); normalize(_histOffResonance_norm); } private: //@{ /// Histograms Histo1DPtr _histOnResonanceA; Histo1DPtr _histOnResonanceB; Histo1DPtr _histOffResonance; Histo1DPtr _sigma ; Histo1DPtr _histOnResonanceA_norm; Histo1DPtr _histOnResonanceB_norm; Histo1DPtr _histOffResonance_norm; //@} bool checkDecay(const GenParticle* p) { unsigned int nstable = 0, npip = 0, npim = 0; unsigned int nXim = 0, nXip = 0; findDecayProducts(p, nstable, npip, npim, nXip, nXim); int id = p->pdg_id(); // Xi_c if (id == 4132) { if (nstable == 2 && nXim == 1 && npip == 1) return true; } else if (id == -4132) { if (nstable == 2 && nXip == 1 && npim == 1) return true; } return false; } void findDecayProducts(const GenParticle* p, unsigned int& nstable, unsigned int& npip, unsigned int& npim, unsigned int& nXip, unsigned int& nXim) { const GenVertex* dv = p->end_vertex(); /// @todo Use better looping for (GenVertex::particles_out_const_iterator pp = dv->particles_out_const_begin(); pp != dv->particles_out_const_end(); ++pp) { int id = (*pp)->pdg_id(); if (id==3312) { ++nXim; ++nstable; } else if (id == -3312) { ++nXip; ++nstable; } else if(id == 111 || id == 221) { ++nstable; } else if ((*pp)->end_vertex()) { findDecayProducts(*pp, nstable, npip, npim, nXip, nXim); } else { if (id != 22) ++nstable; if (id == 211) ++npip; else if(id == -211) ++npim; } } } }; // The hook for the plugin system DECLARE_RIVET_PLUGIN(BABAR_2005_S6181155); }