Rivet analyses
Decay asymmetries in the decay of Ω− baryons produced in Ξc0 and Ωc0 decays
Experiment: BABAR (PEP-II)
Inspire ID: 719581
Status: VALIDATED
Authors: - Peter Richardson
References: - Phys.Rev.Lett. 97 (2006) 112001
Beams: * *
Beam energies: ANY
Run details: - Any process producing Xi_c0 and Omega_c0 baryons
Measurement of the decay asymmetries in Ξc0 → Ω−K+ and Ωc− → Ω−π+ by the BaBar experiment. In both cases the decay mode Ω− → Λ0K− was used. This analysis is useful for testing spin correlations in hadron decays.
Source
code:BABAR_2006_I719581.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief Omega decay asymmetries
class BABAR_2006_I719581 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2006_I719581);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
declare(UnstableParticles(), "UFS");
// Book histograms
book(_h_ctheta_xic, 1, 1, 1);
book(_h_ctheta_omegac, 2, 1, 1);
}
/// Perform the per-event analysis
void analyze(const Event& event) {
// loop over Xi_c0 baryons and Omega_c0 baryons
for (const Particle& baryon :
apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid == 4132 || Cuts::abspid == 4332)) {
int sign = baryon.pid() / baryon.abspid();
if (baryon.children().size() != 2) continue;
Particle baryon1, meson1;
if (baryon.abspid() == 4132) {
if (baryon.children()[0].pid() == sign * 3334 && baryon.children()[1].pid() == sign * 321) {
baryon1 = baryon.children()[0];
meson1 = baryon.children()[1];
}
else if (baryon.children()[1].pid() == sign * 3332 && baryon.children()[0].pid() == sign * 321) {
baryon1 = baryon.children()[1];
meson1 = baryon.children()[0];
}
else
continue;
}
else {
if (baryon.children()[0].pid() == sign * 3334 && baryon.children()[1].pid() == sign * 211) {
baryon1 = baryon.children()[0];
meson1 = baryon.children()[1];
}
else if (baryon.children()[1].pid() == sign * 3334 && baryon.children()[0].pid() == sign * 211) {
baryon1 = baryon.children()[1];
meson1 = baryon.children()[0];
}
else
continue;
}
Particle baryon2, meson2;
if (baryon1.children()[0].pid() == sign * 3122 && baryon1.children()[1].pid() == -sign * 321) {
baryon2 = baryon1.children()[0];
meson2 = baryon1.children()[1];
}
else if (baryon1.children()[1].pid() == sign * 3122 && baryon1.children()[0].pid() == -sign * 321) {
baryon2 = baryon1.children()[1];
meson2 = baryon1.children()[0];
}
else
continue;
// first boost to the Xic/Omegac rest frame
LorentzTransform boost1 = LorentzTransform::mkFrameTransformFromBeta(baryon.momentum().betaVec());
FourMomentum pbaryon1 = boost1.transform(baryon1.momentum());
FourMomentum pbaryon2 = boost1.transform(baryon2.momentum());
// to omega rest frame
LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pbaryon1.betaVec());
Vector3 axis = pbaryon1.p3().unit();
FourMomentum pp = boost2.transform(pbaryon2);
// calculate angle
double cTheta = pp.p3().unit().dot(axis);
if (baryon.abspid() == 4132)
_h_ctheta_xic->fill(cTheta, 1.);
else
_h_ctheta_omegac->fill(cTheta, 1.);
}
}
/// Normalise histograms etc., after the run
void finalize() {
normalize(_h_ctheta_xic);
normalize(_h_ctheta_omegac);
}
/// @}
/// @name Histograms
/// @{
Histo1DPtr _h_ctheta_xic, _h_ctheta_omegac;
/// @}
};
RIVET_DECLARE_PLUGIN(BABAR_2006_I719581);
}