Loading [MathJax]/jax/output/CommonHTML/jax.js
rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

OPAL_1998_I474012

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
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief b-baryon polarization
 9  class OPAL_1998_I474012 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(OPAL_1998_I474012);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21
22      // Initialise and register projections
23      declare(UnstableParticles(), "UFS");
24
25      // Book histograms
26      book(_h_El   , "El",   45, 0.,45.0);
27      book(_h_Ev   , "Ev",   45, 0.,45.0);
28      book(_h_ratio, "ratio",20, 0.,10.0);
29
30    }
31
32    void findDecayProducts(Particle p, Particles & lep, Particles & nu) {
33      for (const Particle & child : p.children()) {
34        if (PID::isHadron(child.pid())) continue;
35        if (child.abspid()==11 or child.abspid()==13)
36          lep.push_back(child);
37        else if (child.abspid()==12 or child.abspid()==14)
38          nu.push_back(child);
39        else if (child.abspid()!=15)
40          findDecayProducts(child,lep,nu);
41      }
42    }
43
44    /// Perform the per-event analysis
45    void analyze(const Event& event) {
46      const FinalState& ufs = apply<UnstableParticles>(event, "UFS");
47      // loop over weakly decaying b-baryons
48      for (const Particle& p : ufs.particles(Cuts::abspid==5122)) {
49        Particles lep,nu;
50        findDecayProducts(p,lep,nu);
51        if(lep.size()!=1 || nu.size()!=1) continue;
52        _h_El   ->fill(lep[0].momentum().t());
53        _h_Ev   ->fill(nu [0].momentum().t());
54        _h_ratio->fill(nu [0].momentum().t()/lep[0].momentum().t());
55      }
56    }
57
58
59    /// Normalise histograms etc., after the run
60    void finalize() {
61      normalize(_h_El   );
62      normalize(_h_Ev   );
63      normalize(_h_ratio);
64      if (_h_El->effNumEntries()!=0. and _h_Ev->effNumEntries()!=0.) {
65        const double Ev  = _h_Ev->xMean();
66        const double El  = _h_El->xMean();
67        const double dEv = _h_Ev->xStdErr();
68        const double dEl = _h_El->xStdErr();
69        const double ratio = Ev/El;
70        const double dr    = (El*dEv-Ev*dEl)/sqr(El);
71        const double rho = 0.091;
72        const double  P = 7. - 20./(2. + ratio) + 10.*rho*ratio*(-4. + 3.*ratio)/sqr(2.+ratio);
73        const double dP = (20.*(2. + ratio + rho*(-4. + 8.*ratio)))/pow(2.+ratio,3)*dr;
74       	BinnedEstimatePtr<string> h_pol;
75        book(h_pol, 1,1,1);
76       	h_pol->bin(1).set(P, dP);
77      }
78    }
79
80    /// @}
81
82
83    /// @name Histograms
84    /// @{
85    Histo1DPtr _h_El, _h_Ev, _h_ratio;
86    /// @}
87
88
89  };
90
91
92  RIVET_DECLARE_PLUGIN(OPAL_1998_I474012);
93
94
95}