rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEOIII_2006_I694869

Cross section for $B_s^{(*)0}\bar{B}_s^{(*)0}$ at $\sqrt{s}=10.859$ GeV
Experiment: CLEOIII (CESR)
Inspire ID: 694869
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 96 (2006) 022002
Beams: e+ e-
Beam energies: (5.4, 5.4) GeV
Run details:
  • e+e- > hadrons

Measurement of the cross section for $B_s^{(*)0}\bar{B}_s^{(*)0}$ at $\sqrt{s}=10.859$ GeV.

Source code: CLEOIII_2006_I694869.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief e+ e- > B*s B*s
 10  class CLEOIII_2006_I694869 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(CLEOIII_2006_I694869);
 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      declare(FinalState(), "FS");
 24      declare(UnstableParticles(Cuts::abspid==533), "UFS");
 25      // histograms
 26      book(_h,1,1,1);
 27    }
 28
 29    void findChildren(const Particle & p,map<long,int> & nRes, int &ncount) {
 30      for (const Particle &child : p.children()) {
 31        if (child.children().empty()) {
 32          nRes[child.pid()]-=1;
 33          --ncount;
 34        }
 35        else {
 36          findChildren(child,nRes,ncount);
 37        }
 38      }
 39    }
 40
 41    /// Perform the per-event analysis
 42    void analyze(const Event& event) {
 43      const FinalState& fs = apply<FinalState>(event, "FS");
 44
 45      map<long,int> nCount;
 46      int ntotal(0);
 47      for (const Particle& p : fs.particles()) {
 48        nCount[p.pid()] += 1;
 49        ++ntotal;
 50      }
 51      // extract botton hadrons
 52      Particles bHadrons=apply<FinalState>(event, "UFS").particles();
 53      for (const Particle& p1 : bHadrons) {
 54        if (p1.pid()<0 || p1.parents()[0].abspid()==533 ) continue;
 55        map<long,int> nRes = nCount;
 56        int ncount = ntotal;
 57        findChildren(p1,nRes,ncount);
 58        bool matched=false;
 59        for (const Particle& p2 : bHadrons) {
 60          if (p1.pid()!=-p2.pid() || p2.parents()[0].abspid()==533 ) continue;
 61          map<long,int> nRes2 = nRes;
 62          int ncount2 = ncount;
 63          findChildren(p2,nRes2,ncount2);
 64          if (ncount2!=0) continue;
 65          matched=true;
 66          for (const auto& val : nRes2) {
 67            if (val.second!=0) {
 68              matched = false;
 69              break;
 70            }
 71          }
 72          if (matched) {
 73            _h->fill("10.859"s);
 74            break;
 75          }
 76      	}
 77      	if(matched) break;
 78      }
 79    }
 80
 81
 82    /// Normalise histograms etc., after the run
 83    void finalize() {
 84      scale(_h,crossSection()/ sumOfWeights() /nanobarn);
 85    }
 86
 87    /// @}
 88
 89
 90    /// @name Histograms
 91    /// @{
 92    BinnedHistoPtr<string> _h;
 93    /// @}
 94
 95
 96  };
 97
 98
 99  RIVET_DECLARE_PLUGIN(CLEOIII_2006_I694869);
100
101}