Rivet analyses
Polarization of b-baryons at LEP1
Experiment: OPAL (LEP)
Inspire ID: 474012
Status: VALIDATED
Authors: - Peter Richardson
References: - Phys.Lett. B444 (1998) 539-554
Beams: e- e+
Beam energies: (45.6, 45.6)GeV
Run details: - e+e- > hadrons
Measurement of the polarization of b-baryons, mainly Λb at LEP1. The result is obtained by measuring the ratio of the neutrino (missing energy) to the charged lepton energy, rather than the more sophisticated fit used in the paper.
Source
code:OPAL_1998_I474012.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
namespace Rivet {
/// @brief b-baryon polarization
class OPAL_1998_I474012 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1998_I474012);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
declare(UnstableParticles(), "UFS");
// Book histograms
book(_h_El , "El", 45, 0.,45.0);
book(_h_Ev , "Ev", 45, 0.,45.0);
book(_h_ratio, "ratio",20, 0.,10.0);
}
void findDecayProducts(Particle p, Particles & lep, Particles & nu) {
for (const Particle & child : p.children()) {
if (PID::isHadron(child.pid())) continue;
if (child.abspid()==11 or child.abspid()==13)
lep.push_back(child);
else if (child.abspid()==12 or child.abspid()==14)
nu.push_back(child);
else if (child.abspid()!=15)
findDecayProducts(child,lep,nu);
}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
const FinalState& ufs = apply<UnstableParticles>(event, "UFS");
// loop over weakly decaying b-baryons
for (const Particle& p : ufs.particles(Cuts::abspid==5122)) {
Particles lep,nu;
findDecayProducts(p,lep,nu);
if(lep.size()!=1 || nu.size()!=1) continue;
_h_El ->fill(lep[0].momentum().t());
_h_Ev ->fill(nu [0].momentum().t());
_h_ratio->fill(nu [0].momentum().t()/lep[0].momentum().t());
}
}
/// Normalise histograms etc., after the run
void finalize() {
normalize(_h_El );
normalize(_h_Ev );
normalize(_h_ratio);
if (_h_El->effNumEntries()!=0. and _h_Ev->effNumEntries()!=0.) {
const double Ev = _h_Ev->xMean();
const double El = _h_El->xMean();
const double dEv = _h_Ev->xStdErr();
const double dEl = _h_El->xStdErr();
const double ratio = Ev/El;
const double dr = (El*dEv-Ev*dEl)/sqr(El);
const double rho = 0.091;
const double P = 7. - 20./(2. + ratio) + 10.*rho*ratio*(-4. + 3.*ratio)/sqr(2.+ratio);
const double dP = (20.*(2. + ratio + rho*(-4. + 8.*ratio)))/pow(2.+ratio,3)*dr;
BinnedEstimatePtr<string> h_pol;
book(h_pol, 1,1,1);
h_pol->bin(1).set(P, dP);
}
}
/// @}
/// @name Histograms
/// @{
Histo1DPtr _h_El, _h_Ev, _h_ratio;
/// @}
};
RIVET_DECLARE_PLUGIN(OPAL_1998_I474012);
}